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