Merge tag 'linux-kselftest-kunit-fixes-5.11-rc3' of git://git.kernel.org/pub/scm...
[linux/fpc-iii.git] / Documentation / devicetree / bindings / mfd / google,cros-ec.yaml
blob76bf16ee27ec746fdb2b49f4b73efeb3a3301008
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#
7 title: ChromeOS Embedded Controller
9 maintainers:
10   - Benson Leung <bleung@chromium.org>
11   - Enric Balletbo i Serra <enric.balletbo@collabora.com>
12   - Guenter Roeck <groeck@chromium.org>
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.
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
33   controller-data:
34     description:
35       SPI controller data, see bindings/spi/spi-samsung.txt
36     type: object
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
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
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
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"
70   spi-max-frequency:
71     description: Maximum SPI frequency of the device in Hz.
73   reg:
74     maxItems: 1
76   interrupts:
77     maxItems: 1
79   wakeup-source:
80     description: Button can wake-up the system.
82   '#address-cells':
83     const: 1
85   '#size-cells':
86     const: 0
88   typec:
89     $ref: "/schemas/chrome/google,cros-ec-typec.yaml#"
91   ec-pwm:
92     $ref: "/schemas/pwm/google,cros-ec-pwm.yaml#"
94   keyboard-controller:
95     $ref: "/schemas/input/google,cros-ec-keyb.yaml#"
97   codecs:
98     type: object
99     additionalProperties: false
101     properties:
102       '#address-cells':
103         const: 2
105       '#size-cells':
106         const: 1
108     patternProperties:
109       "^ec-codec@[a-f0-9]+$":
110         type: object
111         $ref: "/schemas/sound/google,cros-ec-codec.yaml#"
113     required:
114       - "#address-cells"
115       - "#size-cells"
117 patternProperties:
118   "^i2c-tunnel[0-9]*$":
119     type: object
120     $ref: "/schemas/i2c/google,cros-ec-i2c-tunnel.yaml#"
122   "^regulator@[0-9]+$":
123     type: object
124     $ref: "/schemas/regulator/google,cros-ec-regulator.yaml#"
126   "^extcon[0-9]*$":
127     type: object
128     $ref: "/schemas/extcon/extcon-usbc-cros-ec.yaml#"
130 required:
131   - compatible
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
146 additionalProperties: false
148 examples:
149   # Example for I2C
150   - |
151     #include <dt-bindings/gpio/gpio.h>
152     #include <dt-bindings/interrupt-controller/irq.h>
154     i2c0 {
155         #address-cells = <1>;
156         #size-cells = <0>;
158         cros-ec@1e {
159             compatible = "google,cros-ec-i2c";
160             reg = <0x1e>;
161             interrupts = <6 0>;
162             interrupt-parent = <&gpio0>;
163         };
164     };
166   # Example for SPI
167   - |
168     #include <dt-bindings/gpio/gpio.h>
169     #include <dt-bindings/interrupt-controller/irq.h>
171     spi0 {
172         #address-cells = <1>;
173         #size-cells = <0>;
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     };
186   # Example for RPMSG
187   - |
188     scp0 {
189         cros-ec {
190             compatible = "google,cros-ec-rpmsg";
191         };
192     };