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 codecs: 98 type: object 99 additionalProperties: false 100 101 properties: 102 '#address-cells': 103 const: 2 104 105 '#size-cells': 106 const: 1 107 108 patternProperties: 109 "^ec-codec@[a-f0-9]+$": 110 type: object 111 $ref: "/schemas/sound/google,cros-ec-codec.yaml#" 112 113 required: 114 - "#address-cells" 115 - "#size-cells" 116 117patternProperties: 118 "^i2c-tunnel[0-9]*$": 119 type: object 120 $ref: "/schemas/i2c/google,cros-ec-i2c-tunnel.yaml#" 121 122 "^regulator@[0-9]+$": 123 type: object 124 $ref: "/schemas/regulator/google,cros-ec-regulator.yaml#" 125 126 "^extcon[0-9]*$": 127 type: object 128 $ref: "/schemas/extcon/extcon-usbc-cros-ec.yaml#" 129 130required: 131 - compatible 132 133if: 134 properties: 135 compatible: 136 contains: 137 enum: 138 - google,cros-ec-i2c 139 - google,cros-ec-rpmsg 140then: 141 properties: 142 google,cros-ec-spi-pre-delay: false 143 google,cros-ec-spi-msg-delay: false 144 spi-max-frequency: false 145 146additionalProperties: false 147 148examples: 149 # Example for I2C 150 - | 151 #include <dt-bindings/gpio/gpio.h> 152 #include <dt-bindings/interrupt-controller/irq.h> 153 154 i2c0 { 155 #address-cells = <1>; 156 #size-cells = <0>; 157 158 cros-ec@1e { 159 compatible = "google,cros-ec-i2c"; 160 reg = <0x1e>; 161 interrupts = <6 0>; 162 interrupt-parent = <&gpio0>; 163 }; 164 }; 165 166 # Example for SPI 167 - | 168 #include <dt-bindings/gpio/gpio.h> 169 #include <dt-bindings/interrupt-controller/irq.h> 170 171 spi0 { 172 #address-cells = <1>; 173 #size-cells = <0>; 174 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 }; 185 186 # Example for RPMSG 187 - | 188 scp0 { 189 cros-ec { 190 compatible = "google,cros-ec-rpmsg"; 191 }; 192 }; 193... 194