# 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@kernel.org>

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>;
            };
        };
    };
...
