1*1bfaa49aSOskar Senft# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2*1bfaa49aSOskar Senft%YAML 1.2
3*1bfaa49aSOskar Senft---
4*1bfaa49aSOskar Senft
5*1bfaa49aSOskar Senft$id: http://devicetree.org/schemas/hwmon/nuvoton,nct7802.yaml#
6*1bfaa49aSOskar Senft$schema: http://devicetree.org/meta-schemas/core.yaml#
7*1bfaa49aSOskar Senft
8*1bfaa49aSOskar Senfttitle: Nuvoton NCT7802Y Hardware Monitoring IC
9*1bfaa49aSOskar Senft
10*1bfaa49aSOskar Senftmaintainers:
11*1bfaa49aSOskar Senft  - Guenter Roeck <linux@roeck-us.net>
12*1bfaa49aSOskar Senft
13*1bfaa49aSOskar Senftdescription: |
14*1bfaa49aSOskar Senft  The NCT7802Y is a hardware monitor IC which supports one on-die and up to
15*1bfaa49aSOskar Senft  5 remote temperature sensors with SMBus interface.
16*1bfaa49aSOskar Senft
17*1bfaa49aSOskar Senft  Datasheets:
18*1bfaa49aSOskar Senft    https://www.nuvoton.com/export/resource-files/Nuvoton_NCT7802Y_Datasheet_V12.pdf
19*1bfaa49aSOskar Senft
20*1bfaa49aSOskar SenftadditionalProperties: false
21*1bfaa49aSOskar Senft
22*1bfaa49aSOskar Senftproperties:
23*1bfaa49aSOskar Senft  compatible:
24*1bfaa49aSOskar Senft    enum:
25*1bfaa49aSOskar Senft      - nuvoton,nct7802
26*1bfaa49aSOskar Senft
27*1bfaa49aSOskar Senft  reg:
28*1bfaa49aSOskar Senft    maxItems: 1
29*1bfaa49aSOskar Senft
30*1bfaa49aSOskar Senft  "#address-cells":
31*1bfaa49aSOskar Senft    const: 1
32*1bfaa49aSOskar Senft
33*1bfaa49aSOskar Senft  "#size-cells":
34*1bfaa49aSOskar Senft    const: 0
35*1bfaa49aSOskar Senft
36*1bfaa49aSOskar SenftpatternProperties:
37*1bfaa49aSOskar Senft  "^channel@[0-3]$":
38*1bfaa49aSOskar Senft    type: object
39*1bfaa49aSOskar Senft
40*1bfaa49aSOskar Senft    additionalProperties: false
41*1bfaa49aSOskar Senft
42*1bfaa49aSOskar Senft    properties:
43*1bfaa49aSOskar Senft      reg:
44*1bfaa49aSOskar Senft        items:
45*1bfaa49aSOskar Senft          - enum:
46*1bfaa49aSOskar Senft              - 0    # Local Temperature Sensor ("LTD")
47*1bfaa49aSOskar Senft              - 1    # Remote Temperature Sensor or Voltage Sensor 1 ("RTD1")
48*1bfaa49aSOskar Senft              - 2    # Remote Temperature Sensor or Voltage Sensor 2 ("RTD2")
49*1bfaa49aSOskar Senft              - 3    # Remote Temperature Sensor or Voltage Sensor 3 ("RTD3")
50*1bfaa49aSOskar Senft
51*1bfaa49aSOskar Senft      sensor-type:
52*1bfaa49aSOskar Senft        items:
53*1bfaa49aSOskar Senft          - enum:
54*1bfaa49aSOskar Senft              - temperature
55*1bfaa49aSOskar Senft              - voltage
56*1bfaa49aSOskar Senft
57*1bfaa49aSOskar Senft      temperature-mode:
58*1bfaa49aSOskar Senft        items:
59*1bfaa49aSOskar Senft          - enum:
60*1bfaa49aSOskar Senft              - thermistor
61*1bfaa49aSOskar Senft              - thermal-diode
62*1bfaa49aSOskar Senft
63*1bfaa49aSOskar Senft    required:
64*1bfaa49aSOskar Senft      - reg
65*1bfaa49aSOskar Senft
66*1bfaa49aSOskar Senft    allOf:
67*1bfaa49aSOskar Senft      # For channels RTD1, RTD2 and RTD3, require sensor-type to be set.
68*1bfaa49aSOskar Senft      # Otherwise (for all other channels), do not allow temperature-mode to be
69*1bfaa49aSOskar Senft      # set.
70*1bfaa49aSOskar Senft      - if:
71*1bfaa49aSOskar Senft          properties:
72*1bfaa49aSOskar Senft            reg:
73*1bfaa49aSOskar Senft              items:
74*1bfaa49aSOskar Senft                - enum:
75*1bfaa49aSOskar Senft                    - 1
76*1bfaa49aSOskar Senft                    - 2
77*1bfaa49aSOskar Senft                    - 3
78*1bfaa49aSOskar Senft        then:
79*1bfaa49aSOskar Senft          required:
80*1bfaa49aSOskar Senft            - sensor-type
81*1bfaa49aSOskar Senft        else:
82*1bfaa49aSOskar Senft          not:
83*1bfaa49aSOskar Senft            required:
84*1bfaa49aSOskar Senft              - sensor-type
85*1bfaa49aSOskar Senft
86*1bfaa49aSOskar Senft      # For channels RTD1 and RTD2 and if sensor-type is "temperature", require
87*1bfaa49aSOskar Senft      # temperature-mode to be set. Otherwise (for all other channels or
88*1bfaa49aSOskar Senft      # sensor-type settings), do not allow temperature-mode to be set
89*1bfaa49aSOskar Senft      - if:
90*1bfaa49aSOskar Senft          properties:
91*1bfaa49aSOskar Senft            reg:
92*1bfaa49aSOskar Senft              items:
93*1bfaa49aSOskar Senft                - enum:
94*1bfaa49aSOskar Senft                    - 1
95*1bfaa49aSOskar Senft                    - 2
96*1bfaa49aSOskar Senft            sensor-type:
97*1bfaa49aSOskar Senft              items:
98*1bfaa49aSOskar Senft                - enum:
99*1bfaa49aSOskar Senft                    - temperature
100*1bfaa49aSOskar Senft        then:
101*1bfaa49aSOskar Senft          required:
102*1bfaa49aSOskar Senft            - temperature-mode
103*1bfaa49aSOskar Senft        else:
104*1bfaa49aSOskar Senft          not:
105*1bfaa49aSOskar Senft            required:
106*1bfaa49aSOskar Senft              - temperature-mode
107*1bfaa49aSOskar Senft
108*1bfaa49aSOskar Senftrequired:
109*1bfaa49aSOskar Senft  - compatible
110*1bfaa49aSOskar Senft  - reg
111*1bfaa49aSOskar Senft
112*1bfaa49aSOskar Senftexamples:
113*1bfaa49aSOskar Senft  - |
114*1bfaa49aSOskar Senft    i2c {
115*1bfaa49aSOskar Senft        #address-cells = <1>;
116*1bfaa49aSOskar Senft        #size-cells = <0>;
117*1bfaa49aSOskar Senft
118*1bfaa49aSOskar Senft        nct7802@28 {
119*1bfaa49aSOskar Senft            compatible = "nuvoton,nct7802";
120*1bfaa49aSOskar Senft            reg = <0x28>;
121*1bfaa49aSOskar Senft
122*1bfaa49aSOskar Senft            #address-cells = <1>;
123*1bfaa49aSOskar Senft            #size-cells = <0>;
124*1bfaa49aSOskar Senft
125*1bfaa49aSOskar Senft            channel@0 { /* LTD */
126*1bfaa49aSOskar Senft                reg = <0>;
127*1bfaa49aSOskar Senft            };
128*1bfaa49aSOskar Senft
129*1bfaa49aSOskar Senft            channel@1 { /* RTD1 */
130*1bfaa49aSOskar Senft                reg = <1>;
131*1bfaa49aSOskar Senft                sensor-type = "voltage";
132*1bfaa49aSOskar Senft            };
133*1bfaa49aSOskar Senft
134*1bfaa49aSOskar Senft            channel@2 { /* RTD2 */
135*1bfaa49aSOskar Senft                reg = <2>;
136*1bfaa49aSOskar Senft                sensor-type = "temperature";
137*1bfaa49aSOskar Senft                temperature-mode = "thermal-diode";
138*1bfaa49aSOskar Senft            };
139*1bfaa49aSOskar Senft
140*1bfaa49aSOskar Senft            channel@3 { /* RTD3 */
141*1bfaa49aSOskar Senft                reg = <3>;
142*1bfaa49aSOskar Senft                sensor-type = "temperature";
143*1bfaa49aSOskar Senft            };
144*1bfaa49aSOskar Senft        };
145*1bfaa49aSOskar Senft    };
146