Kernel-4.18.0-80.el8_thermal-generic-adc

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”.
  • 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.
    
  • #thermal-sensor-cells: Should be 1. See ./thermal.txt for a description
               of this property.
    

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>;
        };

    };
};

};