Merge tag 'devicetree-fixes-for-5.17-1' of git://git.kernel.org/pub/scm/linux/kernel...
[linux-2.6-microblaze.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/spi-samsung.txt
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     allOf:
42       - $ref: /schemas/types.yaml#/definitions/uint32
43       - default: 0
44       - minimum: 0
45
46   google,cros-ec-spi-msg-delay:
47     description:
48       This property specifies the delay in usecs between messages.
49     allOf:
50       - $ref: /schemas/types.yaml#/definitions/uint32
51       - default: 0
52       - minimum: 0
53
54   google,has-vbc-nvram:
55     description:
56       Some implementations of the EC include a small nvram space used to
57       store verified boot context data. This boolean flag is used to specify
58       whether this nvram is present or not.
59     type: boolean
60
61   mediatek,rpmsg-name:
62     description:
63       Must be defined if the cros-ec is a rpmsg device for a Mediatek
64       ARM Cortex M4 Co-processor. Contains the name pf the rpmsg
65       device. Used to match the subnode to the rpmsg device announced by
66       the SCP.
67     $ref: "/schemas/types.yaml#/definitions/string"
68
69   spi-max-frequency:
70     description: Maximum SPI frequency of the device in Hz.
71
72   reg:
73     maxItems: 1
74
75   interrupts:
76     maxItems: 1
77
78   wakeup-source:
79     description: Button can wake-up the system.
80
81   '#address-cells':
82     const: 1
83
84   '#size-cells':
85     const: 0
86
87   typec:
88     $ref: "/schemas/chrome/google,cros-ec-typec.yaml#"
89
90   ec-pwm:
91     $ref: "/schemas/pwm/google,cros-ec-pwm.yaml#"
92
93   keyboard-controller:
94     $ref: "/schemas/input/google,cros-ec-keyb.yaml#"
95
96   proximity:
97     $ref: "/schemas/iio/proximity/google,cros-ec-mkbp-proximity.yaml#"
98
99   codecs:
100     type: object
101     additionalProperties: false
102
103     properties:
104       '#address-cells':
105         const: 2
106
107       '#size-cells':
108         const: 1
109
110     patternProperties:
111       "^ec-codec@[a-f0-9]+$":
112         type: object
113         $ref: "/schemas/sound/google,cros-ec-codec.yaml#"
114
115     required:
116       - "#address-cells"
117       - "#size-cells"
118
119   cbas:
120     type: object
121
122     description:
123       This device is used to signal when a detachable base is attached
124       to a Chrome OS tablet. This device cannot be detected at runtime.
125
126     properties:
127       compatible:
128         const: google,cros-cbas
129
130     required:
131       - compatible
132
133     additionalProperties: false
134
135 patternProperties:
136   "^i2c-tunnel[0-9]*$":
137     type: object
138     $ref: "/schemas/i2c/google,cros-ec-i2c-tunnel.yaml#"
139
140   "^regulator@[0-9]+$":
141     type: object
142     $ref: "/schemas/regulator/google,cros-ec-regulator.yaml#"
143
144   "^extcon[0-9]*$":
145     type: object
146     $ref: "/schemas/extcon/extcon-usbc-cros-ec.yaml#"
147
148 required:
149   - compatible
150
151 if:
152   properties:
153     compatible:
154       contains:
155         enum:
156           - google,cros-ec-i2c
157           - google,cros-ec-rpmsg
158 then:
159   properties:
160     google,cros-ec-spi-pre-delay: false
161     google,cros-ec-spi-msg-delay: false
162     spi-max-frequency: false
163
164 additionalProperties: false
165
166 examples:
167   # Example for I2C
168   - |
169     #include <dt-bindings/gpio/gpio.h>
170     #include <dt-bindings/interrupt-controller/irq.h>
171
172     i2c0 {
173         #address-cells = <1>;
174         #size-cells = <0>;
175
176         cros-ec@1e {
177             compatible = "google,cros-ec-i2c";
178             reg = <0x1e>;
179             interrupts = <6 0>;
180             interrupt-parent = <&gpio0>;
181         };
182     };
183
184   # Example for SPI
185   - |
186     #include <dt-bindings/gpio/gpio.h>
187     #include <dt-bindings/interrupt-controller/irq.h>
188
189     spi0 {
190         #address-cells = <1>;
191         #size-cells = <0>;
192
193         cros-ec@0 {
194             compatible = "google,cros-ec-spi";
195             reg = <0x0>;
196             google,cros-ec-spi-msg-delay = <30>;
197             google,cros-ec-spi-pre-delay = <10>;
198             interrupts = <99 0>;
199             interrupt-parent = <&gpio7>;
200             spi-max-frequency = <5000000>;
201
202             proximity {
203                     compatible = "google,cros-ec-mkbp-proximity";
204             };
205
206             cbas {
207                 compatible = "google,cros-cbas";
208             };
209         };
210     };
211
212   # Example for RPMSG
213   - |
214     scp0 {
215         cros-ec {
216             compatible = "google,cros-ec-rpmsg";
217         };
218     };
219 ...