Merge tag 'efi_updates_for_v5.11' of git://git.kernel.org/pub/scm/linux/kernel/git...
[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   - Enric Balletbo i Serra <enric.balletbo@collabora.com>
12   - Guenter Roeck <groeck@chromium.org>
13
14 description:
15   Google's ChromeOS EC is a microcontroller which talks to the AP and
16   implements various functions such as keyboard and battery charging.
17   The EC can be connected through various interfaces (I2C, SPI, and others)
18   and the compatible string specifies which interface is being used.
19
20 properties:
21   compatible:
22     oneOf:
23       - description:
24           For implementations of the EC is connected through I2C.
25         const: google,cros-ec-i2c
26       - description:
27           For implementations of the EC is connected through SPI.
28         const: google,cros-ec-spi
29       - description:
30           For implementations of the EC is connected through RPMSG.
31         const: google,cros-ec-rpmsg
32
33   controller-data:
34     description:
35       SPI controller data, see bindings/spi/spi-samsung.txt
36     type: object
37
38   google,cros-ec-spi-pre-delay:
39     description:
40       This property specifies the delay in usecs between the
41       assertion of the CS and the first clock pulse.
42     allOf:
43       - $ref: /schemas/types.yaml#/definitions/uint32
44       - default: 0
45       - minimum: 0
46
47   google,cros-ec-spi-msg-delay:
48     description:
49       This property specifies the delay in usecs between messages.
50     allOf:
51       - $ref: /schemas/types.yaml#/definitions/uint32
52       - default: 0
53       - minimum: 0
54
55   google,has-vbc-nvram:
56     description:
57       Some implementations of the EC include a small nvram space used to
58       store verified boot context data. This boolean flag is used to specify
59       whether this nvram is present or not.
60     type: boolean
61
62   mtk,rpmsg-name:
63     description:
64       Must be defined if the cros-ec is a rpmsg device for a Mediatek
65       ARM Cortex M4 Co-processor. Contains the name pf the rpmsg
66       device. Used to match the subnode to the rpmsg device announced by
67       the SCP.
68     $ref: "/schemas/types.yaml#/definitions/string"
69
70   spi-max-frequency:
71     description: Maximum SPI frequency of the device in Hz.
72
73   reg:
74     maxItems: 1
75
76   interrupts:
77     maxItems: 1
78
79   wakeup-source:
80     description: Button can wake-up the system.
81
82   '#address-cells':
83     const: 1
84
85   '#size-cells':
86     const: 0
87
88   typec:
89     $ref: "/schemas/chrome/google,cros-ec-typec.yaml#"
90
91   ec-pwm:
92     $ref: "/schemas/pwm/google,cros-ec-pwm.yaml#"
93
94   keyboard-controller:
95     $ref: "/schemas/input/google,cros-ec-keyb.yaml#"
96
97   codecs:
98     type: object
99     additionalProperties: false
100
101     properties:
102       '#address-cells':
103         const: 2
104
105       '#size-cells':
106         const: 1
107
108     patternProperties:
109       "^ec-codec@[a-f0-9]+$":
110         type: object
111         $ref: "/schemas/sound/google,cros-ec-codec.yaml#"
112
113     required:
114       - "#address-cells"
115       - "#size-cells"
116
117 patternProperties:
118   "^i2c-tunnel[0-9]*$":
119     type: object
120     $ref: "/schemas/i2c/google,cros-ec-i2c-tunnel.yaml#"
121
122   "^regulator@[0-9]+$":
123     type: object
124     $ref: "/schemas/regulator/google,cros-ec-regulator.yaml#"
125
126   "^extcon[0-9]*$":
127     type: object
128     $ref: "/schemas/extcon/extcon-usbc-cros-ec.yaml#"
129
130 required:
131   - compatible
132
133 if:
134   properties:
135     compatible:
136       contains:
137         enum:
138           - google,cros-ec-i2c
139           - google,cros-ec-rpmsg
140 then:
141   properties:
142     google,cros-ec-spi-pre-delay: false
143     google,cros-ec-spi-msg-delay: false
144     spi-max-frequency: false
145
146 additionalProperties: false
147
148 examples:
149   # Example for I2C
150   - |
151     #include <dt-bindings/gpio/gpio.h>
152     #include <dt-bindings/interrupt-controller/irq.h>
153
154     i2c0 {
155         #address-cells = <1>;
156         #size-cells = <0>;
157
158         cros-ec@1e {
159             compatible = "google,cros-ec-i2c";
160             reg = <0x1e>;
161             interrupts = <6 0>;
162             interrupt-parent = <&gpio0>;
163         };
164     };
165
166   # Example for SPI
167   - |
168     #include <dt-bindings/gpio/gpio.h>
169     #include <dt-bindings/interrupt-controller/irq.h>
170
171     spi0 {
172         #address-cells = <1>;
173         #size-cells = <0>;
174
175         cros-ec@0 {
176             compatible = "google,cros-ec-spi";
177             reg = <0x0>;
178             google,cros-ec-spi-msg-delay = <30>;
179             google,cros-ec-spi-pre-delay = <10>;
180             interrupts = <99 0>;
181             interrupt-parent = <&gpio7>;
182             spi-max-frequency = <5000000>;
183         };
184     };
185
186   # Example for RPMSG
187   - |
188     scp0 {
189         cros-ec {
190             compatible = "google,cros-ec-rpmsg";
191         };
192     };
193 ...