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 - Guenter Roeck <groeck@chromium.org> 12 13description: 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 19properties: 20 compatible: 21 oneOf: 22 - description: 23 For implementations of the EC connected through I2C. 24 const: google,cros-ec-i2c 25 - description: 26 For implementations of the EC connected through SPI. 27 const: google,cros-ec-spi 28 - description: 29 For implementations of the FPMCU connected through SPI. 30 items: 31 - const: google,cros-ec-fp 32 - const: google,cros-ec-spi 33 - description: 34 For implementations of the EC connected through RPMSG. 35 const: google,cros-ec-rpmsg 36 37 controller-data: true 38 39 google,cros-ec-spi-pre-delay: 40 description: 41 This property specifies the delay in usecs between the 42 assertion of the CS and the first clock pulse. 43 $ref: /schemas/types.yaml#/definitions/uint32 44 default: 0 45 46 google,cros-ec-spi-msg-delay: 47 description: 48 This property specifies the delay in usecs between messages. 49 $ref: /schemas/types.yaml#/definitions/uint32 50 default: 0 51 52 google,has-vbc-nvram: 53 description: 54 Some implementations of the EC include a small nvram space used to 55 store verified boot context data. This boolean flag is used to specify 56 whether this nvram is present or not. 57 type: boolean 58 59 mediatek,rpmsg-name: 60 description: 61 Must be defined if the cros-ec is a rpmsg device for a Mediatek 62 ARM Cortex M4 Co-processor. Contains the name of the rpmsg 63 device. Used to match the subnode to the rpmsg device announced by 64 the SCP. 65 $ref: "/schemas/types.yaml#/definitions/string" 66 67 spi-max-frequency: true 68 69 reg: 70 maxItems: 1 71 72 interrupts: 73 maxItems: 1 74 75 reset-gpios: 76 maxItems: 1 77 78 boot0-gpios: 79 maxItems: 1 80 description: Assert for bootloader mode. 81 82 vdd-supply: true 83 84 wakeup-source: 85 description: Button can wake-up the system. 86 87 '#address-cells': 88 const: 1 89 90 '#size-cells': 91 const: 0 92 93 typec: 94 $ref: "/schemas/chrome/google,cros-ec-typec.yaml#" 95 96 ec-pwm: 97 $ref: "/schemas/pwm/google,cros-ec-pwm.yaml#" 98 deprecated: true 99 100 pwm: 101 $ref: "/schemas/pwm/google,cros-ec-pwm.yaml#" 102 103 kbd-led-backlight: 104 $ref: "/schemas/chrome/google,cros-kbd-led-backlight.yaml#" 105 106 keyboard-controller: 107 $ref: "/schemas/input/google,cros-ec-keyb.yaml#" 108 109 proximity: 110 $ref: "/schemas/iio/proximity/google,cros-ec-mkbp-proximity.yaml#" 111 112 codecs: 113 type: object 114 additionalProperties: false 115 116 properties: 117 '#address-cells': 118 const: 2 119 120 '#size-cells': 121 const: 1 122 123 patternProperties: 124 "^ec-codec@[a-f0-9]+$": 125 type: object 126 $ref: "/schemas/sound/google,cros-ec-codec.yaml#" 127 128 required: 129 - "#address-cells" 130 - "#size-cells" 131 132 cbas: 133 type: object 134 135 description: 136 This device is used to signal when a detachable base is attached 137 to a Chrome OS tablet. This device cannot be detected at runtime. 138 139 properties: 140 compatible: 141 const: google,cros-cbas 142 143 required: 144 - compatible 145 146 additionalProperties: false 147 148patternProperties: 149 "^i2c-tunnel[0-9]*$": 150 type: object 151 $ref: "/schemas/i2c/google,cros-ec-i2c-tunnel.yaml#" 152 153 "^regulator@[0-9]+$": 154 type: object 155 $ref: "/schemas/regulator/google,cros-ec-regulator.yaml#" 156 157 "^extcon[0-9]*$": 158 type: object 159 $ref: "/schemas/extcon/extcon-usbc-cros-ec.yaml#" 160 161required: 162 - compatible 163 164allOf: 165 - if: 166 properties: 167 compatible: 168 not: 169 contains: 170 const: google,cros-ec-spi 171 then: 172 properties: 173 controller-data: false 174 google,cros-ec-spi-pre-delay: false 175 google,cros-ec-spi-msg-delay: false 176 spi-max-frequency: false 177 else: 178 $ref: /schemas/spi/spi-peripheral-props.yaml 179 180 - if: 181 properties: 182 compatible: 183 not: 184 contains: 185 const: google,cros-ec-rpmsg 186 then: 187 properties: 188 mediatek,rpmsg-name: false 189 190 required: 191 - reg 192 - interrupts 193 194 - if: 195 properties: 196 compatible: 197 contains: 198 const: google,cros-ec-fp 199 then: 200 properties: 201 '#address-cells': false 202 '#size-cells': false 203 typec: false 204 ec-pwm: false 205 kbd-led-backlight: false 206 keyboard-controller: false 207 proximity: false 208 codecs: false 209 cbas: false 210 211 patternProperties: 212 "^i2c-tunnel[0-9]*$": false 213 "^regulator@[0-9]+$": false 214 "^extcon[0-9]*$": false 215 216 # Using additionalProperties: false here and 217 # listing true properties doesn't work 218 219 required: 220 - reset-gpios 221 - boot0-gpios 222 - vdd-supply 223 else: 224 properties: 225 reset-gpios: false 226 boot0-gpios: false 227 vdd-supply: false 228 229additionalProperties: false 230 231examples: 232 # Example for I2C 233 - | 234 #include <dt-bindings/gpio/gpio.h> 235 #include <dt-bindings/interrupt-controller/irq.h> 236 237 i2c0 { 238 #address-cells = <1>; 239 #size-cells = <0>; 240 241 cros-ec@1e { 242 compatible = "google,cros-ec-i2c"; 243 reg = <0x1e>; 244 interrupts = <6 0>; 245 interrupt-parent = <&gpio0>; 246 }; 247 }; 248 249 # Example for SPI 250 - | 251 #include <dt-bindings/gpio/gpio.h> 252 #include <dt-bindings/interrupt-controller/irq.h> 253 254 spi0 { 255 #address-cells = <1>; 256 #size-cells = <0>; 257 258 cros-ec@0 { 259 compatible = "google,cros-ec-spi"; 260 reg = <0x0>; 261 google,cros-ec-spi-msg-delay = <30>; 262 google,cros-ec-spi-pre-delay = <10>; 263 interrupts = <99 0>; 264 interrupt-parent = <&gpio7>; 265 spi-max-frequency = <5000000>; 266 267 proximity { 268 compatible = "google,cros-ec-mkbp-proximity"; 269 }; 270 271 cbas { 272 compatible = "google,cros-cbas"; 273 }; 274 }; 275 }; 276 277 # Example for RPMSG 278 - | 279 scp0 { 280 cros-ec { 281 compatible = "google,cros-ec-rpmsg"; 282 }; 283 }; 284 285 # Example for FPMCU 286 - | 287 spi0 { 288 #address-cells = <0x1>; 289 #size-cells = <0x0>; 290 291 ec@0 { 292 compatible = "google,cros-ec-fp", "google,cros-ec-spi"; 293 reg = <0x0>; 294 interrupt-parent = <&gpio_controller>; 295 interrupts = <4 IRQ_TYPE_LEVEL_LOW>; 296 spi-max-frequency = <3000000>; 297 reset-gpios = <&gpio_controller 5 GPIO_ACTIVE_LOW>; 298 boot0-gpios = <&gpio_controller 10 GPIO_ACTIVE_HIGH>; 299 vdd-supply = <&pp3300_fp_mcu>; 300 }; 301 }; 302... 303