xref: /linux/Documentation/devicetree/bindings/usb/gpio-sbu-mux.yaml (revision c532de5a67a70f8533d495f8f2aaa9a0491c3ad0)
1# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/usb/gpio-sbu-mux.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: GPIO-based SBU mux
8
9maintainers:
10  - Bjorn Andersson <andersson@kernel.org>
11
12description:
13  In USB Type-C applications the SBU lines needs to be connected, disconnected
14  and swapped depending on the altmode and orientation. This binding describes
15  a family of hardware solutions which switches between these modes using GPIO
16  signals.
17
18properties:
19  compatible:
20    items:
21      - enum:
22          - nxp,cbdtu02043
23          - onnn,fsusb43l10x
24          - pericom,pi3usb102
25          - ti,tmuxhs4212
26      - const: gpio-sbu-mux
27
28  enable-gpios:
29    description: Switch enable GPIO
30
31  select-gpios:
32    description: Orientation select
33
34  vcc-supply:
35    description: power supply
36
37  mode-switch: true
38  orientation-switch: true
39
40  port:
41    $ref: /schemas/graph.yaml#/properties/port
42    description:
43      A port node to link the SBU mux to a TypeC controller for the purpose of
44      handling altmode muxing and orientation switching.
45
46required:
47  - compatible
48  - select-gpios
49  - orientation-switch
50  - port
51
52allOf:
53  - $ref: usb-switch.yaml#
54  - if:
55      required:
56        - mode-switch
57    then:
58      required:
59        - enable-gpios
60
61additionalProperties: false
62
63examples:
64  - |
65    #include <dt-bindings/gpio/gpio.h>
66
67    tcpm {
68        connector {
69            compatible = "usb-c-connector";
70
71            ports {
72                #address-cells = <1>;
73                #size-cells = <0>;
74
75                port@0 {
76                    reg = <0>;
77                    tcpm_hs_out: endpoint {
78                        remote-endpoint = <&usb_hs_phy_in>;
79                    };
80                };
81
82                port@1 {
83                    reg = <1>;
84                    tcpm_ss_out: endpoint {
85                        remote-endpoint = <&usb_ss_phy_in>;
86                    };
87                };
88
89                port@2 {
90                    reg = <2>;
91                    tcpm_sbu_out: endpoint {
92                        remote-endpoint = <&sbu_mux_in>;
93                    };
94                };
95            };
96        };
97    };
98
99    sbu-mux {
100        compatible = "pericom,pi3usb102", "gpio-sbu-mux";
101
102        enable-gpios = <&tlmm 101 GPIO_ACTIVE_LOW>;
103        select-gpios = <&tlmm 164 GPIO_ACTIVE_HIGH>;
104
105        mode-switch;
106        orientation-switch;
107
108        port {
109            sbu_mux_in: endpoint {
110                remote-endpoint = <&tcpm_sbu_out>;
111            };
112        };
113    };
114...
115