Merge branch 'kvm-amd-pmu-fixes' into HEAD
[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/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 pf 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   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 allOf:
152   - if:
153       properties:
154         compatible:
155           contains:
156             enum:
157               - google,cros-ec-i2c
158               - google,cros-ec-rpmsg
159     then:
160       properties:
161         google,cros-ec-spi-pre-delay: false
162         google,cros-ec-spi-msg-delay: false
163         spi-max-frequency: false
164     else:
165       $ref: /schemas/spi/spi-peripheral-props.yaml
166
167 additionalProperties: false
168
169 examples:
170   # Example for I2C
171   - |
172     #include <dt-bindings/gpio/gpio.h>
173     #include <dt-bindings/interrupt-controller/irq.h>
174
175     i2c0 {
176         #address-cells = <1>;
177         #size-cells = <0>;
178
179         cros-ec@1e {
180             compatible = "google,cros-ec-i2c";
181             reg = <0x1e>;
182             interrupts = <6 0>;
183             interrupt-parent = <&gpio0>;
184         };
185     };
186
187   # Example for SPI
188   - |
189     #include <dt-bindings/gpio/gpio.h>
190     #include <dt-bindings/interrupt-controller/irq.h>
191
192     spi0 {
193         #address-cells = <1>;
194         #size-cells = <0>;
195
196         cros-ec@0 {
197             compatible = "google,cros-ec-spi";
198             reg = <0x0>;
199             google,cros-ec-spi-msg-delay = <30>;
200             google,cros-ec-spi-pre-delay = <10>;
201             interrupts = <99 0>;
202             interrupt-parent = <&gpio7>;
203             spi-max-frequency = <5000000>;
204
205             proximity {
206                 compatible = "google,cros-ec-mkbp-proximity";
207             };
208
209             cbas {
210                 compatible = "google,cros-cbas";
211             };
212         };
213     };
214
215   # Example for RPMSG
216   - |
217     scp0 {
218         cros-ec {
219             compatible = "google,cros-ec-rpmsg";
220         };
221     };
222 ...