[PATCH v2 1/4] dt-bindings: usb: gpio-sbu-mux: add support for ss-data lanes mux

From: Marco Felsch
Date: Thu May 04 2023 - 09:47:47 EST


This adds the support for GPIO based USB-C SS data lane muxing.

Signed-off-by: Marco Felsch <m.felsch@xxxxxxxxxxxxxx>
---
.../devicetree/bindings/usb/gpio-sbu-mux.yaml | 82 +++++++++++++++++++---
1 file changed, 71 insertions(+), 11 deletions(-)

diff --git a/Documentation/devicetree/bindings/usb/gpio-sbu-mux.yaml b/Documentation/devicetree/bindings/usb/gpio-sbu-mux.yaml
index bf4b1d016e1f..796f3283ac02 100644
--- a/Documentation/devicetree/bindings/usb/gpio-sbu-mux.yaml
+++ b/Documentation/devicetree/bindings/usb/gpio-sbu-mux.yaml
@@ -4,24 +4,26 @@
$id: "http://devicetree.org/schemas/usb/gpio-sbu-mux.yaml#";
$schema: "http://devicetree.org/meta-schemas/core.yaml#";

-title: GPIO-based SBU mux
+title: GPIO-based SS/SBU mux

maintainers:
- Bjorn Andersson <andersson@xxxxxxxxxx>

description:
- In USB Type-C applications the SBU lines needs to be connected, disconnected
- and swapped depending on the altmode and orientation. This binding describes
- a family of hardware solutions which switches between these modes using GPIO
- signals.
+ In USB Type-C applications the SS/SBU lines needs to be connected,
+ disconnected and swapped depending on the altmode and orientation. This
+ binding describes a family of hardware solutions which switches between these
+ modes using GPIO signals.

properties:
compatible:
- items:
- - enum:
- - onnn,fsusb43l10x
- - pericom,pi3usb102
- - const: gpio-sbu-mux
+ oneOf:
+ - items:
+ - enum:
+ - onnn,fsusb43l10x
+ - pericom,pi3usb102
+ - const: gpio-sbu-mux
+ - const: gpio-ss-mux

enable-gpios:
description: Switch enable GPIO
@@ -50,10 +52,18 @@ required:
- compatible
- enable-gpios
- select-gpios
- - mode-switch
- orientation-switch
- port

+if:
+ properties:
+ compatible:
+ contains:
+ const: gpio-sbu-mux
+then:
+ required:
+ - mode-switch
+
additionalProperties: false

examples:
@@ -107,4 +117,54 @@ examples:
};
};
};
+
+ - |
+ #include <dt-bindings/gpio/gpio.h>
+
+ tcpm {
+ connector {
+ compatible = "usb-c-connector";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+ tcpm_hs_out: endpoint {
+ remote-endpoint = <&usb_hs_phy_in>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+ tcpm_ss_out: endpoint {
+ remote-endpoint = <&usb_ss_phy_in>;
+ };
+ };
+
+ port@2 {
+ reg = <2>;
+ tcpm_ss_mux_out: endpoint {
+ remote-endpoint = <&ss_mux_in>;
+ };
+ };
+ };
+ };
+ };
+
+ usb-ss-mux {
+ compatible = "gpio-ss-mux";
+
+ enable-gpios = <&tlmm 101 GPIO_ACTIVE_LOW>;
+ select-gpios = <&tlmm 164 GPIO_ACTIVE_HIGH>;
+
+ orientation-switch;
+
+ port {
+ ss_mux_in: endpoint {
+ remote-endpoint = <&tcpm_ss_mux_out>;
+ };
+ };
+ };
...

--
2.39.2