1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/usb/qcom,pmic-typec.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm PMIC based USB Type-C block
8
9maintainers:
10  - Bryan O'Donoghue <bryan.odonoghue@linaro.org>
11
12description:
13  Qualcomm PMIC Type-C block
14
15properties:
16  compatible:
17    enum:
18      - qcom,pm8150b-typec
19
20  connector:
21    type: object
22    $ref: /schemas/connector/usb-connector.yaml#
23    unevaluatedProperties: false
24
25  reg:
26    description: Type-C port and pdphy SPMI register base offsets
27    maxItems: 2
28
29  interrupts:
30    items:
31      - description: Type-C CC attach notification, VBUS error, tCCDebounce done
32      - description: Type-C VCONN powered
33      - description: Type-C CC state change
34      - description: Type-C VCONN over-current
35      - description: Type-C VBUS state change
36      - description: Type-C Attach/detach notification
37      - description: Type-C Legacy cable detect
38      - description: Type-C Try.Src Try.Snk state change
39      - description: Power Domain Signal TX - HardReset or CableReset signal TX
40      - description: Power Domain Signal RX - HardReset or CableReset signal RX
41      - description: Power Domain TX complete
42      - description: Power Domain RX complete
43      - description: Power Domain TX fail
44      - description: Power Domain TX message discard
45      - description: Power Domain RX message discard
46      - description: Power Domain Fast Role Swap event
47
48  interrupt-names:
49    items:
50      - const: or-rid-detect-change
51      - const: vpd-detect
52      - const: cc-state-change
53      - const: vconn-oc
54      - const: vbus-change
55      - const: attach-detach
56      - const: legacy-cable-detect
57      - const: try-snk-src-detect
58      - const: sig-tx
59      - const: sig-rx
60      - const: msg-tx
61      - const: msg-rx
62      - const: msg-tx-failed
63      - const: msg-tx-discarded
64      - const: msg-rx-discarded
65      - const: fr-swap
66
67  vdd-vbus-supply:
68    description: VBUS power supply.
69
70  vdd-pdphy-supply:
71    description: VDD regulator supply to the PDPHY.
72
73  port:
74    $ref: /schemas/graph.yaml#/properties/port
75    description:
76      Contains a port which produces data-role switching messages.
77
78required:
79  - compatible
80  - reg
81  - interrupts
82  - interrupt-names
83  - vdd-vbus-supply
84  - vdd-pdphy-supply
85
86additionalProperties: false
87
88examples:
89  - |
90    #include <dt-bindings/interrupt-controller/arm-gic.h>
91    #include <dt-bindings/usb/pd.h>
92
93    pmic {
94        #address-cells = <1>;
95        #size-cells = <0>;
96
97        pm8150b_typec: typec@1500 {
98            compatible = "qcom,pm8150b-typec";
99            reg = <0x1500>,
100                  <0x1700>;
101
102            interrupts = <0x2 0x15 0x00 IRQ_TYPE_EDGE_RISING>,
103                         <0x2 0x15 0x01 IRQ_TYPE_EDGE_BOTH>,
104                         <0x2 0x15 0x02 IRQ_TYPE_EDGE_RISING>,
105                         <0x2 0x15 0x03 IRQ_TYPE_EDGE_BOTH>,
106                         <0x2 0x15 0x04 IRQ_TYPE_EDGE_RISING>,
107                         <0x2 0x15 0x05 IRQ_TYPE_EDGE_RISING>,
108                         <0x2 0x15 0x06 IRQ_TYPE_EDGE_BOTH>,
109                         <0x2 0x15 0x07 IRQ_TYPE_EDGE_RISING>,
110                         <0x2 0x17 0x00 IRQ_TYPE_EDGE_RISING>,
111                         <0x2 0x17 0x01 IRQ_TYPE_EDGE_RISING>,
112                         <0x2 0x17 0x02 IRQ_TYPE_EDGE_RISING>,
113                         <0x2 0x17 0x03 IRQ_TYPE_EDGE_RISING>,
114                         <0x2 0x17 0x04 IRQ_TYPE_EDGE_RISING>,
115                         <0x2 0x17 0x05 IRQ_TYPE_EDGE_RISING>,
116                         <0x2 0x17 0x06 IRQ_TYPE_EDGE_RISING>,
117                         <0x2 0x17 0x07 IRQ_TYPE_EDGE_RISING>;
118
119            interrupt-names = "or-rid-detect-change",
120                              "vpd-detect",
121                              "cc-state-change",
122                              "vconn-oc",
123                              "vbus-change",
124                              "attach-detach",
125                              "legacy-cable-detect",
126                              "try-snk-src-detect",
127                              "sig-tx",
128                              "sig-rx",
129                              "msg-tx",
130                              "msg-rx",
131                              "msg-tx-failed",
132                              "msg-tx-discarded",
133                              "msg-rx-discarded",
134                              "fr-swap";
135
136            vdd-vbus-supply = <&pm8150b_vbus>;
137            vdd-pdphy-supply = <&vreg_l2a_3p1>;
138
139            connector {
140                compatible = "usb-c-connector";
141
142                power-role = "source";
143                data-role = "dual";
144                self-powered;
145
146                source-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_DUAL_ROLE |
147                               PDO_FIXED_USB_COMM | PDO_FIXED_DATA_SWAP)>;
148
149                ports {
150                    #address-cells = <1>;
151                    #size-cells = <0>;
152
153                    port@0 {
154                        reg = <0>;
155                        pmic_typec_mux_out: endpoint {
156                            remote-endpoint = <&usb_phy_typec_mux_in>;
157                        };
158                    };
159
160                    port@1 {
161                        reg = <1>;
162                        pmic_typec_role_switch_out: endpoint {
163                            remote-endpoint = <&usb_role_switch_in>;
164                        };
165                    };
166                };
167            };
168        };
169    };
170
171    usb {
172        dr_mode = "otg";
173        usb-role-switch;
174        port {
175            usb_role_switch_in: endpoint {
176                remote-endpoint = <&pmic_typec_role_switch_out>;
177            };
178        };
179    };
180
181    usb-phy {
182        orientation-switch;
183        port {
184            usb_phy_typec_mux_in: endpoint {
185                remote-endpoint = <&pmic_typec_mux_out>;
186            };
187        };
188    };
189
190...
191