162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 262306a36Sopenharmony_ci%YAML 1.2 362306a36Sopenharmony_ci--- 462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/mfd/google,cros-ec.yaml# 562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 662306a36Sopenharmony_ci 762306a36Sopenharmony_cititle: ChromeOS Embedded Controller 862306a36Sopenharmony_ci 962306a36Sopenharmony_cimaintainers: 1062306a36Sopenharmony_ci - Benson Leung <bleung@chromium.org> 1162306a36Sopenharmony_ci - Guenter Roeck <groeck@chromium.org> 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_cidescription: 1462306a36Sopenharmony_ci Google's ChromeOS EC is a microcontroller which talks to the AP and 1562306a36Sopenharmony_ci implements various functions such as keyboard and battery charging. 1662306a36Sopenharmony_ci The EC can be connected through various interfaces (I2C, SPI, and others) 1762306a36Sopenharmony_ci and the compatible string specifies which interface is being used. 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ciproperties: 2062306a36Sopenharmony_ci compatible: 2162306a36Sopenharmony_ci oneOf: 2262306a36Sopenharmony_ci - description: 2362306a36Sopenharmony_ci For implementations of the EC connected through I2C. 2462306a36Sopenharmony_ci const: google,cros-ec-i2c 2562306a36Sopenharmony_ci - description: 2662306a36Sopenharmony_ci For implementations of the EC connected through SPI. 2762306a36Sopenharmony_ci const: google,cros-ec-spi 2862306a36Sopenharmony_ci - description: 2962306a36Sopenharmony_ci For implementations of the FPMCU connected through SPI. 3062306a36Sopenharmony_ci items: 3162306a36Sopenharmony_ci - const: google,cros-ec-fp 3262306a36Sopenharmony_ci - const: google,cros-ec-spi 3362306a36Sopenharmony_ci - description: 3462306a36Sopenharmony_ci For implementations of the EC connected through RPMSG. 3562306a36Sopenharmony_ci const: google,cros-ec-rpmsg 3662306a36Sopenharmony_ci - description: 3762306a36Sopenharmony_ci For implementations of the EC connected through UART. 3862306a36Sopenharmony_ci const: google,cros-ec-uart 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci controller-data: true 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ci google,cros-ec-spi-pre-delay: 4362306a36Sopenharmony_ci description: 4462306a36Sopenharmony_ci This property specifies the delay in usecs between the 4562306a36Sopenharmony_ci assertion of the CS and the first clock pulse. 4662306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 4762306a36Sopenharmony_ci default: 0 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_ci google,cros-ec-spi-msg-delay: 5062306a36Sopenharmony_ci description: 5162306a36Sopenharmony_ci This property specifies the delay in usecs between messages. 5262306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 5362306a36Sopenharmony_ci default: 0 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_ci google,has-vbc-nvram: 5662306a36Sopenharmony_ci description: 5762306a36Sopenharmony_ci Some implementations of the EC include a small nvram space used to 5862306a36Sopenharmony_ci store verified boot context data. This boolean flag is used to specify 5962306a36Sopenharmony_ci whether this nvram is present or not. 6062306a36Sopenharmony_ci type: boolean 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ci mediatek,rpmsg-name: 6362306a36Sopenharmony_ci description: 6462306a36Sopenharmony_ci Must be defined if the cros-ec is a rpmsg device for a Mediatek 6562306a36Sopenharmony_ci ARM Cortex M4 Co-processor. Contains the name of the rpmsg 6662306a36Sopenharmony_ci device. Used to match the subnode to the rpmsg device announced by 6762306a36Sopenharmony_ci the SCP. 6862306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/string 6962306a36Sopenharmony_ci 7062306a36Sopenharmony_ci spi-max-frequency: true 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_ci reg: 7362306a36Sopenharmony_ci maxItems: 1 7462306a36Sopenharmony_ci 7562306a36Sopenharmony_ci interrupts: 7662306a36Sopenharmony_ci maxItems: 1 7762306a36Sopenharmony_ci 7862306a36Sopenharmony_ci reset-gpios: 7962306a36Sopenharmony_ci maxItems: 1 8062306a36Sopenharmony_ci 8162306a36Sopenharmony_ci boot0-gpios: 8262306a36Sopenharmony_ci maxItems: 1 8362306a36Sopenharmony_ci description: Assert for bootloader mode. 8462306a36Sopenharmony_ci 8562306a36Sopenharmony_ci vdd-supply: true 8662306a36Sopenharmony_ci 8762306a36Sopenharmony_ci wakeup-source: 8862306a36Sopenharmony_ci description: Button can wake-up the system. 8962306a36Sopenharmony_ci 9062306a36Sopenharmony_ci '#address-cells': 9162306a36Sopenharmony_ci const: 1 9262306a36Sopenharmony_ci 9362306a36Sopenharmony_ci '#size-cells': 9462306a36Sopenharmony_ci const: 0 9562306a36Sopenharmony_ci 9662306a36Sopenharmony_ci typec: 9762306a36Sopenharmony_ci $ref: /schemas/chrome/google,cros-ec-typec.yaml# 9862306a36Sopenharmony_ci 9962306a36Sopenharmony_ci ec-pwm: 10062306a36Sopenharmony_ci $ref: /schemas/pwm/google,cros-ec-pwm.yaml# 10162306a36Sopenharmony_ci deprecated: true 10262306a36Sopenharmony_ci 10362306a36Sopenharmony_ci pwm: 10462306a36Sopenharmony_ci $ref: /schemas/pwm/google,cros-ec-pwm.yaml# 10562306a36Sopenharmony_ci 10662306a36Sopenharmony_ci kbd-led-backlight: 10762306a36Sopenharmony_ci $ref: /schemas/chrome/google,cros-kbd-led-backlight.yaml# 10862306a36Sopenharmony_ci 10962306a36Sopenharmony_ci keyboard-controller: 11062306a36Sopenharmony_ci $ref: /schemas/input/google,cros-ec-keyb.yaml# 11162306a36Sopenharmony_ci 11262306a36Sopenharmony_ci proximity: 11362306a36Sopenharmony_ci $ref: /schemas/iio/proximity/google,cros-ec-mkbp-proximity.yaml# 11462306a36Sopenharmony_ci 11562306a36Sopenharmony_ci codecs: 11662306a36Sopenharmony_ci type: object 11762306a36Sopenharmony_ci additionalProperties: false 11862306a36Sopenharmony_ci 11962306a36Sopenharmony_ci properties: 12062306a36Sopenharmony_ci '#address-cells': 12162306a36Sopenharmony_ci const: 2 12262306a36Sopenharmony_ci 12362306a36Sopenharmony_ci '#size-cells': 12462306a36Sopenharmony_ci const: 1 12562306a36Sopenharmony_ci 12662306a36Sopenharmony_ci patternProperties: 12762306a36Sopenharmony_ci "^ec-codec@[a-f0-9]+$": 12862306a36Sopenharmony_ci type: object 12962306a36Sopenharmony_ci $ref: /schemas/sound/google,cros-ec-codec.yaml# 13062306a36Sopenharmony_ci 13162306a36Sopenharmony_ci required: 13262306a36Sopenharmony_ci - "#address-cells" 13362306a36Sopenharmony_ci - "#size-cells" 13462306a36Sopenharmony_ci 13562306a36Sopenharmony_ci cbas: 13662306a36Sopenharmony_ci type: object 13762306a36Sopenharmony_ci 13862306a36Sopenharmony_ci description: 13962306a36Sopenharmony_ci This device is used to signal when a detachable base is attached 14062306a36Sopenharmony_ci to a Chrome OS tablet. This device cannot be detected at runtime. 14162306a36Sopenharmony_ci 14262306a36Sopenharmony_ci properties: 14362306a36Sopenharmony_ci compatible: 14462306a36Sopenharmony_ci const: google,cros-cbas 14562306a36Sopenharmony_ci 14662306a36Sopenharmony_ci required: 14762306a36Sopenharmony_ci - compatible 14862306a36Sopenharmony_ci 14962306a36Sopenharmony_ci additionalProperties: false 15062306a36Sopenharmony_ci 15162306a36Sopenharmony_cipatternProperties: 15262306a36Sopenharmony_ci "^i2c-tunnel[0-9]*$": 15362306a36Sopenharmony_ci type: object 15462306a36Sopenharmony_ci $ref: /schemas/i2c/google,cros-ec-i2c-tunnel.yaml# 15562306a36Sopenharmony_ci 15662306a36Sopenharmony_ci "^regulator@[0-9]+$": 15762306a36Sopenharmony_ci type: object 15862306a36Sopenharmony_ci $ref: /schemas/regulator/google,cros-ec-regulator.yaml# 15962306a36Sopenharmony_ci 16062306a36Sopenharmony_ci "^extcon[0-9]*$": 16162306a36Sopenharmony_ci type: object 16262306a36Sopenharmony_ci $ref: /schemas/extcon/extcon-usbc-cros-ec.yaml# 16362306a36Sopenharmony_ci 16462306a36Sopenharmony_cirequired: 16562306a36Sopenharmony_ci - compatible 16662306a36Sopenharmony_ci 16762306a36Sopenharmony_ciallOf: 16862306a36Sopenharmony_ci - if: 16962306a36Sopenharmony_ci properties: 17062306a36Sopenharmony_ci compatible: 17162306a36Sopenharmony_ci not: 17262306a36Sopenharmony_ci contains: 17362306a36Sopenharmony_ci const: google,cros-ec-spi 17462306a36Sopenharmony_ci then: 17562306a36Sopenharmony_ci properties: 17662306a36Sopenharmony_ci controller-data: false 17762306a36Sopenharmony_ci google,cros-ec-spi-pre-delay: false 17862306a36Sopenharmony_ci google,cros-ec-spi-msg-delay: false 17962306a36Sopenharmony_ci spi-max-frequency: false 18062306a36Sopenharmony_ci else: 18162306a36Sopenharmony_ci $ref: /schemas/spi/spi-peripheral-props.yaml 18262306a36Sopenharmony_ci 18362306a36Sopenharmony_ci - if: 18462306a36Sopenharmony_ci properties: 18562306a36Sopenharmony_ci compatible: 18662306a36Sopenharmony_ci not: 18762306a36Sopenharmony_ci contains: 18862306a36Sopenharmony_ci const: google,cros-ec-rpmsg 18962306a36Sopenharmony_ci then: 19062306a36Sopenharmony_ci properties: 19162306a36Sopenharmony_ci mediatek,rpmsg-name: false 19262306a36Sopenharmony_ci 19362306a36Sopenharmony_ci - if: 19462306a36Sopenharmony_ci properties: 19562306a36Sopenharmony_ci compatible: 19662306a36Sopenharmony_ci not: 19762306a36Sopenharmony_ci contains: 19862306a36Sopenharmony_ci enum: 19962306a36Sopenharmony_ci - google,cros-ec-rpmsg 20062306a36Sopenharmony_ci - google,cros-ec-uart 20162306a36Sopenharmony_ci then: 20262306a36Sopenharmony_ci required: 20362306a36Sopenharmony_ci - reg 20462306a36Sopenharmony_ci - interrupts 20562306a36Sopenharmony_ci 20662306a36Sopenharmony_ci - if: 20762306a36Sopenharmony_ci properties: 20862306a36Sopenharmony_ci compatible: 20962306a36Sopenharmony_ci contains: 21062306a36Sopenharmony_ci const: google,cros-ec-fp 21162306a36Sopenharmony_ci then: 21262306a36Sopenharmony_ci properties: 21362306a36Sopenharmony_ci '#address-cells': false 21462306a36Sopenharmony_ci '#size-cells': false 21562306a36Sopenharmony_ci typec: false 21662306a36Sopenharmony_ci ec-pwm: false 21762306a36Sopenharmony_ci kbd-led-backlight: false 21862306a36Sopenharmony_ci keyboard-controller: false 21962306a36Sopenharmony_ci proximity: false 22062306a36Sopenharmony_ci codecs: false 22162306a36Sopenharmony_ci cbas: false 22262306a36Sopenharmony_ci 22362306a36Sopenharmony_ci patternProperties: 22462306a36Sopenharmony_ci "^i2c-tunnel[0-9]*$": false 22562306a36Sopenharmony_ci "^regulator@[0-9]+$": false 22662306a36Sopenharmony_ci "^extcon[0-9]*$": false 22762306a36Sopenharmony_ci 22862306a36Sopenharmony_ci # Using additionalProperties: false here and 22962306a36Sopenharmony_ci # listing true properties doesn't work 23062306a36Sopenharmony_ci 23162306a36Sopenharmony_ci required: 23262306a36Sopenharmony_ci - reset-gpios 23362306a36Sopenharmony_ci - boot0-gpios 23462306a36Sopenharmony_ci - vdd-supply 23562306a36Sopenharmony_ci else: 23662306a36Sopenharmony_ci properties: 23762306a36Sopenharmony_ci reset-gpios: false 23862306a36Sopenharmony_ci boot0-gpios: false 23962306a36Sopenharmony_ci vdd-supply: false 24062306a36Sopenharmony_ci 24162306a36Sopenharmony_ciadditionalProperties: false 24262306a36Sopenharmony_ci 24362306a36Sopenharmony_ciexamples: 24462306a36Sopenharmony_ci # Example for I2C 24562306a36Sopenharmony_ci - | 24662306a36Sopenharmony_ci #include <dt-bindings/gpio/gpio.h> 24762306a36Sopenharmony_ci #include <dt-bindings/interrupt-controller/irq.h> 24862306a36Sopenharmony_ci 24962306a36Sopenharmony_ci i2c { 25062306a36Sopenharmony_ci #address-cells = <1>; 25162306a36Sopenharmony_ci #size-cells = <0>; 25262306a36Sopenharmony_ci 25362306a36Sopenharmony_ci cros-ec@1e { 25462306a36Sopenharmony_ci compatible = "google,cros-ec-i2c"; 25562306a36Sopenharmony_ci reg = <0x1e>; 25662306a36Sopenharmony_ci interrupts = <6 0>; 25762306a36Sopenharmony_ci interrupt-parent = <&gpio0>; 25862306a36Sopenharmony_ci }; 25962306a36Sopenharmony_ci }; 26062306a36Sopenharmony_ci 26162306a36Sopenharmony_ci # Example for SPI 26262306a36Sopenharmony_ci - | 26362306a36Sopenharmony_ci #include <dt-bindings/gpio/gpio.h> 26462306a36Sopenharmony_ci #include <dt-bindings/interrupt-controller/irq.h> 26562306a36Sopenharmony_ci 26662306a36Sopenharmony_ci spi { 26762306a36Sopenharmony_ci #address-cells = <1>; 26862306a36Sopenharmony_ci #size-cells = <0>; 26962306a36Sopenharmony_ci 27062306a36Sopenharmony_ci cros-ec@0 { 27162306a36Sopenharmony_ci compatible = "google,cros-ec-spi"; 27262306a36Sopenharmony_ci reg = <0x0>; 27362306a36Sopenharmony_ci google,cros-ec-spi-msg-delay = <30>; 27462306a36Sopenharmony_ci google,cros-ec-spi-pre-delay = <10>; 27562306a36Sopenharmony_ci interrupts = <99 0>; 27662306a36Sopenharmony_ci interrupt-parent = <&gpio7>; 27762306a36Sopenharmony_ci spi-max-frequency = <5000000>; 27862306a36Sopenharmony_ci 27962306a36Sopenharmony_ci proximity { 28062306a36Sopenharmony_ci compatible = "google,cros-ec-mkbp-proximity"; 28162306a36Sopenharmony_ci }; 28262306a36Sopenharmony_ci 28362306a36Sopenharmony_ci cbas { 28462306a36Sopenharmony_ci compatible = "google,cros-cbas"; 28562306a36Sopenharmony_ci }; 28662306a36Sopenharmony_ci }; 28762306a36Sopenharmony_ci }; 28862306a36Sopenharmony_ci 28962306a36Sopenharmony_ci # Example for RPMSG 29062306a36Sopenharmony_ci - | 29162306a36Sopenharmony_ci scp0 { 29262306a36Sopenharmony_ci cros-ec { 29362306a36Sopenharmony_ci compatible = "google,cros-ec-rpmsg"; 29462306a36Sopenharmony_ci }; 29562306a36Sopenharmony_ci }; 29662306a36Sopenharmony_ci 29762306a36Sopenharmony_ci # Example for FPMCU 29862306a36Sopenharmony_ci - | 29962306a36Sopenharmony_ci spi { 30062306a36Sopenharmony_ci #address-cells = <0x1>; 30162306a36Sopenharmony_ci #size-cells = <0x0>; 30262306a36Sopenharmony_ci 30362306a36Sopenharmony_ci ec@0 { 30462306a36Sopenharmony_ci compatible = "google,cros-ec-fp", "google,cros-ec-spi"; 30562306a36Sopenharmony_ci reg = <0x0>; 30662306a36Sopenharmony_ci interrupt-parent = <&gpio_controller>; 30762306a36Sopenharmony_ci interrupts = <4 IRQ_TYPE_LEVEL_LOW>; 30862306a36Sopenharmony_ci spi-max-frequency = <3000000>; 30962306a36Sopenharmony_ci reset-gpios = <&gpio_controller 5 GPIO_ACTIVE_LOW>; 31062306a36Sopenharmony_ci boot0-gpios = <&gpio_controller 10 GPIO_ACTIVE_HIGH>; 31162306a36Sopenharmony_ci vdd-supply = <&pp3300_fp_mcu>; 31262306a36Sopenharmony_ci }; 31362306a36Sopenharmony_ci }; 31462306a36Sopenharmony_ci 31562306a36Sopenharmony_ci # Example for UART 31662306a36Sopenharmony_ci - | 31762306a36Sopenharmony_ci serial { 31862306a36Sopenharmony_ci cros-ec { 31962306a36Sopenharmony_ci compatible = "google,cros-ec-uart"; 32062306a36Sopenharmony_ci }; 32162306a36Sopenharmony_ci }; 32262306a36Sopenharmony_ci... 323