1# SPDX-License-Identifier: GPL-2.0-only 2%YAML 1.2 3--- 4$id: http://devicetree.org/schemas/connector/usb-connector.yaml# 5$schema: http://devicetree.org/meta-schemas/core.yaml# 6 7title: USB Connector 8 9maintainers: 10 - Rob Herring <robh@kernel.org> 11 12description: 13 A USB connector node represents a physical USB connector. It should be a child 14 of a USB interface controller or a separate node when it is attached to both 15 MUX and USB interface controller. 16 17properties: 18 compatible: 19 oneOf: 20 - enum: 21 - usb-a-connector 22 - usb-b-connector 23 - usb-c-connector 24 25 - items: 26 - const: gpio-usb-b-connector 27 - const: usb-b-connector 28 29 - items: 30 - const: samsung,usb-connector-11pin 31 - const: usb-b-connector 32 33 label: 34 description: Symbolic name for the connector. 35 36 type: 37 description: Size of the connector, should be specified in case of 38 non-fullsize 'usb-a-connector' or 'usb-b-connector' compatible 39 connectors. 40 $ref: /schemas/types.yaml#definitions/string 41 42 enum: 43 - mini 44 - micro 45 46 self-powered: 47 description: Set this property if the USB device has its own power source. 48 type: boolean 49 50 # The following are optional properties for "usb-b-connector". 51 id-gpios: 52 description: An input gpio for USB ID pin. 53 maxItems: 1 54 55 vbus-gpios: 56 description: An input gpio for USB VBus pin, used to detect presence of 57 VBUS 5V. 58 maxItems: 1 59 60 vbus-supply: 61 description: A phandle to the regulator for USB VBUS if needed when host 62 mode or dual role mode is supported. 63 Particularly, if use an output GPIO to control a VBUS regulator, should 64 model it as a regulator. See bindings/regulator/fixed-regulator.yaml 65 66 # The following are optional properties for "usb-c-connector". 67 power-role: 68 description: Determines the power role that the Type C connector will 69 support. "dual" refers to Dual Role Port (DRP). 70 $ref: /schemas/types.yaml#definitions/string 71 72 enum: 73 - source 74 - sink 75 - dual 76 77 try-power-role: 78 description: Preferred power role. 79 $ref: /schemas/types.yaml#definitions/string 80 81 enum: 82 - source 83 - sink 84 - dual 85 86 data-role: 87 description: Data role if Type C connector supports USB data. "dual" refers 88 Dual Role Device (DRD). 89 $ref: /schemas/types.yaml#definitions/string 90 91 enum: 92 - host 93 - device 94 - dual 95 96 # The following are optional properties for "usb-c-connector" with power 97 # delivery support. 98 source-pdos: 99 description: An array of u32 with each entry providing supported power 100 source data object(PDO), the detailed bit definitions of PDO can be found 101 in "Universal Serial Bus Power Delivery Specification" chapter 6.4.1.2 102 Source_Capabilities Message, the order of each entry(PDO) should follow 103 the PD spec chapter 6.4.1. Required for power source and power dual role. 104 User can specify the source PDO array via PDO_FIXED/BATT/VAR/PPS_APDO() 105 defined in dt-bindings/usb/pd.h. 106 minItems: 1 107 maxItems: 7 108 $ref: /schemas/types.yaml#/definitions/uint32-array 109 110 sink-pdos: 111 description: An array of u32 with each entry providing supported power sink 112 data object(PDO), the detailed bit definitions of PDO can be found in 113 "Universal Serial Bus Power Delivery Specification" chapter 6.4.1.3 114 Sink Capabilities Message, the order of each entry(PDO) should follow the 115 PD spec chapter 6.4.1. Required for power sink and power dual role. User 116 can specify the sink PDO array via PDO_FIXED/BATT/VAR/PPS_APDO() defined 117 in dt-bindings/usb/pd.h. 118 minItems: 1 119 maxItems: 7 120 $ref: /schemas/types.yaml#/definitions/uint32-array 121 122 op-sink-microwatt: 123 description: Sink required operating power in microwatt, if source can't 124 offer the power, Capability Mismatch is set. Required for power sink and 125 power dual role. 126 127 ports: 128 description: OF graph bindings (specified in bindings/graph.txt) that model 129 any data bus to the connector unless the bus is between parent node and 130 the connector. Since a single connector can have multiple data buses every 131 bus has an assigned OF graph port number as described below. 132 type: object 133 properties: 134 port@0: 135 type: object 136 description: High Speed (HS), present in all connectors. 137 138 port@1: 139 type: object 140 description: Super Speed (SS), present in SS capable connectors. 141 142 port@2: 143 type: object 144 description: Sideband Use (SBU), present in USB-C. This describes the 145 alternate mode connection of which SBU is a part. 146 147 required: 148 - port@0 149 150 new-source-frs-typec-current: 151 description: Initial current capability of the new source when vSafe5V 152 is applied during PD3.0 Fast Role Swap. "Table 6-14 Fixed Supply PDO - Sink" 153 of "USB Power Delivery Specification Revision 3.0, Version 1.2" provides the 154 different power levels and "6.4.1.3.1.6 Fast Role Swap USB Type-C Current" 155 provides a detailed description of the field. The sink PDO from current source 156 reflects the current source's(i.e. transmitter of the FRS signal) power 157 requirement during fr swap. The current sink (i.e. receiver of the FRS signal), 158 a.k.a new source, should check if it will be able to satisfy the current source's, 159 new sink's, requirement during frswap before enabling the frs signal reception. 160 This property refers to maximum current capability that the current sink can 161 satisfy. During FRS, VBUS voltage is at 5V, as the partners are in implicit 162 contract, hence, the power level is only a function of the current capability. 163 "1" refers to default USB power level as described by "Table 6-14 Fixed Supply PDO - Sink". 164 "2" refers to 1.5A@5V. 165 "3" refers to 3.0A@5V. 166 $ref: /schemas/types.yaml#/definitions/uint32 167 enum: [1, 2, 3] 168 169required: 170 - compatible 171 172allOf: 173 - if: 174 properties: 175 compatible: 176 contains: 177 const: gpio-usb-b-connector 178 then: 179 anyOf: 180 - required: 181 - vbus-gpios 182 - required: 183 - id-gpios 184 185 - if: 186 properties: 187 compatible: 188 contains: 189 const: samsung,usb-connector-11pin 190 then: 191 properties: 192 type: 193 const: micro 194 195additionalProperties: true 196 197examples: 198 # Micro-USB connector with HS lines routed via controller (MUIC). 199 - | 200 muic-max77843 { 201 usb_con1: connector { 202 compatible = "usb-b-connector"; 203 label = "micro-USB"; 204 type = "micro"; 205 }; 206 }; 207 208 # USB-C connector attached to CC controller (s2mm005), HS lines routed 209 # to companion PMIC (max77865), SS lines to USB3 PHY and SBU to DisplayPort. 210 # DisplayPort video lines are routed to the connector via SS mux in USB3 PHY. 211 - | 212 ccic: s2mm005 { 213 usb_con2: connector { 214 compatible = "usb-c-connector"; 215 label = "USB-C"; 216 217 ports { 218 #address-cells = <1>; 219 #size-cells = <0>; 220 221 port@0 { 222 reg = <0>; 223 usb_con_hs: endpoint { 224 remote-endpoint = <&max77865_usbc_hs>; 225 }; 226 }; 227 port@1 { 228 reg = <1>; 229 usb_con_ss: endpoint { 230 remote-endpoint = <&usbdrd_phy_ss>; 231 }; 232 }; 233 port@2 { 234 reg = <2>; 235 usb_con_sbu: endpoint { 236 remote-endpoint = <&dp_aux>; 237 }; 238 }; 239 }; 240 }; 241 }; 242 243 # USB-C connector attached to a typec port controller(ptn5110), which has 244 # power delivery support and enables drp. 245 - | 246 #include <dt-bindings/usb/pd.h> 247 typec: ptn5110 { 248 usb_con3: connector { 249 compatible = "usb-c-connector"; 250 label = "USB-C"; 251 power-role = "dual"; 252 try-power-role = "sink"; 253 source-pdos = <PDO_FIXED(5000, 2000, PDO_FIXED_USB_COMM)>; 254 sink-pdos = <PDO_FIXED(5000, 2000, PDO_FIXED_USB_COMM) 255 PDO_VAR(5000, 12000, 2000)>; 256 op-sink-microwatt = <10000000>; 257 }; 258 }; 259 260 # USB-C connector attached to SoC and USB3 typec port controller(hd3ss3220) 261 # with SS 2:1 MUX. HS lines routed to SoC, SS lines routed to the MUX and 262 # the output of MUX is connected to the SoC. 263 - | 264 connector { 265 compatible = "usb-c-connector"; 266 label = "USB-C"; 267 data-role = "dual"; 268 269 ports { 270 #address-cells = <1>; 271 #size-cells = <0>; 272 port@0 { 273 reg = <0>; 274 hs_ep: endpoint { 275 remote-endpoint = <&usb3_hs_ep>; 276 }; 277 }; 278 port@1 { 279 reg = <1>; 280 ss_ep: endpoint { 281 remote-endpoint = <&hd3ss3220_in_ep>; 282 }; 283 }; 284 }; 285 }; 286 287 # USB connector with GPIO control lines 288 - | 289 #include <dt-bindings/gpio/gpio.h> 290 291 usb { 292 connector { 293 compatible = "gpio-usb-b-connector", "usb-b-connector"; 294 type = "micro"; 295 id-gpios = <&pio 12 GPIO_ACTIVE_HIGH>; 296 vbus-supply = <&usb_p0_vbus>; 297 }; 298 }; 299 300 # Micro-USB connector with HS lines routed via controller (MUIC) and MHL 301 # lines connected to HDMI-MHL bridge (sii8620) on Samsung Exynos5433-based 302 # mobile phone 303 - | 304 muic-max77843 { 305 usb_con4: connector { 306 compatible = "samsung,usb-connector-11pin", "usb-b-connector"; 307 label = "micro-USB"; 308 type = "micro"; 309 310 ports { 311 #address-cells = <1>; 312 #size-cells = <0>; 313 314 port@0 { 315 reg = <0>; 316 muic_to_usb: endpoint { 317 remote-endpoint = <&usb_to_muic>; 318 }; 319 }; 320 port@3 { 321 reg = <3>; 322 usb_con_mhl: endpoint { 323 remote-endpoint = <&sii8620_mhl>; 324 }; 325 }; 326 }; 327 }; 328 }; 329