162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
262306a36Sopenharmony_ci---
362306a36Sopenharmony_ci$id: http://devicetree.org/schemas/hwmon/ntc-thermistor.yaml#
462306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
562306a36Sopenharmony_ci
662306a36Sopenharmony_cititle: NTC thermistor temperature sensors
762306a36Sopenharmony_ci
862306a36Sopenharmony_cimaintainers:
962306a36Sopenharmony_ci  - Linus Walleij <linus.walleij@linaro.org>
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_cidescription: |
1262306a36Sopenharmony_ci  Thermistors with negative temperature coefficient (NTC) are resistors that
1362306a36Sopenharmony_ci  vary in resistance in an often non-linear way in relation to temperature.
1462306a36Sopenharmony_ci  The negative temperature coefficient means that the resistance decreases
1562306a36Sopenharmony_ci  as the temperature rises. Since the relationship between resistance and
1662306a36Sopenharmony_ci  temperature is non-linear, software drivers most often need to use a look
1762306a36Sopenharmony_ci  up table and interpolation to get from resistance to temperature.
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci  When used in practice, a thermistor is often connected between ground, a
2062306a36Sopenharmony_ci  pull-up resistor or/and a pull-down resistor and a fixed voltage like this:
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci      + e.g. 5V = pull-up voltage (puv)
2362306a36Sopenharmony_ci      |
2462306a36Sopenharmony_ci     +-+
2562306a36Sopenharmony_ci     | |
2662306a36Sopenharmony_ci     | | Pull-up resistor
2762306a36Sopenharmony_ci     | | (puo)
2862306a36Sopenharmony_ci     +-+
2962306a36Sopenharmony_ci      |-------------------------o
3062306a36Sopenharmony_ci     +-+ |                      ^
3162306a36Sopenharmony_ci     | |/                       |
3262306a36Sopenharmony_ci     | /                        |
3362306a36Sopenharmony_ci     |/| Thermistor             | Measured voltage (mv)
3462306a36Sopenharmony_ci     / |                        | "connected ground"
3562306a36Sopenharmony_ci    /| |                        |
3662306a36Sopenharmony_ci     +-+                        |
3762306a36Sopenharmony_ci      |-------------------------o
3862306a36Sopenharmony_ci     +-+                        ^
3962306a36Sopenharmony_ci     | |                        |
4062306a36Sopenharmony_ci     | | Pull-down resistor     | Measured voltage (mv)
4162306a36Sopenharmony_ci     | | (pdo)                  | "connected positive"
4262306a36Sopenharmony_ci     +-+                        |
4362306a36Sopenharmony_ci      |                         |
4462306a36Sopenharmony_ci      |                         v
4562306a36Sopenharmony_ci      + GND                     GND
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ci  The arrangements of where we measure the voltage over the thermistor are
4862306a36Sopenharmony_ci  called "connected ground" and "connected positive" and shall be understood as
4962306a36Sopenharmony_ci  the cases when either pull-up or pull-down resistance is zero.
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci  If the pull-up resistance is 0 one end of the thermistor is connected to the
5262306a36Sopenharmony_ci  positive voltage and we get the thermistor on top of a pull-down resistor
5362306a36Sopenharmony_ci  and we take the measure between the thermistor and the pull-down resistor.
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci  Conversely if the pull-down resistance is zero, one end of the thermistor is
5662306a36Sopenharmony_ci  connected to ground and we get the thermistor under the pull-up resistor
5762306a36Sopenharmony_ci  and we take the measure between the pull-up resistor and the thermistor.
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ci  We can use both pull-up and pull-down resistors at the same time, and then
6062306a36Sopenharmony_ci  the figure illustrates where the voltage will be measured for the "connected
6162306a36Sopenharmony_ci  ground" and "connected positive" cases.
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ciproperties:
6462306a36Sopenharmony_ci  $nodename:
6562306a36Sopenharmony_ci    pattern: "^thermistor(.*)?$"
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci  compatible:
6862306a36Sopenharmony_ci    oneOf:
6962306a36Sopenharmony_ci      - const: epcos,b57330v2103
7062306a36Sopenharmony_ci      - const: epcos,b57891s0103
7162306a36Sopenharmony_ci      - const: murata,ncp15wb473
7262306a36Sopenharmony_ci      - const: murata,ncp18wb473
7362306a36Sopenharmony_ci      - const: murata,ncp21wb473
7462306a36Sopenharmony_ci      - const: murata,ncp03wb473
7562306a36Sopenharmony_ci      - const: murata,ncp15wl333
7662306a36Sopenharmony_ci      - const: murata,ncp03wf104
7762306a36Sopenharmony_ci      - const: murata,ncp15xh103
7862306a36Sopenharmony_ci      - const: samsung,1404-001221
7962306a36Sopenharmony_ci      # Deprecated "ntp," compatible strings
8062306a36Sopenharmony_ci      - const: ntc,ncp15wb473
8162306a36Sopenharmony_ci        deprecated: true
8262306a36Sopenharmony_ci      - const: ntc,ncp18wb473
8362306a36Sopenharmony_ci        deprecated: true
8462306a36Sopenharmony_ci      - const: ntc,ncp21wb473
8562306a36Sopenharmony_ci        deprecated: true
8662306a36Sopenharmony_ci      - const: ntc,ncp03wb473
8762306a36Sopenharmony_ci        deprecated: true
8862306a36Sopenharmony_ci      - const: ntc,ncp15wl333
8962306a36Sopenharmony_ci        deprecated: true
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_ci  "#thermal-sensor-cells":
9262306a36Sopenharmony_ci    description: Thermal sensor cells if used for thermal sensoring.
9362306a36Sopenharmony_ci    const: 0
9462306a36Sopenharmony_ci
9562306a36Sopenharmony_ci  pullup-uv:
9662306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
9762306a36Sopenharmony_ci    description: Pull-up voltage in micro volts. Must always be specified.
9862306a36Sopenharmony_ci
9962306a36Sopenharmony_ci  pullup-ohm:
10062306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
10162306a36Sopenharmony_ci    description: Pull-up resistance in ohms. Must always be specified, even
10262306a36Sopenharmony_ci      if zero.
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_ci  pulldown-ohm:
10562306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
10662306a36Sopenharmony_ci    description: Pull-down resistance in ohms. Must always be specified, even
10762306a36Sopenharmony_ci      if zero.
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ci  connected-positive:
11062306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/flag
11162306a36Sopenharmony_ci    description: Indicates how the thermistor is connected in series with
11262306a36Sopenharmony_ci      a pull-up and/or a pull-down resistor. See the description above for
11362306a36Sopenharmony_ci      an illustration. If this flag is NOT specified, the thermistor is assumed
11462306a36Sopenharmony_ci      to be connected-ground, which usually means a pull-down resistance of
11562306a36Sopenharmony_ci      zero but complex arrangements are possible.
11662306a36Sopenharmony_ci
11762306a36Sopenharmony_ci  # See /schemas/iio/adc/adc.yaml
11862306a36Sopenharmony_ci  io-channels:
11962306a36Sopenharmony_ci    maxItems: 1
12062306a36Sopenharmony_ci    description: IIO ADC channel to read the voltage over the resistor. Must
12162306a36Sopenharmony_ci      always be specified.
12262306a36Sopenharmony_ci
12362306a36Sopenharmony_cirequired:
12462306a36Sopenharmony_ci  - compatible
12562306a36Sopenharmony_ci  - pullup-uv
12662306a36Sopenharmony_ci  - pullup-ohm
12762306a36Sopenharmony_ci  - pulldown-ohm
12862306a36Sopenharmony_ci  - io-channels
12962306a36Sopenharmony_ci
13062306a36Sopenharmony_ciadditionalProperties: false
13162306a36Sopenharmony_ci
13262306a36Sopenharmony_ciexamples:
13362306a36Sopenharmony_ci  - |
13462306a36Sopenharmony_ci    thermistor {
13562306a36Sopenharmony_ci      compatible = "murata,ncp18wb473";
13662306a36Sopenharmony_ci      io-channels = <&gpadc 0x06>;
13762306a36Sopenharmony_ci      pullup-uv = <1800000>;
13862306a36Sopenharmony_ci      pullup-ohm = <220000>;
13962306a36Sopenharmony_ci      pulldown-ohm = <0>;
14062306a36Sopenharmony_ci      #thermal-sensor-cells = <0>;
14162306a36Sopenharmony_ci    };
142