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 7title: ChromeOS Embedded Controller 8 9maintainers: 10 - Benson Leung <bleung@chromium.org> 11 - Enric Balletbo i Serra <enric.balletbo@collabora.com> 12 - Guenter Roeck <groeck@chromium.org> 13 14description: 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 20properties: 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 120patternProperties: 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 133required: 134 - compatible 135 136if: 137 properties: 138 compatible: 139 contains: 140 enum: 141 - google,cros-ec-i2c 142 - google,cros-ec-rpmsg 143then: 144 properties: 145 google,cros-ec-spi-pre-delay: false 146 google,cros-ec-spi-msg-delay: false 147 spi-max-frequency: false 148 149additionalProperties: false 150 151examples: 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... 201