thermal: core: Add Kconfig option to enable writable trips
authorPunit Agrawal <punit.agrawal@arm.com>
Tue, 3 Mar 2015 10:43:03 +0000 (10:43 +0000)
committerEduardo Valentin <edubezval@gmail.com>
Tue, 5 May 2015 04:27:53 +0000 (21:27 -0700)
Add a Kconfig option to allow system integrators to control whether
userspace tools can change trip temperatures. This option overrides
the thermal zone setup in the driver code and must be enabled for
platform specified writable trips to come into effect.

The original behaviour of requiring root privileges to change trip
temperatures remains unchanged.

Cc: Eduardo Valentin <edubezval@gmail.com>
Cc: Zhang Rui <rui.zhang@intel.com>
Signed-off-by: Punit Agrawal <punit.agrawal@arm.com>
Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
drivers/thermal/Kconfig
drivers/thermal/thermal_core.c

index a1b43eab0a701319344249ddecb0831fe7afcca9..46bdecf260e5f24e3df455002f810092a4c0c536 100644 (file)
@@ -42,6 +42,17 @@ config THERMAL_OF
          Say 'Y' here if you need to build thermal infrastructure
          based on device tree.
 
+config THERMAL_WRITABLE_TRIPS
+       bool "Enable writable trip points"
+       help
+         This option allows the system integrator to choose whether
+         trip temperatures can be changed from userspace. The
+         writable trips need to be specified when setting up the
+         thermal zone but the choice here takes precedence.
+
+         Say 'Y' here if you would like to allow userspace tools to
+         change trip temperatures.
+
 choice
        prompt "Default Thermal governor"
        default THERMAL_DEFAULT_GOV_STEP_WISE
index b389bc2ec0fa652b78f3d5e2361b22d7027c0054..78bb9aa9d4e402bd221b34797c84f172533bf879 100644 (file)
@@ -1539,7 +1539,8 @@ static int create_trip_attrs(struct thermal_zone_device *tz, int mask)
                                                tz->trip_temp_attrs[indx].name;
                tz->trip_temp_attrs[indx].attr.attr.mode = S_IRUGO;
                tz->trip_temp_attrs[indx].attr.show = trip_point_temp_show;
-               if (mask & (1 << indx)) {
+               if (IS_ENABLED(CONFIG_THERMAL_WRITABLE_TRIPS) &&
+                   mask & (1 << indx)) {
                        tz->trip_temp_attrs[indx].attr.attr.mode |= S_IWUSR;
                        tz->trip_temp_attrs[indx].attr.store =
                                                        trip_point_temp_store;