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 ./thermal.txt 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>;
			};

		};
	};
};
