Staging
v0.5.1
https://github.com/torvalds/linux
Raw File
Tip revision: 9c763584b7c8911106bb77af7e648bef09af9d80 authored by Linus Torvalds on 20 November 2016, 21:52:19 UTC
Linux 4.9-rc6
Tip revision: 9c76358
thermal-generic-adc.txt
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>;
			};

		};
	};
};
back to top