xref: /OK3568_Linux_fs/kernel/Documentation/devicetree/bindings/mfd/gateworks-gsc.yaml (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2*4882a593Smuzhiyun%YAML 1.2
3*4882a593Smuzhiyun---
4*4882a593Smuzhiyun$id: http://devicetree.org/schemas/mfd/gateworks-gsc.yaml#
5*4882a593Smuzhiyun$schema: http://devicetree.org/meta-schemas/core.yaml#
6*4882a593Smuzhiyun
7*4882a593Smuzhiyuntitle: Gateworks System Controller
8*4882a593Smuzhiyun
9*4882a593Smuzhiyundescription: |
10*4882a593Smuzhiyun  The Gateworks System Controller (GSC) is a device present across various
11*4882a593Smuzhiyun  Gateworks product families that provides a set of system related features
12*4882a593Smuzhiyun  such as the following (refer to the board hardware user manuals to see what
13*4882a593Smuzhiyun  features are present)
14*4882a593Smuzhiyun   - Watchdog Timer
15*4882a593Smuzhiyun   - GPIO
16*4882a593Smuzhiyun   - Pushbutton controller
17*4882a593Smuzhiyun   - Hardware monitor with ADC's for temperature and voltage rails and
18*4882a593Smuzhiyun     fan controller
19*4882a593Smuzhiyun
20*4882a593Smuzhiyunmaintainers:
21*4882a593Smuzhiyun  - Tim Harvey <tharvey@gateworks.com>
22*4882a593Smuzhiyun  - Robert Jones <rjones@gateworks.com>
23*4882a593Smuzhiyun
24*4882a593Smuzhiyunproperties:
25*4882a593Smuzhiyun  $nodename:
26*4882a593Smuzhiyun    pattern: "gsc@[0-9a-f]{1,2}"
27*4882a593Smuzhiyun  compatible:
28*4882a593Smuzhiyun    const: gw,gsc
29*4882a593Smuzhiyun
30*4882a593Smuzhiyun  reg:
31*4882a593Smuzhiyun    description: I2C device address
32*4882a593Smuzhiyun    maxItems: 1
33*4882a593Smuzhiyun
34*4882a593Smuzhiyun  interrupts:
35*4882a593Smuzhiyun    maxItems: 1
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun  interrupt-controller: true
38*4882a593Smuzhiyun
39*4882a593Smuzhiyun  "#interrupt-cells":
40*4882a593Smuzhiyun    const: 1
41*4882a593Smuzhiyun
42*4882a593Smuzhiyun  "#address-cells":
43*4882a593Smuzhiyun    const: 1
44*4882a593Smuzhiyun
45*4882a593Smuzhiyun  "#size-cells":
46*4882a593Smuzhiyun    const: 0
47*4882a593Smuzhiyun
48*4882a593Smuzhiyun  adc:
49*4882a593Smuzhiyun    type: object
50*4882a593Smuzhiyun    description: Optional hardware monitoring module
51*4882a593Smuzhiyun
52*4882a593Smuzhiyun    properties:
53*4882a593Smuzhiyun      compatible:
54*4882a593Smuzhiyun        const: gw,gsc-adc
55*4882a593Smuzhiyun
56*4882a593Smuzhiyun      "#address-cells":
57*4882a593Smuzhiyun        const: 1
58*4882a593Smuzhiyun
59*4882a593Smuzhiyun      "#size-cells":
60*4882a593Smuzhiyun        const: 0
61*4882a593Smuzhiyun
62*4882a593Smuzhiyun    patternProperties:
63*4882a593Smuzhiyun      "^channel@[0-9]+$":
64*4882a593Smuzhiyun        type: object
65*4882a593Smuzhiyun        description: |
66*4882a593Smuzhiyun          Properties for a single ADC which can report cooked values
67*4882a593Smuzhiyun          (i.e. temperature sensor based on thermister), raw values
68*4882a593Smuzhiyun          (i.e. voltage rail with a pre-scaling resistor divider).
69*4882a593Smuzhiyun
70*4882a593Smuzhiyun        properties:
71*4882a593Smuzhiyun          reg:
72*4882a593Smuzhiyun            description: Register of the ADC
73*4882a593Smuzhiyun            maxItems: 1
74*4882a593Smuzhiyun
75*4882a593Smuzhiyun          label:
76*4882a593Smuzhiyun            description: Name of the ADC input
77*4882a593Smuzhiyun
78*4882a593Smuzhiyun          gw,mode:
79*4882a593Smuzhiyun            description: |
80*4882a593Smuzhiyun              conversion mode:
81*4882a593Smuzhiyun                0 - temperature, in C*10
82*4882a593Smuzhiyun                1 - pre-scaled 24-bit voltage value
83*4882a593Smuzhiyun                2 - scaled voltage based on an optional resistor divider
84*4882a593Smuzhiyun                    and optional offset
85*4882a593Smuzhiyun                3 - pre-scaled 16-bit voltage value
86*4882a593Smuzhiyun            $ref: /schemas/types.yaml#/definitions/uint32
87*4882a593Smuzhiyun            enum: [0, 1, 2, 3]
88*4882a593Smuzhiyun
89*4882a593Smuzhiyun          gw,voltage-divider-ohms:
90*4882a593Smuzhiyun            description: Values of resistors for divider on raw ADC input
91*4882a593Smuzhiyun            maxItems: 2
92*4882a593Smuzhiyun            items:
93*4882a593Smuzhiyun              minimum: 1000
94*4882a593Smuzhiyun              maximum: 1000000
95*4882a593Smuzhiyun
96*4882a593Smuzhiyun          gw,voltage-offset-microvolt:
97*4882a593Smuzhiyun            description: |
98*4882a593Smuzhiyun              A positive voltage offset to apply to a raw ADC
99*4882a593Smuzhiyun              (i.e. to compensate for a diode drop).
100*4882a593Smuzhiyun            minimum: 0
101*4882a593Smuzhiyun            maximum: 1000000
102*4882a593Smuzhiyun
103*4882a593Smuzhiyun        required:
104*4882a593Smuzhiyun          - gw,mode
105*4882a593Smuzhiyun          - reg
106*4882a593Smuzhiyun          - label
107*4882a593Smuzhiyun
108*4882a593Smuzhiyun    required:
109*4882a593Smuzhiyun      - compatible
110*4882a593Smuzhiyun      - "#address-cells"
111*4882a593Smuzhiyun      - "#size-cells"
112*4882a593Smuzhiyun
113*4882a593SmuzhiyunpatternProperties:
114*4882a593Smuzhiyun  "^fan-controller@[0-9a-f]+$":
115*4882a593Smuzhiyun    type: object
116*4882a593Smuzhiyun    description: Optional fan controller
117*4882a593Smuzhiyun
118*4882a593Smuzhiyun    properties:
119*4882a593Smuzhiyun      compatible:
120*4882a593Smuzhiyun        const: gw,gsc-fan
121*4882a593Smuzhiyun
122*4882a593Smuzhiyun      "#address-cells":
123*4882a593Smuzhiyun        const: 1
124*4882a593Smuzhiyun
125*4882a593Smuzhiyun      "#size-cells":
126*4882a593Smuzhiyun        const: 0
127*4882a593Smuzhiyun
128*4882a593Smuzhiyun      reg:
129*4882a593Smuzhiyun        description: The fan controller base address
130*4882a593Smuzhiyun        maxItems: 1
131*4882a593Smuzhiyun
132*4882a593Smuzhiyun    required:
133*4882a593Smuzhiyun      - compatible
134*4882a593Smuzhiyun      - reg
135*4882a593Smuzhiyun      - "#address-cells"
136*4882a593Smuzhiyun      - "#size-cells"
137*4882a593Smuzhiyun
138*4882a593Smuzhiyunrequired:
139*4882a593Smuzhiyun  - compatible
140*4882a593Smuzhiyun  - reg
141*4882a593Smuzhiyun  - interrupts
142*4882a593Smuzhiyun  - interrupt-controller
143*4882a593Smuzhiyun  - "#interrupt-cells"
144*4882a593Smuzhiyun  - "#address-cells"
145*4882a593Smuzhiyun  - "#size-cells"
146*4882a593Smuzhiyun
147*4882a593SmuzhiyunadditionalProperties: false
148*4882a593Smuzhiyun
149*4882a593Smuzhiyunexamples:
150*4882a593Smuzhiyun  - |
151*4882a593Smuzhiyun    #include <dt-bindings/gpio/gpio.h>
152*4882a593Smuzhiyun    #include <dt-bindings/interrupt-controller/irq.h>
153*4882a593Smuzhiyun    i2c {
154*4882a593Smuzhiyun        #address-cells = <1>;
155*4882a593Smuzhiyun        #size-cells = <0>;
156*4882a593Smuzhiyun
157*4882a593Smuzhiyun        gsc@20 {
158*4882a593Smuzhiyun            compatible = "gw,gsc";
159*4882a593Smuzhiyun            reg = <0x20>;
160*4882a593Smuzhiyun            interrupt-parent = <&gpio1>;
161*4882a593Smuzhiyun            interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
162*4882a593Smuzhiyun            interrupt-controller;
163*4882a593Smuzhiyun            #interrupt-cells = <1>;
164*4882a593Smuzhiyun            #address-cells = <1>;
165*4882a593Smuzhiyun            #size-cells = <0>;
166*4882a593Smuzhiyun
167*4882a593Smuzhiyun            adc {
168*4882a593Smuzhiyun                compatible = "gw,gsc-adc";
169*4882a593Smuzhiyun                #address-cells = <1>;
170*4882a593Smuzhiyun                #size-cells = <0>;
171*4882a593Smuzhiyun
172*4882a593Smuzhiyun                channel@0 { /* A0: Board Temperature */
173*4882a593Smuzhiyun                    reg = <0x00>;
174*4882a593Smuzhiyun                    label = "temp";
175*4882a593Smuzhiyun                    gw,mode = <0>;
176*4882a593Smuzhiyun                };
177*4882a593Smuzhiyun
178*4882a593Smuzhiyun                channel@2 { /* A1: Input Voltage (raw ADC) */
179*4882a593Smuzhiyun                    reg = <0x02>;
180*4882a593Smuzhiyun                    label = "vdd_vin";
181*4882a593Smuzhiyun                    gw,mode = <1>;
182*4882a593Smuzhiyun                    gw,voltage-divider-ohms = <22100 1000>;
183*4882a593Smuzhiyun                    gw,voltage-offset-microvolt = <800000>;
184*4882a593Smuzhiyun                };
185*4882a593Smuzhiyun
186*4882a593Smuzhiyun                channel@b { /* A2: Battery voltage */
187*4882a593Smuzhiyun                    reg = <0x0b>;
188*4882a593Smuzhiyun                    label = "vdd_bat";
189*4882a593Smuzhiyun                    gw,mode = <1>;
190*4882a593Smuzhiyun                };
191*4882a593Smuzhiyun            };
192*4882a593Smuzhiyun
193*4882a593Smuzhiyun            fan-controller@2c {
194*4882a593Smuzhiyun                #address-cells = <1>;
195*4882a593Smuzhiyun                #size-cells = <0>;
196*4882a593Smuzhiyun                compatible = "gw,gsc-fan";
197*4882a593Smuzhiyun                reg = <0x2c>;
198*4882a593Smuzhiyun            };
199*4882a593Smuzhiyun        };
200*4882a593Smuzhiyun    };
201