Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec
[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   proximity:
98     $ref: "/schemas/iio/proximity/google,cros-ec-mkbp-proximity.yaml#"
99
100   codecs:
101     type: object
102     additionalProperties: false
103
104     properties:
105       '#address-cells':
106         const: 2
107
108       '#size-cells':
109         const: 1
110
111     patternProperties:
112       "^ec-codec@[a-f0-9]+$":
113         type: object
114         $ref: "/schemas/sound/google,cros-ec-codec.yaml#"
115
116     required:
117       - "#address-cells"
118       - "#size-cells"
119
120 patternProperties:
121   "^i2c-tunnel[0-9]*$":
122     type: object
123     $ref: "/schemas/i2c/google,cros-ec-i2c-tunnel.yaml#"
124
125   "^regulator@[0-9]+$":
126     type: object
127     $ref: "/schemas/regulator/google,cros-ec-regulator.yaml#"
128
129   "^extcon[0-9]*$":
130     type: object
131     $ref: "/schemas/extcon/extcon-usbc-cros-ec.yaml#"
132
133 required:
134   - compatible
135
136 if:
137   properties:
138     compatible:
139       contains:
140         enum:
141           - google,cros-ec-i2c
142           - google,cros-ec-rpmsg
143 then:
144   properties:
145     google,cros-ec-spi-pre-delay: false
146     google,cros-ec-spi-msg-delay: false
147     spi-max-frequency: false
148
149 additionalProperties: false
150
151 examples:
152   # Example for I2C
153   - |
154     #include <dt-bindings/gpio/gpio.h>
155     #include <dt-bindings/interrupt-controller/irq.h>
156
157     i2c0 {
158         #address-cells = <1>;
159         #size-cells = <0>;
160
161         cros-ec@1e {
162             compatible = "google,cros-ec-i2c";
163             reg = <0x1e>;
164             interrupts = <6 0>;
165             interrupt-parent = <&gpio0>;
166         };
167     };
168
169   # Example for SPI
170   - |
171     #include <dt-bindings/gpio/gpio.h>
172     #include <dt-bindings/interrupt-controller/irq.h>
173
174     spi0 {
175         #address-cells = <1>;
176         #size-cells = <0>;
177
178         cros-ec@0 {
179             compatible = "google,cros-ec-spi";
180             reg = <0x0>;
181             google,cros-ec-spi-msg-delay = <30>;
182             google,cros-ec-spi-pre-delay = <10>;
183             interrupts = <99 0>;
184             interrupt-parent = <&gpio7>;
185             spi-max-frequency = <5000000>;
186
187             proximity {
188                     compatible = "google,cros-ec-mkbp-proximity";
189             };
190         };
191     };
192
193   # Example for RPMSG
194   - |
195     scp0 {
196         cros-ec {
197             compatible = "google,cros-ec-rpmsg";
198         };
199     };
200 ...