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 is connected through I2C. 24 const: google,cros-ec-i2c 25 - description: 26 For implementations of the EC is connected through SPI. 27 const: google,cros-ec-spi 28 - description: 29 For implementations of the EC is connected through RPMSG. 30 const: google,cros-ec-rpmsg 31 32 controller-data: 33 description: 34 SPI controller data, see bindings/spi/spi-samsung.txt 35 type: object 36 37 google,cros-ec-spi-pre-delay: 38 description: 39 This property specifies the delay in usecs between the 40 assertion of the CS and the first clock pulse. 41 allOf: 42 - $ref: /schemas/types.yaml#/definitions/uint32 43 - default: 0 44 - minimum: 0 45 46 google,cros-ec-spi-msg-delay: 47 description: 48 This property specifies the delay in usecs between messages. 49 allOf: 50 - $ref: /schemas/types.yaml#/definitions/uint32 51 - default: 0 52 - minimum: 0 53 54 google,has-vbc-nvram: 55 description: 56 Some implementations of the EC include a small nvram space used to 57 store verified boot context data. This boolean flag is used to specify 58 whether this nvram is present or not. 59 type: boolean 60 61 mediatek,rpmsg-name: 62 description: 63 Must be defined if the cros-ec is a rpmsg device for a Mediatek 64 ARM Cortex M4 Co-processor. Contains the name pf the rpmsg 65 device. Used to match the subnode to the rpmsg device announced by 66 the SCP. 67 $ref: "/schemas/types.yaml#/definitions/string" 68 69 spi-max-frequency: 70 description: Maximum SPI frequency of the device in Hz. 71 72 reg: 73 maxItems: 1 74 75 interrupts: 76 maxItems: 1 77 78 wakeup-source: 79 description: Button can wake-up the system. 80 81 '#address-cells': 82 const: 1 83 84 '#size-cells': 85 const: 0 86 87 typec: 88 $ref: "/schemas/chrome/google,cros-ec-typec.yaml#" 89 90 ec-pwm: 91 $ref: "/schemas/pwm/google,cros-ec-pwm.yaml#" 92 93 keyboard-controller: 94 $ref: "/schemas/input/google,cros-ec-keyb.yaml#" 95 96 proximity: 97 $ref: "/schemas/iio/proximity/google,cros-ec-mkbp-proximity.yaml#" 98 99 codecs: 100 type: object 101 additionalProperties: false 102 103 properties: 104 '#address-cells': 105 const: 2 106 107 '#size-cells': 108 const: 1 109 110 patternProperties: 111 "^ec-codec@[a-f0-9]+$": 112 type: object 113 $ref: "/schemas/sound/google,cros-ec-codec.yaml#" 114 115 required: 116 - "#address-cells" 117 - "#size-cells" 118 119 cbas: 120 type: object 121 122 description: 123 This device is used to signal when a detachable base is attached 124 to a Chrome OS tablet. This device cannot be detected at runtime. 125 126 properties: 127 compatible: 128 const: google,cros-cbas 129 130 required: 131 - compatible 132 133 additionalProperties: false 134 135patternProperties: 136 "^i2c-tunnel[0-9]*$": 137 type: object 138 $ref: "/schemas/i2c/google,cros-ec-i2c-tunnel.yaml#" 139 140 "^regulator@[0-9]+$": 141 type: object 142 $ref: "/schemas/regulator/google,cros-ec-regulator.yaml#" 143 144 "^extcon[0-9]*$": 145 type: object 146 $ref: "/schemas/extcon/extcon-usbc-cros-ec.yaml#" 147 148required: 149 - compatible 150 151if: 152 properties: 153 compatible: 154 contains: 155 enum: 156 - google,cros-ec-i2c 157 - google,cros-ec-rpmsg 158then: 159 properties: 160 google,cros-ec-spi-pre-delay: false 161 google,cros-ec-spi-msg-delay: false 162 spi-max-frequency: false 163 164additionalProperties: false 165 166examples: 167 # Example for I2C 168 - | 169 #include <dt-bindings/gpio/gpio.h> 170 #include <dt-bindings/interrupt-controller/irq.h> 171 172 i2c0 { 173 #address-cells = <1>; 174 #size-cells = <0>; 175 176 cros-ec@1e { 177 compatible = "google,cros-ec-i2c"; 178 reg = <0x1e>; 179 interrupts = <6 0>; 180 interrupt-parent = <&gpio0>; 181 }; 182 }; 183 184 # Example for SPI 185 - | 186 #include <dt-bindings/gpio/gpio.h> 187 #include <dt-bindings/interrupt-controller/irq.h> 188 189 spi0 { 190 #address-cells = <1>; 191 #size-cells = <0>; 192 193 cros-ec@0 { 194 compatible = "google,cros-ec-spi"; 195 reg = <0x0>; 196 google,cros-ec-spi-msg-delay = <30>; 197 google,cros-ec-spi-pre-delay = <10>; 198 interrupts = <99 0>; 199 interrupt-parent = <&gpio7>; 200 spi-max-frequency = <5000000>; 201 202 proximity { 203 compatible = "google,cros-ec-mkbp-proximity"; 204 }; 205 206 cbas { 207 compatible = "google,cros-cbas"; 208 }; 209 }; 210 }; 211 212 # Example for RPMSG 213 - | 214 scp0 { 215 cros-ec { 216 compatible = "google,cros-ec-rpmsg"; 217 }; 218 }; 219... 220