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