| General Purpose Analog To Digital Converter (ADC) based thermal sensor. |
| |
| On some of platforms, thermal sensor like thermistors are connected to |
| one of ADC channel and sensor resistance is read via voltage across the |
| sensor resistor. The voltage read across the sensor is mapped to |
| temperature using voltage-temperature lookup table. |
| |
| Required properties: |
| =================== |
| - compatible: Must be "generic-adc-thermal". |
| - #thermal-sensor-cells: Should be 1. See Documentation/devicetree/bindings/thermal/thermal-sensor.yaml for a description |
| of this property. |
| Optional properties: |
| =================== |
| - temperature-lookup-table: Two dimensional array of Integer; lookup table |
| to map the relation between ADC value and |
| temperature. When ADC is read, the value is |
| looked up on the table to get the equivalent |
| temperature. |
| |
| The first value of the each row of array is the |
| temperature in milliCelsius and second value of |
| the each row of array is the ADC read value. |
| |
| If not specified, driver assumes the ADC channel |
| gives milliCelsius directly. |
| |
| Example : |
| #include <dt-bindings/thermal/thermal.h> |
| |
| i2c@7000c400 { |
| ads1015: ads1015@4a { |
| reg = <0x4a>; |
| compatible = "ads1015"; |
| sampling-frequency = <3300>; |
| #io-channel-cells = <1>; |
| }; |
| }; |
| |
| tboard_thermistor: thermal-sensor { |
| compatible = "generic-adc-thermal"; |
| #thermal-sensor-cells = <0>; |
| io-channels = <&ads1015 1>; |
| io-channel-names = "sensor-channel"; |
| temperature-lookup-table = < (-40000) 2578 |
| (-39000) 2577 |
| (-38000) 2576 |
| (-37000) 2575 |
| (-36000) 2574 |
| (-35000) 2573 |
| (-34000) 2572 |
| (-33000) 2571 |
| (-32000) 2569 |
| (-31000) 2568 |
| (-30000) 2567 |
| :::::::::: |
| 118000 254 |
| 119000 247 |
| 120000 240 |
| 121000 233 |
| 122000 226 |
| 123000 220 |
| 124000 214 |
| 125000 208>; |
| }; |
| |
| dummy_cool_dev: dummy-cool-dev { |
| compatible = "dummy-cooling-dev"; |
| #cooling-cells = <2>; /* min followed by max */ |
| }; |
| |
| thermal-zones { |
| Tboard { |
| polling-delay = <15000>; /* milliseconds */ |
| polling-delay-passive = <0>; /* milliseconds */ |
| thermal-sensors = <&tboard_thermistor>; |
| |
| trips { |
| therm_est_trip: therm_est_trip { |
| temperature = <40000>; |
| type = "active"; |
| hysteresis = <1000>; |
| }; |
| }; |
| |
| cooling-maps { |
| map0 { |
| trip = <&therm_est_trip>; |
| cooling-device = <&dummy_cool_dev THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; |
| contribution = <100>; |
| }; |
| |
| }; |
| }; |
| }; |