Commit 87f9fe8c authored by Rob Herring's avatar Rob Herring Committed by Daniel Lezcano
Browse files

dt-bindings: thermal: Convert generic-adc-thermal to DT schema



Convert the 'generic-adc-thermal' binding to DT schema format.

The binding said '#thermal-sensor-cells' should be 1, but all in tree
users are 0 and 1 doesn't make sense for a single channel.

Drop the example's related providers and consumers of the
'generic-adc-thermal' node as the convention is to not have those in
the examples.

Signed-off-by: default avatarRob Herring <robh@kernel.org>
Reviewed-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20221011175235.3191509-1-robh@kernel.org


Signed-off-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
parent d37edc73
Loading
Loading
Loading
Loading
+84 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/thermal/generic-adc-thermal.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: General Purpose Analog To Digital Converter (ADC) based thermal sensor

maintainers:
  - Laxman Dewangan <ldewangan@nvidia.com>

description:
  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.

properties:
  compatible:
    const: generic-adc-thermal

  '#thermal-sensor-cells':
    const: 0

  io-channels:
    maxItems: 1

  io-channel-names:
    const: sensor-channel

  temperature-lookup-table:
    description: |
      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.

      If not specified, driver assumes the ADC channel gives milliCelsius
      directly.
    $ref: /schemas/types.yaml#/definitions/int32-matrix
    items:
      items:
        - description: Temperature in milliCelsius
        - description: ADC read value

required:
  - compatible
  - '#thermal-sensor-cells'
  - io-channels
  - io-channel-names

additionalProperties: false

examples:
  - |
    #include <dt-bindings/thermal/thermal.h>

    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
              /* skip */
              118000 254
              119000 247
              120000 240
              121000 233
              122000 226
              123000 220
              124000 214
              125000 208>;
    };
...
+0 −95
Original line number Diff line number Diff line
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 Documentation/devicetree/bindings/thermal/thermal-sensor.yaml 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>;
			};

		};
	};
};