Thermal: Add a notification API
authorDurgadoss R <durgadoss.r@intel.com>
Tue, 18 Sep 2012 05:35:05 +0000 (11:05 +0530)
committerZhang Rui <rui.zhang@intel.com>
Mon, 5 Nov 2012 06:00:08 +0000 (14:00 +0800)
This patch adds a notification API which the sensor drivers'
can use to notify the framework. The framework then takes
care of the throttling according to the configured policy.

Signed-off-by: Durgadoss R <durgadoss.r@intel.com>
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
drivers/thermal/thermal_sys.c
include/linux/thermal.h

index 64f3e9735316b35f1660a6fd33bcf52a9fed9796..a69f24c4414af31b976d131e14ead3448628e084 100644 (file)
@@ -1368,6 +1368,24 @@ void thermal_cdev_update(struct thermal_cooling_device *cdev)
 }
 EXPORT_SYMBOL(thermal_cdev_update);
 
+/**
+ * notify_thermal_framework - Sensor drivers use this API to notify framework
+ * @tz:                thermal zone device
+ * @trip:      indicates which trip point has been crossed
+ *
+ * This function handles the trip events from sensor drivers. It starts
+ * throttling the cooling devices according to the policy configured.
+ * For CRITICAL and HOT trip points, this notifies the respective drivers,
+ * and does actual throttling for other trip points i.e ACTIVE and PASSIVE.
+ * The throttling policy is based on the configured platform data; if no
+ * platform data is provided, this uses the step_wise throttling policy.
+ */
+void notify_thermal_framework(struct thermal_zone_device *tz, int trip)
+{
+       handle_thermal_trip(tz, trip);
+}
+EXPORT_SYMBOL(notify_thermal_framework);
+
 /**
  * create_trip_attrs - create attributes for trip points
  * @tz:                the thermal zone device
index 2bd9158418187dde474be9a837e7a92608cdc316..807f2146fe35cd8e53276a2a03ee027618efb9db 100644 (file)
@@ -232,6 +232,7 @@ int get_tz_trend(struct thermal_zone_device *, int);
 struct thermal_instance *get_thermal_instance(struct thermal_zone_device *,
                struct thermal_cooling_device *, int);
 void thermal_cdev_update(struct thermal_cooling_device *);
+void notify_thermal_framework(struct thermal_zone_device *, int);
 
 int thermal_register_governor(struct thermal_governor *);
 void thermal_unregister_governor(struct thermal_governor *);