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
625c024e68SRicardo Cañuelo  mtk,rpmsg-name:
635c024e68SRicardo Cañuelo    description:
645c024e68SRicardo Cañuelo      Must be defined if the cros-ec is a rpmsg device for a Mediatek
655c024e68SRicardo Cañuelo      ARM Cortex M4 Co-processor. Contains the name pf the rpmsg
665c024e68SRicardo Cañuelo      device. Used to match the subnode to the rpmsg device announced by
675c024e68SRicardo Cañuelo      the SCP.
685c024e68SRicardo Cañuelo    $ref: "/schemas/types.yaml#/definitions/string"
695c024e68SRicardo Cañuelo
7046b57806SIkjoon Jang  spi-max-frequency:
7146b57806SIkjoon Jang    description: Maximum SPI frequency of the device in Hz.
7246b57806SIkjoon Jang
7346b57806SIkjoon Jang  reg:
7446b57806SIkjoon Jang    maxItems: 1
7546b57806SIkjoon Jang
7646b57806SIkjoon Jang  interrupts:
7746b57806SIkjoon Jang    maxItems: 1
7846b57806SIkjoon Jang
795d7fb8b8SKrzysztof Kozlowski  wakeup-source:
805d7fb8b8SKrzysztof Kozlowski    description: Button can wake-up the system.
815d7fb8b8SKrzysztof Kozlowski
825c024e68SRicardo Cañuelo  '#address-cells':
835c024e68SRicardo Cañuelo    const: 1
845c024e68SRicardo Cañuelo
855c024e68SRicardo Cañuelo  '#size-cells':
865c024e68SRicardo Cañuelo    const: 0
875c024e68SRicardo Cañuelo
885c024e68SRicardo Cañuelo  typec:
895c024e68SRicardo Cañuelo    $ref: "/schemas/chrome/google,cros-ec-typec.yaml#"
905c024e68SRicardo Cañuelo
915c024e68SRicardo Cañuelo  ec-pwm:
925c024e68SRicardo Cañuelo    $ref: "/schemas/pwm/google,cros-ec-pwm.yaml#"
935c024e68SRicardo Cañuelo
9450d68feeSRicardo Cañuelo  keyboard-controller:
9550d68feeSRicardo Cañuelo    $ref: "/schemas/input/google,cros-ec-keyb.yaml#"
9650d68feeSRicardo Cañuelo
97*19ad93bcSStephen Boyd  proximity:
98*19ad93bcSStephen Boyd    $ref: "/schemas/iio/proximity/google,cros-ec-mkbp-proximity.yaml#"
99*19ad93bcSStephen Boyd
1005c024e68SRicardo Cañuelo  codecs:
1015c024e68SRicardo Cañuelo    type: object
1025c024e68SRicardo Cañuelo    additionalProperties: false
1035c024e68SRicardo Cañuelo
1045c024e68SRicardo Cañuelo    properties:
1055c024e68SRicardo Cañuelo      '#address-cells':
1065c024e68SRicardo Cañuelo        const: 2
1075c024e68SRicardo Cañuelo
1085c024e68SRicardo Cañuelo      '#size-cells':
1095c024e68SRicardo Cañuelo        const: 1
1105c024e68SRicardo Cañuelo
1115c024e68SRicardo Cañuelo    patternProperties:
1125c024e68SRicardo Cañuelo      "^ec-codec@[a-f0-9]+$":
1135c024e68SRicardo Cañuelo        type: object
1145c024e68SRicardo Cañuelo        $ref: "/schemas/sound/google,cros-ec-codec.yaml#"
1155c024e68SRicardo Cañuelo
1165c024e68SRicardo Cañuelo    required:
1175c024e68SRicardo Cañuelo      - "#address-cells"
1185c024e68SRicardo Cañuelo      - "#size-cells"
1195c024e68SRicardo Cañuelo
1201acd4577SRicardo CañuelopatternProperties:
1211acd4577SRicardo Cañuelo  "^i2c-tunnel[0-9]*$":
1221acd4577SRicardo Cañuelo    type: object
1231acd4577SRicardo Cañuelo    $ref: "/schemas/i2c/google,cros-ec-i2c-tunnel.yaml#"
1241acd4577SRicardo Cañuelo
1255c024e68SRicardo Cañuelo  "^regulator@[0-9]+$":
1265c024e68SRicardo Cañuelo    type: object
1275c024e68SRicardo Cañuelo    $ref: "/schemas/regulator/google,cros-ec-regulator.yaml#"
1285c024e68SRicardo Cañuelo
1295c024e68SRicardo Cañuelo  "^extcon[0-9]*$":
1305c024e68SRicardo Cañuelo    type: object
1315c024e68SRicardo Cañuelo    $ref: "/schemas/extcon/extcon-usbc-cros-ec.yaml#"
1325c024e68SRicardo Cañuelo
13346b57806SIkjoon Jangrequired:
13446b57806SIkjoon Jang  - compatible
13546b57806SIkjoon Jang
13646b57806SIkjoon Jangif:
13746b57806SIkjoon Jang  properties:
13846b57806SIkjoon Jang    compatible:
13946b57806SIkjoon Jang      contains:
14046b57806SIkjoon Jang        enum:
14146b57806SIkjoon Jang          - google,cros-ec-i2c
14246b57806SIkjoon Jang          - google,cros-ec-rpmsg
14346b57806SIkjoon Jangthen:
14446b57806SIkjoon Jang  properties:
14546b57806SIkjoon Jang    google,cros-ec-spi-pre-delay: false
14646b57806SIkjoon Jang    google,cros-ec-spi-msg-delay: false
14746b57806SIkjoon Jang    spi-max-frequency: false
14846b57806SIkjoon Jang
14946b57806SIkjoon JangadditionalProperties: false
15046b57806SIkjoon Jang
15146b57806SIkjoon Jangexamples:
15246b57806SIkjoon Jang  # Example for I2C
15346b57806SIkjoon Jang  - |
15446b57806SIkjoon Jang    #include <dt-bindings/gpio/gpio.h>
15546b57806SIkjoon Jang    #include <dt-bindings/interrupt-controller/irq.h>
15646b57806SIkjoon Jang
15746b57806SIkjoon Jang    i2c0 {
15846b57806SIkjoon Jang        #address-cells = <1>;
15946b57806SIkjoon Jang        #size-cells = <0>;
16046b57806SIkjoon Jang
16146b57806SIkjoon Jang        cros-ec@1e {
16246b57806SIkjoon Jang            compatible = "google,cros-ec-i2c";
16346b57806SIkjoon Jang            reg = <0x1e>;
16446b57806SIkjoon Jang            interrupts = <6 0>;
16546b57806SIkjoon Jang            interrupt-parent = <&gpio0>;
16646b57806SIkjoon Jang        };
16746b57806SIkjoon Jang    };
16846b57806SIkjoon Jang
16946b57806SIkjoon Jang  # Example for SPI
17046b57806SIkjoon Jang  - |
17146b57806SIkjoon Jang    #include <dt-bindings/gpio/gpio.h>
17246b57806SIkjoon Jang    #include <dt-bindings/interrupt-controller/irq.h>
17346b57806SIkjoon Jang
17446b57806SIkjoon Jang    spi0 {
17546b57806SIkjoon Jang        #address-cells = <1>;
17646b57806SIkjoon Jang        #size-cells = <0>;
17746b57806SIkjoon Jang
17846b57806SIkjoon Jang        cros-ec@0 {
17946b57806SIkjoon Jang            compatible = "google,cros-ec-spi";
18046b57806SIkjoon Jang            reg = <0x0>;
18146b57806SIkjoon Jang            google,cros-ec-spi-msg-delay = <30>;
18246b57806SIkjoon Jang            google,cros-ec-spi-pre-delay = <10>;
18346b57806SIkjoon Jang            interrupts = <99 0>;
18446b57806SIkjoon Jang            interrupt-parent = <&gpio7>;
18546b57806SIkjoon Jang            spi-max-frequency = <5000000>;
186*19ad93bcSStephen Boyd
187*19ad93bcSStephen Boyd            proximity {
188*19ad93bcSStephen Boyd                    compatible = "google,cros-ec-mkbp-proximity";
189*19ad93bcSStephen Boyd            };
19046b57806SIkjoon Jang        };
19146b57806SIkjoon Jang    };
19246b57806SIkjoon Jang
19346b57806SIkjoon Jang  # Example for RPMSG
19446b57806SIkjoon Jang  - |
19546b57806SIkjoon Jang    scp0 {
19646b57806SIkjoon Jang        cros-ec {
19746b57806SIkjoon Jang            compatible = "google,cros-ec-rpmsg";
19846b57806SIkjoon Jang        };
19946b57806SIkjoon Jang    };
20046b57806SIkjoon Jang...
201