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