146b57806SIkjoon Jang# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
246b57806SIkjoon Jang%YAML 1.2
346b57806SIkjoon Jang---
446b57806SIkjoon Jang$id: http://devicetree.org/schemas/mfd/google,cros-ec.yaml#
546b57806SIkjoon Jang$schema: http://devicetree.org/meta-schemas/core.yaml#
646b57806SIkjoon Jang
746b57806SIkjoon Jangtitle: ChromeOS Embedded Controller
846b57806SIkjoon Jang
946b57806SIkjoon Jangmaintainers:
1046b57806SIkjoon Jang  - Benson Leung <bleung@chromium.org>
1146b57806SIkjoon Jang  - Enric Balletbo i Serra <enric.balletbo@collabora.com>
1246b57806SIkjoon Jang  - Guenter Roeck <groeck@chromium.org>
1346b57806SIkjoon Jang
1446b57806SIkjoon Jangdescription:
1546b57806SIkjoon Jang  Google's ChromeOS EC is a microcontroller which talks to the AP and
1646b57806SIkjoon Jang  implements various functions such as keyboard and battery charging.
1746b57806SIkjoon Jang  The EC can be connected through various interfaces (I2C, SPI, and others)
1846b57806SIkjoon Jang  and the compatible string specifies which interface is being used.
1946b57806SIkjoon Jang
2046b57806SIkjoon Jangproperties:
2146b57806SIkjoon Jang  compatible:
2246b57806SIkjoon Jang    oneOf:
2346b57806SIkjoon Jang      - description:
2446b57806SIkjoon Jang          For implementations of the EC is connected through I2C.
2546b57806SIkjoon Jang        const: google,cros-ec-i2c
2646b57806SIkjoon Jang      - description:
2746b57806SIkjoon Jang          For implementations of the EC is connected through SPI.
2846b57806SIkjoon Jang        const: google,cros-ec-spi
2946b57806SIkjoon Jang      - description:
3046b57806SIkjoon Jang          For implementations of the EC is connected through RPMSG.
3146b57806SIkjoon Jang        const: google,cros-ec-rpmsg
3246b57806SIkjoon Jang
335d7fb8b8SKrzysztof Kozlowski  controller-data:
345d7fb8b8SKrzysztof Kozlowski    description:
355d7fb8b8SKrzysztof Kozlowski      SPI controller data, see bindings/spi/spi-samsung.txt
365d7fb8b8SKrzysztof Kozlowski    type: object
375d7fb8b8SKrzysztof Kozlowski
3846b57806SIkjoon Jang  google,cros-ec-spi-pre-delay:
3946b57806SIkjoon Jang    description:
4046b57806SIkjoon Jang      This property specifies the delay in usecs between the
4146b57806SIkjoon Jang      assertion of the CS and the first clock pulse.
4246b57806SIkjoon Jang    allOf:
4346b57806SIkjoon Jang      - $ref: /schemas/types.yaml#/definitions/uint32
4446b57806SIkjoon Jang      - default: 0
4546b57806SIkjoon Jang      - minimum: 0
4646b57806SIkjoon Jang
4746b57806SIkjoon Jang  google,cros-ec-spi-msg-delay:
4846b57806SIkjoon Jang    description:
4946b57806SIkjoon Jang      This property specifies the delay in usecs between messages.
5046b57806SIkjoon Jang    allOf:
5146b57806SIkjoon Jang      - $ref: /schemas/types.yaml#/definitions/uint32
5246b57806SIkjoon Jang      - default: 0
5346b57806SIkjoon Jang      - minimum: 0
5446b57806SIkjoon Jang
5546b57806SIkjoon Jang  google,has-vbc-nvram:
5646b57806SIkjoon Jang    description:
5746b57806SIkjoon Jang      Some implementations of the EC include a small nvram space used to
5846b57806SIkjoon Jang      store verified boot context data. This boolean flag is used to specify
5946b57806SIkjoon Jang      whether this nvram is present or not.
6046b57806SIkjoon Jang    type: boolean
6146b57806SIkjoon Jang
6246b57806SIkjoon Jang  spi-max-frequency:
6346b57806SIkjoon Jang    description: Maximum SPI frequency of the device in Hz.
6446b57806SIkjoon Jang
6546b57806SIkjoon Jang  reg:
6646b57806SIkjoon Jang    maxItems: 1
6746b57806SIkjoon Jang
6846b57806SIkjoon Jang  interrupts:
6946b57806SIkjoon Jang    maxItems: 1
7046b57806SIkjoon Jang
715d7fb8b8SKrzysztof Kozlowski  wakeup-source:
725d7fb8b8SKrzysztof Kozlowski    description: Button can wake-up the system.
735d7fb8b8SKrzysztof Kozlowski
741acd4577SRicardo CañuelopatternProperties:
751acd4577SRicardo Cañuelo  "^i2c-tunnel[0-9]*$":
761acd4577SRicardo Cañuelo    type: object
771acd4577SRicardo Cañuelo    $ref: "/schemas/i2c/google,cros-ec-i2c-tunnel.yaml#"
781acd4577SRicardo Cañuelo
7946b57806SIkjoon Jangrequired:
8046b57806SIkjoon Jang  - compatible
8146b57806SIkjoon Jang
8246b57806SIkjoon Jangif:
8346b57806SIkjoon Jang  properties:
8446b57806SIkjoon Jang    compatible:
8546b57806SIkjoon Jang      contains:
8646b57806SIkjoon Jang        enum:
8746b57806SIkjoon Jang          - google,cros-ec-i2c
8846b57806SIkjoon Jang          - google,cros-ec-rpmsg
8946b57806SIkjoon Jangthen:
9046b57806SIkjoon Jang  properties:
9146b57806SIkjoon Jang    google,cros-ec-spi-pre-delay: false
9246b57806SIkjoon Jang    google,cros-ec-spi-msg-delay: false
9346b57806SIkjoon Jang    spi-max-frequency: false
9446b57806SIkjoon Jang
9546b57806SIkjoon JangadditionalProperties: false
9646b57806SIkjoon Jang
9746b57806SIkjoon Jangexamples:
9846b57806SIkjoon Jang  # Example for I2C
9946b57806SIkjoon Jang  - |
10046b57806SIkjoon Jang    #include <dt-bindings/gpio/gpio.h>
10146b57806SIkjoon Jang    #include <dt-bindings/interrupt-controller/irq.h>
10246b57806SIkjoon Jang
10346b57806SIkjoon Jang    i2c0 {
10446b57806SIkjoon Jang        #address-cells = <1>;
10546b57806SIkjoon Jang        #size-cells = <0>;
10646b57806SIkjoon Jang
10746b57806SIkjoon Jang        cros-ec@1e {
10846b57806SIkjoon Jang            compatible = "google,cros-ec-i2c";
10946b57806SIkjoon Jang            reg = <0x1e>;
11046b57806SIkjoon Jang            interrupts = <6 0>;
11146b57806SIkjoon Jang            interrupt-parent = <&gpio0>;
11246b57806SIkjoon Jang        };
11346b57806SIkjoon Jang    };
11446b57806SIkjoon Jang
11546b57806SIkjoon Jang  # Example for SPI
11646b57806SIkjoon Jang  - |
11746b57806SIkjoon Jang    #include <dt-bindings/gpio/gpio.h>
11846b57806SIkjoon Jang    #include <dt-bindings/interrupt-controller/irq.h>
11946b57806SIkjoon Jang
12046b57806SIkjoon Jang    spi0 {
12146b57806SIkjoon Jang        #address-cells = <1>;
12246b57806SIkjoon Jang        #size-cells = <0>;
12346b57806SIkjoon Jang
12446b57806SIkjoon Jang        cros-ec@0 {
12546b57806SIkjoon Jang            compatible = "google,cros-ec-spi";
12646b57806SIkjoon Jang            reg = <0x0>;
12746b57806SIkjoon Jang            google,cros-ec-spi-msg-delay = <30>;
12846b57806SIkjoon Jang            google,cros-ec-spi-pre-delay = <10>;
12946b57806SIkjoon Jang            interrupts = <99 0>;
13046b57806SIkjoon Jang            interrupt-parent = <&gpio7>;
13146b57806SIkjoon Jang            spi-max-frequency = <5000000>;
13246b57806SIkjoon Jang        };
13346b57806SIkjoon Jang    };
13446b57806SIkjoon Jang
13546b57806SIkjoon Jang  # Example for RPMSG
13646b57806SIkjoon Jang  - |
13746b57806SIkjoon Jang    scp0 {
13846b57806SIkjoon Jang        cros-ec {
13946b57806SIkjoon Jang            compatible = "google,cros-ec-rpmsg";
14046b57806SIkjoon Jang        };
14146b57806SIkjoon Jang    };
14246b57806SIkjoon Jang...
143