GNU Linux-libre 6.1.90-gnu
[releases.git] / Documentation / devicetree / bindings / mfd / google,cros-ec.yaml
1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/mfd/google,cros-ec.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: ChromeOS Embedded Controller
8
9 maintainers:
10   - Benson Leung <bleung@chromium.org>
11   - Guenter Roeck <groeck@chromium.org>
12
13 description:
14   Google's ChromeOS EC is a microcontroller which talks to the AP and
15   implements various functions such as keyboard and battery charging.
16   The EC can be connected through various interfaces (I2C, SPI, and others)
17   and the compatible string specifies which interface is being used.
18
19 properties:
20   compatible:
21     oneOf:
22       - description:
23           For implementations of the EC is connected through I2C.
24         const: google,cros-ec-i2c
25       - description:
26           For implementations of the EC is connected through SPI.
27         const: google,cros-ec-spi
28       - description:
29           For implementations of the EC is connected through RPMSG.
30         const: google,cros-ec-rpmsg
31
32   controller-data:
33     description:
34       SPI controller data, see bindings/spi/samsung,spi-peripheral-props.yaml
35     type: object
36
37   google,cros-ec-spi-pre-delay:
38     description:
39       This property specifies the delay in usecs between the
40       assertion of the CS and the first clock pulse.
41     $ref: /schemas/types.yaml#/definitions/uint32
42     default: 0
43
44   google,cros-ec-spi-msg-delay:
45     description:
46       This property specifies the delay in usecs between messages.
47     $ref: /schemas/types.yaml#/definitions/uint32
48     default: 0
49
50   google,has-vbc-nvram:
51     description:
52       Some implementations of the EC include a small nvram space used to
53       store verified boot context data. This boolean flag is used to specify
54       whether this nvram is present or not.
55     type: boolean
56
57   mediatek,rpmsg-name:
58     description:
59       Must be defined if the cros-ec is a rpmsg device for a Mediatek
60       ARM Cortex M4 Co-processor. Contains the name of the rpmsg
61       device. Used to match the subnode to the rpmsg device announced by
62       the SCP.
63     $ref: "/schemas/types.yaml#/definitions/string"
64
65   spi-max-frequency:
66     description: Maximum SPI frequency of the device in Hz.
67
68   reg:
69     maxItems: 1
70
71   interrupts:
72     maxItems: 1
73
74   wakeup-source:
75     description: Button can wake-up the system.
76
77   '#address-cells':
78     const: 1
79
80   '#size-cells':
81     const: 0
82
83   typec:
84     $ref: "/schemas/chrome/google,cros-ec-typec.yaml#"
85
86   ec-pwm:
87     $ref: "/schemas/pwm/google,cros-ec-pwm.yaml#"
88     deprecated: true
89
90   pwm:
91     $ref: "/schemas/pwm/google,cros-ec-pwm.yaml#"
92
93   kbd-led-backlight:
94     $ref: "/schemas/chrome/google,cros-kbd-led-backlight.yaml#"
95
96   keyboard-controller:
97     $ref: "/schemas/input/google,cros-ec-keyb.yaml#"
98
99   proximity:
100     $ref: "/schemas/iio/proximity/google,cros-ec-mkbp-proximity.yaml#"
101
102   codecs:
103     type: object
104     additionalProperties: false
105
106     properties:
107       '#address-cells':
108         const: 2
109
110       '#size-cells':
111         const: 1
112
113     patternProperties:
114       "^ec-codec@[a-f0-9]+$":
115         type: object
116         $ref: "/schemas/sound/google,cros-ec-codec.yaml#"
117
118     required:
119       - "#address-cells"
120       - "#size-cells"
121
122   cbas:
123     type: object
124
125     description:
126       This device is used to signal when a detachable base is attached
127       to a Chrome OS tablet. This device cannot be detected at runtime.
128
129     properties:
130       compatible:
131         const: google,cros-cbas
132
133     required:
134       - compatible
135
136     additionalProperties: false
137
138 patternProperties:
139   "^i2c-tunnel[0-9]*$":
140     type: object
141     $ref: "/schemas/i2c/google,cros-ec-i2c-tunnel.yaml#"
142
143   "^regulator@[0-9]+$":
144     type: object
145     $ref: "/schemas/regulator/google,cros-ec-regulator.yaml#"
146
147   "^extcon[0-9]*$":
148     type: object
149     $ref: "/schemas/extcon/extcon-usbc-cros-ec.yaml#"
150
151 required:
152   - compatible
153
154 allOf:
155   - if:
156       properties:
157         compatible:
158           contains:
159             enum:
160               - google,cros-ec-i2c
161               - google,cros-ec-rpmsg
162     then:
163       properties:
164         google,cros-ec-spi-pre-delay: false
165         google,cros-ec-spi-msg-delay: false
166         spi-max-frequency: false
167     else:
168       $ref: /schemas/spi/spi-peripheral-props.yaml
169
170 additionalProperties: false
171
172 examples:
173   # Example for I2C
174   - |
175     #include <dt-bindings/gpio/gpio.h>
176     #include <dt-bindings/interrupt-controller/irq.h>
177
178     i2c0 {
179         #address-cells = <1>;
180         #size-cells = <0>;
181
182         cros-ec@1e {
183             compatible = "google,cros-ec-i2c";
184             reg = <0x1e>;
185             interrupts = <6 0>;
186             interrupt-parent = <&gpio0>;
187         };
188     };
189
190   # Example for SPI
191   - |
192     #include <dt-bindings/gpio/gpio.h>
193     #include <dt-bindings/interrupt-controller/irq.h>
194
195     spi0 {
196         #address-cells = <1>;
197         #size-cells = <0>;
198
199         cros-ec@0 {
200             compatible = "google,cros-ec-spi";
201             reg = <0x0>;
202             google,cros-ec-spi-msg-delay = <30>;
203             google,cros-ec-spi-pre-delay = <10>;
204             interrupts = <99 0>;
205             interrupt-parent = <&gpio7>;
206             spi-max-frequency = <5000000>;
207
208             proximity {
209                 compatible = "google,cros-ec-mkbp-proximity";
210             };
211
212             cbas {
213                 compatible = "google,cros-cbas";
214             };
215         };
216     };
217
218   # Example for RPMSG
219   - |
220     scp0 {
221         cros-ec {
222             compatible = "google,cros-ec-rpmsg";
223         };
224     };
225 ...