18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
28c2ecf20Sopenharmony_ci%YAML 1.2
38c2ecf20Sopenharmony_ci---
48c2ecf20Sopenharmony_ci$id: http://devicetree.org/schemas/mfd/google,cros-ec.yaml#
58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cititle: ChromeOS Embedded Controller
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_cimaintainers:
108c2ecf20Sopenharmony_ci  - Benson Leung <bleung@chromium.org>
118c2ecf20Sopenharmony_ci  - Enric Balletbo i Serra <enric.balletbo@collabora.com>
128c2ecf20Sopenharmony_ci  - Guenter Roeck <groeck@chromium.org>
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_cidescription:
158c2ecf20Sopenharmony_ci  Google's ChromeOS EC is a microcontroller which talks to the AP and
168c2ecf20Sopenharmony_ci  implements various functions such as keyboard and battery charging.
178c2ecf20Sopenharmony_ci  The EC can be connected through various interfaces (I2C, SPI, and others)
188c2ecf20Sopenharmony_ci  and the compatible string specifies which interface is being used.
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_ciproperties:
218c2ecf20Sopenharmony_ci  compatible:
228c2ecf20Sopenharmony_ci    oneOf:
238c2ecf20Sopenharmony_ci      - description:
248c2ecf20Sopenharmony_ci          For implementations of the EC is connected through I2C.
258c2ecf20Sopenharmony_ci        const: google,cros-ec-i2c
268c2ecf20Sopenharmony_ci      - description:
278c2ecf20Sopenharmony_ci          For implementations of the EC is connected through SPI.
288c2ecf20Sopenharmony_ci        const: google,cros-ec-spi
298c2ecf20Sopenharmony_ci      - description:
308c2ecf20Sopenharmony_ci          For implementations of the EC is connected through RPMSG.
318c2ecf20Sopenharmony_ci        const: google,cros-ec-rpmsg
328c2ecf20Sopenharmony_ci
338c2ecf20Sopenharmony_ci  controller-data:
348c2ecf20Sopenharmony_ci    description:
358c2ecf20Sopenharmony_ci      SPI controller data, see bindings/spi/spi-samsung.txt
368c2ecf20Sopenharmony_ci    type: object
378c2ecf20Sopenharmony_ci
388c2ecf20Sopenharmony_ci  google,cros-ec-spi-pre-delay:
398c2ecf20Sopenharmony_ci    description:
408c2ecf20Sopenharmony_ci      This property specifies the delay in usecs between the
418c2ecf20Sopenharmony_ci      assertion of the CS and the first clock pulse.
428c2ecf20Sopenharmony_ci    allOf:
438c2ecf20Sopenharmony_ci      - $ref: /schemas/types.yaml#/definitions/uint32
448c2ecf20Sopenharmony_ci      - default: 0
458c2ecf20Sopenharmony_ci      - minimum: 0
468c2ecf20Sopenharmony_ci
478c2ecf20Sopenharmony_ci  google,cros-ec-spi-msg-delay:
488c2ecf20Sopenharmony_ci    description:
498c2ecf20Sopenharmony_ci      This property specifies the delay in usecs between messages.
508c2ecf20Sopenharmony_ci    allOf:
518c2ecf20Sopenharmony_ci      - $ref: /schemas/types.yaml#/definitions/uint32
528c2ecf20Sopenharmony_ci      - default: 0
538c2ecf20Sopenharmony_ci      - minimum: 0
548c2ecf20Sopenharmony_ci
558c2ecf20Sopenharmony_ci  google,has-vbc-nvram:
568c2ecf20Sopenharmony_ci    description:
578c2ecf20Sopenharmony_ci      Some implementations of the EC include a small nvram space used to
588c2ecf20Sopenharmony_ci      store verified boot context data. This boolean flag is used to specify
598c2ecf20Sopenharmony_ci      whether this nvram is present or not.
608c2ecf20Sopenharmony_ci    type: boolean
618c2ecf20Sopenharmony_ci
628c2ecf20Sopenharmony_ci  mtk,rpmsg-name:
638c2ecf20Sopenharmony_ci    description:
648c2ecf20Sopenharmony_ci      Must be defined if the cros-ec is a rpmsg device for a Mediatek
658c2ecf20Sopenharmony_ci      ARM Cortex M4 Co-processor. Contains the name pf the rpmsg
668c2ecf20Sopenharmony_ci      device. Used to match the subnode to the rpmsg device announced by
678c2ecf20Sopenharmony_ci      the SCP.
688c2ecf20Sopenharmony_ci    $ref: "/schemas/types.yaml#/definitions/string"
698c2ecf20Sopenharmony_ci
708c2ecf20Sopenharmony_ci  spi-max-frequency:
718c2ecf20Sopenharmony_ci    description: Maximum SPI frequency of the device in Hz.
728c2ecf20Sopenharmony_ci
738c2ecf20Sopenharmony_ci  reg:
748c2ecf20Sopenharmony_ci    maxItems: 1
758c2ecf20Sopenharmony_ci
768c2ecf20Sopenharmony_ci  interrupts:
778c2ecf20Sopenharmony_ci    maxItems: 1
788c2ecf20Sopenharmony_ci
798c2ecf20Sopenharmony_ci  wakeup-source:
808c2ecf20Sopenharmony_ci    description: Button can wake-up the system.
818c2ecf20Sopenharmony_ci
828c2ecf20Sopenharmony_ci  '#address-cells':
838c2ecf20Sopenharmony_ci    const: 1
848c2ecf20Sopenharmony_ci
858c2ecf20Sopenharmony_ci  '#size-cells':
868c2ecf20Sopenharmony_ci    const: 0
878c2ecf20Sopenharmony_ci
888c2ecf20Sopenharmony_ci  typec:
898c2ecf20Sopenharmony_ci    $ref: "/schemas/chrome/google,cros-ec-typec.yaml#"
908c2ecf20Sopenharmony_ci
918c2ecf20Sopenharmony_ci  ec-pwm:
928c2ecf20Sopenharmony_ci    $ref: "/schemas/pwm/google,cros-ec-pwm.yaml#"
938c2ecf20Sopenharmony_ci
948c2ecf20Sopenharmony_ci  keyboard-controller:
958c2ecf20Sopenharmony_ci    $ref: "/schemas/input/google,cros-ec-keyb.yaml#"
968c2ecf20Sopenharmony_ci
978c2ecf20Sopenharmony_ci  codecs:
988c2ecf20Sopenharmony_ci    type: object
998c2ecf20Sopenharmony_ci    additionalProperties: false
1008c2ecf20Sopenharmony_ci
1018c2ecf20Sopenharmony_ci    properties:
1028c2ecf20Sopenharmony_ci      '#address-cells':
1038c2ecf20Sopenharmony_ci        const: 2
1048c2ecf20Sopenharmony_ci
1058c2ecf20Sopenharmony_ci      '#size-cells':
1068c2ecf20Sopenharmony_ci        const: 1
1078c2ecf20Sopenharmony_ci
1088c2ecf20Sopenharmony_ci    patternProperties:
1098c2ecf20Sopenharmony_ci      "^ec-codec@[a-f0-9]+$":
1108c2ecf20Sopenharmony_ci        type: object
1118c2ecf20Sopenharmony_ci        $ref: "/schemas/sound/google,cros-ec-codec.yaml#"
1128c2ecf20Sopenharmony_ci
1138c2ecf20Sopenharmony_ci    required:
1148c2ecf20Sopenharmony_ci      - "#address-cells"
1158c2ecf20Sopenharmony_ci      - "#size-cells"
1168c2ecf20Sopenharmony_ci
1178c2ecf20Sopenharmony_cipatternProperties:
1188c2ecf20Sopenharmony_ci  "^i2c-tunnel[0-9]*$":
1198c2ecf20Sopenharmony_ci    type: object
1208c2ecf20Sopenharmony_ci    $ref: "/schemas/i2c/google,cros-ec-i2c-tunnel.yaml#"
1218c2ecf20Sopenharmony_ci
1228c2ecf20Sopenharmony_ci  "^regulator@[0-9]+$":
1238c2ecf20Sopenharmony_ci    type: object
1248c2ecf20Sopenharmony_ci    $ref: "/schemas/regulator/google,cros-ec-regulator.yaml#"
1258c2ecf20Sopenharmony_ci
1268c2ecf20Sopenharmony_ci  "^extcon[0-9]*$":
1278c2ecf20Sopenharmony_ci    type: object
1288c2ecf20Sopenharmony_ci    $ref: "/schemas/extcon/extcon-usbc-cros-ec.yaml#"
1298c2ecf20Sopenharmony_ci
1308c2ecf20Sopenharmony_cirequired:
1318c2ecf20Sopenharmony_ci  - compatible
1328c2ecf20Sopenharmony_ci
1338c2ecf20Sopenharmony_ciif:
1348c2ecf20Sopenharmony_ci  properties:
1358c2ecf20Sopenharmony_ci    compatible:
1368c2ecf20Sopenharmony_ci      contains:
1378c2ecf20Sopenharmony_ci        enum:
1388c2ecf20Sopenharmony_ci          - google,cros-ec-i2c
1398c2ecf20Sopenharmony_ci          - google,cros-ec-rpmsg
1408c2ecf20Sopenharmony_cithen:
1418c2ecf20Sopenharmony_ci  properties:
1428c2ecf20Sopenharmony_ci    google,cros-ec-spi-pre-delay: false
1438c2ecf20Sopenharmony_ci    google,cros-ec-spi-msg-delay: false
1448c2ecf20Sopenharmony_ci    spi-max-frequency: false
1458c2ecf20Sopenharmony_ci
1468c2ecf20Sopenharmony_ciadditionalProperties: false
1478c2ecf20Sopenharmony_ci
1488c2ecf20Sopenharmony_ciexamples:
1498c2ecf20Sopenharmony_ci  # Example for I2C
1508c2ecf20Sopenharmony_ci  - |
1518c2ecf20Sopenharmony_ci    #include <dt-bindings/gpio/gpio.h>
1528c2ecf20Sopenharmony_ci    #include <dt-bindings/interrupt-controller/irq.h>
1538c2ecf20Sopenharmony_ci
1548c2ecf20Sopenharmony_ci    i2c0 {
1558c2ecf20Sopenharmony_ci        #address-cells = <1>;
1568c2ecf20Sopenharmony_ci        #size-cells = <0>;
1578c2ecf20Sopenharmony_ci
1588c2ecf20Sopenharmony_ci        cros-ec@1e {
1598c2ecf20Sopenharmony_ci            compatible = "google,cros-ec-i2c";
1608c2ecf20Sopenharmony_ci            reg = <0x1e>;
1618c2ecf20Sopenharmony_ci            interrupts = <6 0>;
1628c2ecf20Sopenharmony_ci            interrupt-parent = <&gpio0>;
1638c2ecf20Sopenharmony_ci        };
1648c2ecf20Sopenharmony_ci    };
1658c2ecf20Sopenharmony_ci
1668c2ecf20Sopenharmony_ci  # Example for SPI
1678c2ecf20Sopenharmony_ci  - |
1688c2ecf20Sopenharmony_ci    #include <dt-bindings/gpio/gpio.h>
1698c2ecf20Sopenharmony_ci    #include <dt-bindings/interrupt-controller/irq.h>
1708c2ecf20Sopenharmony_ci
1718c2ecf20Sopenharmony_ci    spi0 {
1728c2ecf20Sopenharmony_ci        #address-cells = <1>;
1738c2ecf20Sopenharmony_ci        #size-cells = <0>;
1748c2ecf20Sopenharmony_ci
1758c2ecf20Sopenharmony_ci        cros-ec@0 {
1768c2ecf20Sopenharmony_ci            compatible = "google,cros-ec-spi";
1778c2ecf20Sopenharmony_ci            reg = <0x0>;
1788c2ecf20Sopenharmony_ci            google,cros-ec-spi-msg-delay = <30>;
1798c2ecf20Sopenharmony_ci            google,cros-ec-spi-pre-delay = <10>;
1808c2ecf20Sopenharmony_ci            interrupts = <99 0>;
1818c2ecf20Sopenharmony_ci            interrupt-parent = <&gpio7>;
1828c2ecf20Sopenharmony_ci            spi-max-frequency = <5000000>;
1838c2ecf20Sopenharmony_ci        };
1848c2ecf20Sopenharmony_ci    };
1858c2ecf20Sopenharmony_ci
1868c2ecf20Sopenharmony_ci  # Example for RPMSG
1878c2ecf20Sopenharmony_ci  - |
1888c2ecf20Sopenharmony_ci    scp0 {
1898c2ecf20Sopenharmony_ci        cros-ec {
1908c2ecf20Sopenharmony_ci            compatible = "google,cros-ec-rpmsg";
1918c2ecf20Sopenharmony_ci        };
1928c2ecf20Sopenharmony_ci    };
1938c2ecf20Sopenharmony_ci...
194