Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux
[cascardo/linux.git] / Documentation / thermal / sysfs-api.txt
index 8c745c8..ed419d6 100644 (file)
@@ -72,6 +72,74 @@ temperature) and throttle appropriate devices.
     It deletes the corresponding entry form /sys/class/thermal folder and
     unbind all the thermal cooling devices it uses.
 
+1.1.3 struct thermal_zone_device *thermal_zone_of_sensor_register(
+               struct device *dev, int sensor_id, void *data,
+               const struct thermal_zone_of_device_ops *ops)
+
+       This interface adds a new sensor to a DT thermal zone.
+       This function will search the list of thermal zones described in
+       device tree and look for the zone that refer to the sensor device
+       pointed by dev->of_node as temperature providers. For the zone
+       pointing to the sensor node, the sensor will be added to the DT
+       thermal zone device.
+
+       The parameters for this interface are:
+       dev:            Device node of sensor containing valid node pointer in
+                       dev->of_node.
+       sensor_id:      a sensor identifier, in case the sensor IP has more
+                       than one sensors
+       data:           a private pointer (owned by the caller) that will be
+                       passed back, when a temperature reading is needed.
+       ops:            struct thermal_zone_of_device_ops *.
+
+                       get_temp:       a pointer to a function that reads the
+                                       sensor temperature. This is mandatory
+                                       callback provided by sensor driver.
+                       get_trend:      a pointer to a function that reads the
+                                       sensor temperature trend.
+                       set_emul_temp:  a pointer to a function that sets
+                                       sensor emulated temperature.
+       The thermal zone temperature is provided by the get_temp() function
+       pointer of thermal_zone_of_device_ops. When called, it will
+       have the private pointer @data back.
+
+       It returns error pointer if fails otherwise valid thermal zone device
+       handle. Caller should check the return handle with IS_ERR() for finding
+       whether success or not.
+
+1.1.4 void thermal_zone_of_sensor_unregister(struct device *dev,
+               struct thermal_zone_device *tzd)
+
+       This interface unregisters a sensor from a DT thermal zone which was
+       successfully added by interface thermal_zone_of_sensor_register().
+       This function removes the sensor callbacks and private data from the
+       thermal zone device registered with thermal_zone_of_sensor_register()
+       interface. It will also silent the zone by remove the .get_temp() and
+       get_trend() thermal zone device callbacks.
+
+1.1.5 struct thermal_zone_device *devm_thermal_zone_of_sensor_register(
+               struct device *dev, int sensor_id,
+               void *data, const struct thermal_zone_of_device_ops *ops)
+
+       This interface is resource managed version of
+       thermal_zone_of_sensor_register().
+       All details of thermal_zone_of_sensor_register() described in
+       section 1.1.3 is applicable here.
+       The benefit of using this interface to register sensor is that it
+       is not require to explicitly call thermal_zone_of_sensor_unregister()
+       in error path or during driver unbinding as this is done by driver
+       resource manager.
+
+1.1.6 void devm_thermal_zone_of_sensor_unregister(struct device *dev,
+               struct thermal_zone_device *tzd)
+
+       This interface is resource managed version of
+       thermal_zone_of_sensor_unregister().
+       All details of thermal_zone_of_sensor_unregister() described in
+       section 1.1.4 is applicable here.
+       Normally this function will not need to be called and the resource
+       management code will ensure that the resource is freed.
+
 1.2 thermal cooling device interface
 1.2.1 struct thermal_cooling_device *thermal_cooling_device_register(char *name,
                void *devdata, struct thermal_cooling_device_ops *)