# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/mfd/google,cros-ec.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: ChromeOS Embedded Controller

maintainers:
  - Benson Leung <bleung@chromium.org>
  - Guenter Roeck <groeck@chromium.org>

description:
  Google's ChromeOS EC is a microcontroller which talks to the AP and
  implements various functions such as keyboard and battery charging.
  The EC can be connected through various interfaces (I2C, SPI, and others)
  and the compatible string specifies which interface is being used.

properties:
  compatible:
    oneOf:
      - description:
          For implementations of the EC connected through I2C.
        const: google,cros-ec-i2c
      - description:
          For implementations of the EC connected through SPI.
        const: google,cros-ec-spi
      - description:
          For implementations of the FPMCU connected through SPI.
        items:
          - const: google,cros-ec-fp
          - const: google,cros-ec-spi
      - description:
          For implementations of the EC connected through RPMSG.
        const: google,cros-ec-rpmsg
      - description:
          For implementations of the EC connected through UART.
        const: google,cros-ec-uart

  controller-data: true

  google,cros-ec-spi-pre-delay:
    description:
      This property specifies the delay in usecs between the
      assertion of the CS and the first clock pulse.
    $ref: /schemas/types.yaml#/definitions/uint32
    default: 0

  google,cros-ec-spi-msg-delay:
    description:
      This property specifies the delay in usecs between messages.
    $ref: /schemas/types.yaml#/definitions/uint32
    default: 0

  google,has-vbc-nvram:
    description:
      Some implementations of the EC include a small nvram space used to
      store verified boot context data. This boolean flag is used to specify
      whether this nvram is present or not.
    type: boolean

  mediatek,rpmsg-name:
    description:
      Must be defined if the cros-ec is a rpmsg device for a Mediatek
      ARM Cortex M4 Co-processor. Contains the name of the rpmsg
      device. Used to match the subnode to the rpmsg device announced by
      the SCP.
    $ref: "/schemas/types.yaml#/definitions/string"

  spi-max-frequency: true

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  reset-gpios:
    maxItems: 1

  boot0-gpios:
    maxItems: 1
    description: Assert for bootloader mode.

  vdd-supply: true

  wakeup-source:
    description: Button can wake-up the system.

  '#address-cells':
    const: 1

  '#size-cells':
    const: 0

  typec:
    $ref: "/schemas/chrome/google,cros-ec-typec.yaml#"

  ec-pwm:
    $ref: "/schemas/pwm/google,cros-ec-pwm.yaml#"
    deprecated: true

  pwm:
    $ref: "/schemas/pwm/google,cros-ec-pwm.yaml#"

  kbd-led-backlight:
    $ref: "/schemas/chrome/google,cros-kbd-led-backlight.yaml#"

  keyboard-controller:
    $ref: "/schemas/input/google,cros-ec-keyb.yaml#"

  proximity:
    $ref: "/schemas/iio/proximity/google,cros-ec-mkbp-proximity.yaml#"

  codecs:
    type: object
    additionalProperties: false

    properties:
      '#address-cells':
        const: 2

      '#size-cells':
        const: 1

    patternProperties:
      "^ec-codec@[a-f0-9]+$":
        type: object
        $ref: "/schemas/sound/google,cros-ec-codec.yaml#"

    required:
      - "#address-cells"
      - "#size-cells"

  cbas:
    type: object

    description:
      This device is used to signal when a detachable base is attached
      to a Chrome OS tablet. This device cannot be detected at runtime.

    properties:
      compatible:
        const: google,cros-cbas

    required:
      - compatible

    additionalProperties: false

patternProperties:
  "^i2c-tunnel[0-9]*$":
    type: object
    $ref: "/schemas/i2c/google,cros-ec-i2c-tunnel.yaml#"

  "^regulator@[0-9]+$":
    type: object
    $ref: "/schemas/regulator/google,cros-ec-regulator.yaml#"

  "^extcon[0-9]*$":
    type: object
    $ref: "/schemas/extcon/extcon-usbc-cros-ec.yaml#"

required:
  - compatible

allOf:
  - if:
      properties:
        compatible:
          not:
            contains:
              const: google,cros-ec-spi
    then:
      properties:
        controller-data: false
        google,cros-ec-spi-pre-delay: false
        google,cros-ec-spi-msg-delay: false
        spi-max-frequency: false
    else:
      $ref: /schemas/spi/spi-peripheral-props.yaml

  - if:
      properties:
        compatible:
          not:
            contains:
              const: google,cros-ec-rpmsg
    then:
      properties:
        mediatek,rpmsg-name: false

  - if:
      properties:
        compatible:
          not:
            contains:
              enum:
                - google,cros-ec-rpmsg
                - google,cros-ec-uart
    then:
      required:
        - reg
        - interrupts

  - if:
      properties:
        compatible:
          contains:
            const: google,cros-ec-fp
    then:
      properties:
        '#address-cells': false
        '#size-cells': false
        typec: false
        ec-pwm: false
        kbd-led-backlight: false
        keyboard-controller: false
        proximity: false
        codecs: false
        cbas: false

      patternProperties:
        "^i2c-tunnel[0-9]*$": false
        "^regulator@[0-9]+$": false
        "^extcon[0-9]*$": false

      # Using additionalProperties: false here and
      # listing true properties doesn't work

      required:
        - reset-gpios
        - boot0-gpios
        - vdd-supply
    else:
      properties:
        reset-gpios: false
        boot0-gpios: false
        vdd-supply: false

additionalProperties: false

examples:
  # Example for I2C
  - |
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/interrupt-controller/irq.h>

    i2c0 {
        #address-cells = <1>;
        #size-cells = <0>;

        cros-ec@1e {
            compatible = "google,cros-ec-i2c";
            reg = <0x1e>;
            interrupts = <6 0>;
            interrupt-parent = <&gpio0>;
        };
    };

  # Example for SPI
  - |
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/interrupt-controller/irq.h>

    spi0 {
        #address-cells = <1>;
        #size-cells = <0>;

        cros-ec@0 {
            compatible = "google,cros-ec-spi";
            reg = <0x0>;
            google,cros-ec-spi-msg-delay = <30>;
            google,cros-ec-spi-pre-delay = <10>;
            interrupts = <99 0>;
            interrupt-parent = <&gpio7>;
            spi-max-frequency = <5000000>;

            proximity {
                compatible = "google,cros-ec-mkbp-proximity";
            };

            cbas {
                compatible = "google,cros-cbas";
            };
        };
    };

  # Example for RPMSG
  - |
    scp0 {
        cros-ec {
            compatible = "google,cros-ec-rpmsg";
        };
    };

  # Example for FPMCU
  - |
    spi0 {
      #address-cells = <0x1>;
      #size-cells = <0x0>;

      ec@0 {
        compatible = "google,cros-ec-fp", "google,cros-ec-spi";
        reg = <0x0>;
        interrupt-parent = <&gpio_controller>;
        interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
        spi-max-frequency = <3000000>;
        reset-gpios = <&gpio_controller 5 GPIO_ACTIVE_LOW>;
        boot0-gpios = <&gpio_controller 10 GPIO_ACTIVE_HIGH>;
        vdd-supply = <&pp3300_fp_mcu>;
      };
    };

  # Example for UART
  - |
    serial {
        cros-ec {
            compatible = "google,cros-ec-uart";
        };
    };
...
