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