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