Chrome OS devices with PDCs allow the host to read port status and
control port behavior with UCSI commands sent to the embedded controller
(EC). Add documentation for cros-ec-ucsi node which loads the Chrome OS
UCSI driver.
Signed-off-by: Jameson Thies <jthies@google.com>
---
.../bindings/chrome/google,cros-ec-ucsi.yaml | 71 +++++++++++++++++++
.../bindings/mfd/google,cros-ec.yaml | 4 +-
2 files changed, 74 insertions(+), 1 deletion(-)
create mode 100644 Documentation/devicetree/bindings/chrome/google,cros-ec-ucsi.yaml
diff --git a/Documentation/devicetree/bindings/chrome/google,cros-ec-ucsi.yaml b/Documentation/devicetree/bindings/chrome/google,cros-ec-ucsi.yaml
new file mode 100644
index 000000000000..2121776e3ff0
--- /dev/null
+++ b/Documentation/devicetree/bindings/chrome/google,cros-ec-ucsi.yaml
@@ -0,0 +1,71 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/chrome/google,cros-ec-ucsi.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Google Chrome OS EC(Embedded Controller) UCSI driver.
+
+maintainers:
+ - Abhishek Pandit-Subedi <abhishekpandit@chromium.org>
+ - Andrei Kuchynski <akuchynski@chromium.org>
+ - Benson Leung <bleung@chromium.org>
+ - Jameson Thies <jthies@google.com>
+ - Łukasz Bartosik <ukaszb@chromium.org>
+
+description:
+ Chrome OS devices with PDC-based USB-C ports expose a UCSI interface
+ from the Embedded Controller (EC) which allows the host to request
+ port state and control limited port behavior (DR/PR swap). This node
+ allows the host UCSI driver to send and receive UCSI commands to a
+ Chrome OS EC. The node for this device should be under a cros-ec node
+ like google,cros-ec-spi.
+
+properties:
+ compatible:
+ const: google,cros-ec-ucsi
+
+ '#address-cells':
+ const: 1
+
+ '#size-cells':
+ const: 0
+
+patternProperties:
+ '^connector@[0-9a-f]+$':
+ $ref: /schemas/connector/usb-connector.yaml#
+ required:
+ - reg
+
+required:
+ - compatible
+
+additionalProperties: false
+
+examples:
+ - |+
+ spi {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ cros_ec: ec@0 {
+ compatible = "google,cros-ec-spi";
+ reg = <0>;
+ interrupts = <35 0>;
+
+ typec {
+ compatible = "google,cros-ec-ucsi";
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ connector@0 {
+ compatible = "usb-c-connector";
+ reg = <0>;
+ power-role = "dual";
+ data-role = "dual";
+ try-power-role = "source";
+ };
+ };
+ };
+ };
diff --git a/Documentation/devicetree/bindings/mfd/google,cros-ec.yaml b/Documentation/devicetree/bindings/mfd/google,cros-ec.yaml
index 50f457090066..646bc81c526f 100644
--- a/Documentation/devicetree/bindings/mfd/google,cros-ec.yaml
+++ b/Documentation/devicetree/bindings/mfd/google,cros-ec.yaml
@@ -99,7 +99,9 @@ properties:
gpio-controller: true
typec:
- $ref: /schemas/chrome/google,cros-ec-typec.yaml#
+ oneOf:
+ - $ref: /schemas/chrome/google,cros-ec-typec.yaml#
+ - $ref: /schemas/chrome/google,cros-ec-ucsi.yaml#
ec-pwm:
$ref: /schemas/pwm/google,cros-ec-pwm.yaml#
--
2.51.0.618.g983fd99d29-goog
On Wed, Oct 01, 2025 at 07:33:41PM +0000, Jameson Thies wrote: > Chrome OS devices with PDCs allow the host to read port status and > control port behavior with UCSI commands sent to the embedded controller > (EC). Add documentation for cros-ec-ucsi node which loads the Chrome OS > UCSI driver. What's PDC? What's UCSI? > > Signed-off-by: Jameson Thies <jthies@google.com> > --- > .../bindings/chrome/google,cros-ec-ucsi.yaml | 71 +++++++++++++++++++ > .../bindings/mfd/google,cros-ec.yaml | 4 +- > 2 files changed, 74 insertions(+), 1 deletion(-) > create mode 100644 Documentation/devicetree/bindings/chrome/google,cros-ec-ucsi.yaml > > diff --git a/Documentation/devicetree/bindings/chrome/google,cros-ec-ucsi.yaml b/Documentation/devicetree/bindings/chrome/google,cros-ec-ucsi.yaml > new file mode 100644 > index 000000000000..2121776e3ff0 > --- /dev/null > +++ b/Documentation/devicetree/bindings/chrome/google,cros-ec-ucsi.yaml > @@ -0,0 +1,71 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/chrome/google,cros-ec-ucsi.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Google Chrome OS EC(Embedded Controller) UCSI driver. > + > +maintainers: > + - Abhishek Pandit-Subedi <abhishekpandit@chromium.org> > + - Andrei Kuchynski <akuchynski@chromium.org> > + - Benson Leung <bleung@chromium.org> > + - Jameson Thies <jthies@google.com> > + - Łukasz Bartosik <ukaszb@chromium.org> > + > +description: > + Chrome OS devices with PDC-based USB-C ports expose a UCSI interface > + from the Embedded Controller (EC) which allows the host to request > + port state and control limited port behavior (DR/PR swap). This node > + allows the host UCSI driver to send and receive UCSI commands to a > + Chrome OS EC. The node for this device should be under a cros-ec node > + like google,cros-ec-spi. > + > +properties: > + compatible: > + const: google,cros-ec-ucsi > + > + '#address-cells': > + const: 1 > + > + '#size-cells': > + const: 0 > + > +patternProperties: > + '^connector@[0-9a-f]+$': > + $ref: /schemas/connector/usb-connector.yaml# > + required: > + - reg This is the exact same binding as google,cros-ec-typec.yaml. Why are you duplicating the whole thing rather than just adding a new compatible string? Rob
> What's PDC? What's UCSI? PDCs are "Power Delivery Controllers". It refers to an IC which manages PD communication for a USB-C port. UCSI stands for "USB Type-C Connector System Software Interface". It is a specification maintained by the USB-IF which defines a standardized interface for communicating with PDCs. I'll update the description in the v3 series to provide the full name for both of these terms. > This is the exact same binding as google,cros-ec-typec.yaml. Why are you > duplicating the whole thing rather than just adding a new compatible > string? I separated these bindings because they are associated with separate mutually exclusive drivers. But, I'm fine with adding this as a compatibility string in google,cros-ec-typec.yaml and will make that change in the v3 series.
On Wed, Oct 01, 2025 at 07:33:41PM +0000, Jameson Thies wrote:
> Chrome OS devices with PDCs allow the host to read port status and
> control port behavior with UCSI commands sent to the embedded controller
> (EC). Add documentation for cros-ec-ucsi node which loads the Chrome OS
> UCSI driver.
>
> Signed-off-by: Jameson Thies <jthies@google.com>
Reviewed-by: Benson Leung <bleung@chromium.org>
> ---
> .../bindings/chrome/google,cros-ec-ucsi.yaml | 71 +++++++++++++++++++
> .../bindings/mfd/google,cros-ec.yaml | 4 +-
> 2 files changed, 74 insertions(+), 1 deletion(-)
> create mode 100644 Documentation/devicetree/bindings/chrome/google,cros-ec-ucsi.yaml
>
> diff --git a/Documentation/devicetree/bindings/chrome/google,cros-ec-ucsi.yaml b/Documentation/devicetree/bindings/chrome/google,cros-ec-ucsi.yaml
> new file mode 100644
> index 000000000000..2121776e3ff0
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/chrome/google,cros-ec-ucsi.yaml
> @@ -0,0 +1,71 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/chrome/google,cros-ec-ucsi.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Google Chrome OS EC(Embedded Controller) UCSI driver.
> +
> +maintainers:
> + - Abhishek Pandit-Subedi <abhishekpandit@chromium.org>
> + - Andrei Kuchynski <akuchynski@chromium.org>
> + - Benson Leung <bleung@chromium.org>
> + - Jameson Thies <jthies@google.com>
> + - Łukasz Bartosik <ukaszb@chromium.org>
> +
> +description:
> + Chrome OS devices with PDC-based USB-C ports expose a UCSI interface
> + from the Embedded Controller (EC) which allows the host to request
> + port state and control limited port behavior (DR/PR swap). This node
> + allows the host UCSI driver to send and receive UCSI commands to a
> + Chrome OS EC. The node for this device should be under a cros-ec node
> + like google,cros-ec-spi.
> +
> +properties:
> + compatible:
> + const: google,cros-ec-ucsi
> +
> + '#address-cells':
> + const: 1
> +
> + '#size-cells':
> + const: 0
> +
> +patternProperties:
> + '^connector@[0-9a-f]+$':
> + $ref: /schemas/connector/usb-connector.yaml#
> + required:
> + - reg
> +
> +required:
> + - compatible
> +
> +additionalProperties: false
> +
> +examples:
> + - |+
> + spi {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + cros_ec: ec@0 {
> + compatible = "google,cros-ec-spi";
> + reg = <0>;
> + interrupts = <35 0>;
> +
> + typec {
> + compatible = "google,cros-ec-ucsi";
> +
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + connector@0 {
> + compatible = "usb-c-connector";
> + reg = <0>;
> + power-role = "dual";
> + data-role = "dual";
> + try-power-role = "source";
> + };
> + };
> + };
> + };
> diff --git a/Documentation/devicetree/bindings/mfd/google,cros-ec.yaml b/Documentation/devicetree/bindings/mfd/google,cros-ec.yaml
> index 50f457090066..646bc81c526f 100644
> --- a/Documentation/devicetree/bindings/mfd/google,cros-ec.yaml
> +++ b/Documentation/devicetree/bindings/mfd/google,cros-ec.yaml
> @@ -99,7 +99,9 @@ properties:
> gpio-controller: true
>
> typec:
> - $ref: /schemas/chrome/google,cros-ec-typec.yaml#
> + oneOf:
> + - $ref: /schemas/chrome/google,cros-ec-typec.yaml#
> + - $ref: /schemas/chrome/google,cros-ec-ucsi.yaml#
>
> ec-pwm:
> $ref: /schemas/pwm/google,cros-ec-pwm.yaml#
> --
> 2.51.0.618.g983fd99d29-goog
>
© 2016 - 2026 Red Hat, Inc.