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