18c2ecf20Sopenharmony_ciGeneral Purpose Analog To Digital Converter (ADC) based thermal sensor.
28c2ecf20Sopenharmony_ci
38c2ecf20Sopenharmony_ciOn some of platforms, thermal sensor like thermistors are connected to
48c2ecf20Sopenharmony_cione of ADC channel and sensor resistance is read via voltage across the
58c2ecf20Sopenharmony_cisensor resistor. The voltage read across the sensor is mapped to
68c2ecf20Sopenharmony_citemperature using voltage-temperature lookup table.
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_ciRequired properties:
98c2ecf20Sopenharmony_ci===================
108c2ecf20Sopenharmony_ci- compatible:		     Must be "generic-adc-thermal".
118c2ecf20Sopenharmony_ci- #thermal-sensor-cells:     Should be 1. See Documentation/devicetree/bindings/thermal/thermal-sensor.yaml for a description
128c2ecf20Sopenharmony_ci		             of this property.
138c2ecf20Sopenharmony_ciOptional properties:
148c2ecf20Sopenharmony_ci===================
158c2ecf20Sopenharmony_ci- temperature-lookup-table:  Two dimensional array of Integer; lookup table
168c2ecf20Sopenharmony_ci			     to map the relation between ADC value and
178c2ecf20Sopenharmony_ci			     temperature. When ADC is read, the value is
188c2ecf20Sopenharmony_ci			     looked up on the table to get the equivalent
198c2ecf20Sopenharmony_ci			     temperature.
208c2ecf20Sopenharmony_ci
218c2ecf20Sopenharmony_ci			     The first value of the each row of array is the
228c2ecf20Sopenharmony_ci			     temperature in milliCelsius and second value of
238c2ecf20Sopenharmony_ci			     the each row of array is the ADC read value.
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_ci			     If not specified, driver assumes the ADC channel
268c2ecf20Sopenharmony_ci			     gives milliCelsius directly.
278c2ecf20Sopenharmony_ci
288c2ecf20Sopenharmony_ciExample :
298c2ecf20Sopenharmony_ci#include <dt-bindings/thermal/thermal.h>
308c2ecf20Sopenharmony_ci
318c2ecf20Sopenharmony_cii2c@7000c400 {
328c2ecf20Sopenharmony_ci	ads1015: ads1015@4a {
338c2ecf20Sopenharmony_ci		reg = <0x4a>;
348c2ecf20Sopenharmony_ci		compatible = "ads1015";
358c2ecf20Sopenharmony_ci		sampling-frequency = <3300>;
368c2ecf20Sopenharmony_ci		#io-channel-cells = <1>;
378c2ecf20Sopenharmony_ci	};
388c2ecf20Sopenharmony_ci};
398c2ecf20Sopenharmony_ci
408c2ecf20Sopenharmony_citboard_thermistor: thermal-sensor {
418c2ecf20Sopenharmony_ci	compatible = "generic-adc-thermal";
428c2ecf20Sopenharmony_ci	#thermal-sensor-cells = <0>;
438c2ecf20Sopenharmony_ci	io-channels = <&ads1015 1>;
448c2ecf20Sopenharmony_ci	io-channel-names = "sensor-channel";
458c2ecf20Sopenharmony_ci	temperature-lookup-table = <    (-40000) 2578
468c2ecf20Sopenharmony_ci					(-39000) 2577
478c2ecf20Sopenharmony_ci					(-38000) 2576
488c2ecf20Sopenharmony_ci					(-37000) 2575
498c2ecf20Sopenharmony_ci					(-36000) 2574
508c2ecf20Sopenharmony_ci					(-35000) 2573
518c2ecf20Sopenharmony_ci					(-34000) 2572
528c2ecf20Sopenharmony_ci					(-33000) 2571
538c2ecf20Sopenharmony_ci					(-32000) 2569
548c2ecf20Sopenharmony_ci					(-31000) 2568
558c2ecf20Sopenharmony_ci					(-30000) 2567
568c2ecf20Sopenharmony_ci					::::::::::
578c2ecf20Sopenharmony_ci					118000 254
588c2ecf20Sopenharmony_ci					119000 247
598c2ecf20Sopenharmony_ci					120000 240
608c2ecf20Sopenharmony_ci					121000 233
618c2ecf20Sopenharmony_ci					122000 226
628c2ecf20Sopenharmony_ci					123000 220
638c2ecf20Sopenharmony_ci					124000 214
648c2ecf20Sopenharmony_ci					125000 208>;
658c2ecf20Sopenharmony_ci};
668c2ecf20Sopenharmony_ci
678c2ecf20Sopenharmony_cidummy_cool_dev: dummy-cool-dev {
688c2ecf20Sopenharmony_ci	compatible = "dummy-cooling-dev";
698c2ecf20Sopenharmony_ci	#cooling-cells = <2>; /* min followed by max */
708c2ecf20Sopenharmony_ci};
718c2ecf20Sopenharmony_ci
728c2ecf20Sopenharmony_cithermal-zones {
738c2ecf20Sopenharmony_ci	Tboard {
748c2ecf20Sopenharmony_ci		polling-delay = <15000>; /* milliseconds */
758c2ecf20Sopenharmony_ci		polling-delay-passive = <0>; /* milliseconds */
768c2ecf20Sopenharmony_ci		thermal-sensors = <&tboard_thermistor>;
778c2ecf20Sopenharmony_ci
788c2ecf20Sopenharmony_ci		trips {
798c2ecf20Sopenharmony_ci			therm_est_trip: therm_est_trip {
808c2ecf20Sopenharmony_ci				temperature = <40000>;
818c2ecf20Sopenharmony_ci				type = "active";
828c2ecf20Sopenharmony_ci				hysteresis = <1000>;
838c2ecf20Sopenharmony_ci			};
848c2ecf20Sopenharmony_ci		};
858c2ecf20Sopenharmony_ci
868c2ecf20Sopenharmony_ci		cooling-maps {
878c2ecf20Sopenharmony_ci			map0 {
888c2ecf20Sopenharmony_ci				trip = <&therm_est_trip>;
898c2ecf20Sopenharmony_ci				cooling-device = <&dummy_cool_dev THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
908c2ecf20Sopenharmony_ci				contribution = <100>;
918c2ecf20Sopenharmony_ci			};
928c2ecf20Sopenharmony_ci
938c2ecf20Sopenharmony_ci		};
948c2ecf20Sopenharmony_ci	};
958c2ecf20Sopenharmony_ci};
96