On Thu, Jan 12, 2023 at 08:11:14PM -0800, Bjorn Andersson wrote: > From: Bjorn Andersson <bjorn.andersson@xxxxxxxxxx> > > Introduce a binding for GPIO-based mux hardware used for connecting, > disconnecting and switching orientation of the SBU lines in USB Type-C > applications. > > Signed-off-by: Bjorn Andersson <bjorn.andersson@xxxxxxxxxx> > Signed-off-by: Bjorn Andersson <quic_bjorande@xxxxxxxxxxx> > --- > > Changes since v1: > - Expanded the example to indicate how this fits with the TCPM > - Updated maintainer email address. > > .../devicetree/bindings/usb/gpio-sbu-mux.yaml | 110 ++++++++++++++++++ > 1 file changed, 110 insertions(+) > create mode 100644 Documentation/devicetree/bindings/usb/gpio-sbu-mux.yaml > > diff --git a/Documentation/devicetree/bindings/usb/gpio-sbu-mux.yaml b/Documentation/devicetree/bindings/usb/gpio-sbu-mux.yaml > new file mode 100644 > index 000000000000..bf4b1d016e1f > --- /dev/null > +++ b/Documentation/devicetree/bindings/usb/gpio-sbu-mux.yaml > @@ -0,0 +1,110 @@ > +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause > +%YAML 1.2 > +--- > +$id: "http://devicetree.org/schemas/usb/gpio-sbu-mux.yaml#" > +$schema: "http://devicetree.org/meta-schemas/core.yaml#" > + > +title: GPIO-based 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. > + > +properties: > + compatible: > + items: > + - enum: > + - onnn,fsusb43l10x > + - pericom,pi3usb102 > + - const: gpio-sbu-mux > + > + enable-gpios: > + description: Switch enable GPIO > + > + select-gpios: > + description: Orientation select > + > + vcc-supply: > + description: power supply > + > + mode-switch: > + description: Flag the port as possible handle of altmode switching > + type: boolean > + > + orientation-switch: > + description: Flag the port as possible handler of orientation switching > + type: boolean > + > + port: > + $ref: /schemas/graph.yaml#/properties/port > + description: > + A port node to link the SBU mux to a TypeC controller for the purpose of > + handling altmode muxing and orientation switching. > + > +required: > + - compatible > + - enable-gpios > + - select-gpios > + - mode-switch > + - orientation-switch > + - port > + > +additionalProperties: false > + > +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_sbu_out: endpoint { > + remote-endpoint = <&sbu_mux_in>; > + }; > + }; > + }; > + }; > + }; > + > + sbu-mux { > + compatible = "pericom,pi3usb102", "gpio-sbu-mux"; > + > + enable-gpios = <&tlmm 101 GPIO_ACTIVE_LOW>; > + select-gpios = <&tlmm 164 GPIO_ACTIVE_HIGH>; > + > + mode-switch; > + orientation-switch; > + > + port { > + sbu_mux_in: endpoint { > + remote-endpoint = <&tcpm_sbu_out>; > + }; Don't you need a connection to whatever drives SBU? Maybe your case is fixed because the phy does the DP/USB muxing? But the binding needs to support the worst case which I guess would be all the muxing/switching is done by separate board level components. Rob