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 typec-power-opmode: 97 description: Determines the power operation mode that the Type C connector 98 will support and will advertise through CC pins when it has no power 99 delivery support. 100 - "default" corresponds to default USB voltage and current defined by the 101 USB 2.0 and USB 3.2 specifications, 5V 500mA for USB 2.0 ports and 102 5V 900mA or 1500mA for USB 3.2 ports in single-lane or dual-lane 103 operation respectively. 104 - "1.5A" and "3.0A", 5V 1.5A and 5V 3.0A respectively, as defined in USB 105 Type-C Cable and Connector specification, when Power Delivery is not 106 supported. 107 allOf: 108 - $ref: /schemas/types.yaml#/definitions/string 109 enum: 110 - default 111 - 1.5A 112 - 3.0A 113 114 # The following are optional properties for "usb-c-connector" with power 115 # delivery support. 116 source-pdos: 117 description: An array of u32 with each entry providing supported power 118 source data object(PDO), the detailed bit definitions of PDO can be found 119 in "Universal Serial Bus Power Delivery Specification" chapter 6.4.1.2 120 Source_Capabilities Message, the order of each entry(PDO) should follow 121 the PD spec chapter 6.4.1. Required for power source and power dual role. 122 User can specify the source PDO array via PDO_FIXED/BATT/VAR/PPS_APDO() 123 defined in dt-bindings/usb/pd.h. 124 minItems: 1 125 maxItems: 7 126 $ref: /schemas/types.yaml#/definitions/uint32-array 127 128 sink-pdos: 129 description: An array of u32 with each entry providing supported power sink 130 data object(PDO), the detailed bit definitions of PDO can be found in 131 "Universal Serial Bus Power Delivery Specification" chapter 6.4.1.3 132 Sink Capabilities Message, the order of each entry(PDO) should follow the 133 PD spec chapter 6.4.1. Required for power sink and power dual role. User 134 can specify the sink PDO array via PDO_FIXED/BATT/VAR/PPS_APDO() defined 135 in dt-bindings/usb/pd.h. 136 minItems: 1 137 maxItems: 7 138 $ref: /schemas/types.yaml#/definitions/uint32-array 139 140 sink-vdos: 141 description: An array of u32 with each entry (VDM Objects) providing additional information 142 corresponding to the product, the detailed bit definitions and the order of each VDO can be 143 found in "USB Power Delivery Specification Revision 3.0, Version 2.0 + ECNs 2020-12-10" 144 chapter 6.4.4.3.1 Discover Identity. User can specify the VDO array via 145 VDO_IDH/_CERT/_PRODUCT/_UFP/_DFP/_PCABLE/_ACABLE(1/2)/_VPD() defined in 146 dt-bindings/usb/pd.h. 147 minItems: 3 148 maxItems: 6 149 $ref: /schemas/types.yaml#/definitions/uint32-array 150 151 op-sink-microwatt: 152 description: Sink required operating power in microwatt, if source can't 153 offer the power, Capability Mismatch is set. Required for power sink and 154 power dual role. 155 156 ports: 157 description: OF graph bindings (specified in bindings/graph.txt) that model 158 any data bus to the connector unless the bus is between parent node and 159 the connector. Since a single connector can have multiple data buses every 160 bus has an assigned OF graph port number as described below. 161 type: object 162 properties: 163 port@0: 164 type: object 165 description: High Speed (HS), present in all connectors. 166 167 port@1: 168 type: object 169 description: Super Speed (SS), present in SS capable connectors. 170 171 port@2: 172 type: object 173 description: Sideband Use (SBU), present in USB-C. This describes the 174 alternate mode connection of which SBU is a part. 175 176 required: 177 - port@0 178 179 new-source-frs-typec-current: 180 description: Initial current capability of the new source when vSafe5V 181 is applied during PD3.0 Fast Role Swap. "Table 6-14 Fixed Supply PDO - Sink" 182 of "USB Power Delivery Specification Revision 3.0, Version 1.2" provides the 183 different power levels and "6.4.1.3.1.6 Fast Role Swap USB Type-C Current" 184 provides a detailed description of the field. The sink PDO from current source 185 reflects the current source's(i.e. transmitter of the FRS signal) power 186 requirement during fr swap. The current sink (i.e. receiver of the FRS signal), 187 a.k.a new source, should check if it will be able to satisfy the current source's, 188 new sink's, requirement during frswap before enabling the frs signal reception. 189 This property refers to maximum current capability that the current sink can 190 satisfy. During FRS, VBUS voltage is at 5V, as the partners are in implicit 191 contract, hence, the power level is only a function of the current capability. 192 "1" refers to default USB power level as described by "Table 6-14 Fixed Supply PDO - Sink". 193 "2" refers to 1.5A@5V. 194 "3" refers to 3.0A@5V. 195 $ref: /schemas/types.yaml#/definitions/uint32 196 enum: [1, 2, 3] 197 198required: 199 - compatible 200 201allOf: 202 - if: 203 properties: 204 compatible: 205 contains: 206 const: gpio-usb-b-connector 207 then: 208 anyOf: 209 - required: 210 - vbus-gpios 211 - required: 212 - id-gpios 213 214 - if: 215 properties: 216 compatible: 217 contains: 218 const: samsung,usb-connector-11pin 219 then: 220 properties: 221 type: 222 const: micro 223 224anyOf: 225 - not: 226 required: 227 - typec-power-opmode 228 - new-source-frs-typec-current 229 230additionalProperties: true 231 232examples: 233 # Micro-USB connector with HS lines routed via controller (MUIC). 234 - | 235 muic-max77843 { 236 usb_con1: connector { 237 compatible = "usb-b-connector"; 238 label = "micro-USB"; 239 type = "micro"; 240 }; 241 }; 242 243 # USB-C connector attached to CC controller (s2mm005), HS lines routed 244 # to companion PMIC (max77865), SS lines to USB3 PHY and SBU to DisplayPort. 245 # DisplayPort video lines are routed to the connector via SS mux in USB3 PHY. 246 - | 247 ccic: s2mm005 { 248 usb_con2: connector { 249 compatible = "usb-c-connector"; 250 label = "USB-C"; 251 252 ports { 253 #address-cells = <1>; 254 #size-cells = <0>; 255 256 port@0 { 257 reg = <0>; 258 usb_con_hs: endpoint { 259 remote-endpoint = <&max77865_usbc_hs>; 260 }; 261 }; 262 port@1 { 263 reg = <1>; 264 usb_con_ss: endpoint { 265 remote-endpoint = <&usbdrd_phy_ss>; 266 }; 267 }; 268 port@2 { 269 reg = <2>; 270 usb_con_sbu: endpoint { 271 remote-endpoint = <&dp_aux>; 272 }; 273 }; 274 }; 275 }; 276 }; 277 278 # USB-C connector attached to a typec port controller(ptn5110), which has 279 # power delivery support and enables drp. 280 - | 281 #include <dt-bindings/usb/pd.h> 282 typec: ptn5110 { 283 usb_con3: connector { 284 compatible = "usb-c-connector"; 285 label = "USB-C"; 286 power-role = "dual"; 287 try-power-role = "sink"; 288 source-pdos = <PDO_FIXED(5000, 2000, PDO_FIXED_USB_COMM)>; 289 sink-pdos = <PDO_FIXED(5000, 2000, PDO_FIXED_USB_COMM) 290 PDO_VAR(5000, 12000, 2000)>; 291 op-sink-microwatt = <10000000>; 292 }; 293 }; 294 295 # USB-C connector attached to SoC and USB3 typec port controller(hd3ss3220) 296 # with SS 2:1 MUX. HS lines routed to SoC, SS lines routed to the MUX and 297 # the output of MUX is connected to the SoC. 298 - | 299 connector { 300 compatible = "usb-c-connector"; 301 label = "USB-C"; 302 data-role = "dual"; 303 304 ports { 305 #address-cells = <1>; 306 #size-cells = <0>; 307 port@0 { 308 reg = <0>; 309 hs_ep: endpoint { 310 remote-endpoint = <&usb3_hs_ep>; 311 }; 312 }; 313 port@1 { 314 reg = <1>; 315 ss_ep: endpoint { 316 remote-endpoint = <&hd3ss3220_in_ep>; 317 }; 318 }; 319 }; 320 }; 321 322 # USB connector with GPIO control lines 323 - | 324 #include <dt-bindings/gpio/gpio.h> 325 326 usb { 327 connector { 328 compatible = "gpio-usb-b-connector", "usb-b-connector"; 329 type = "micro"; 330 id-gpios = <&pio 12 GPIO_ACTIVE_HIGH>; 331 vbus-supply = <&usb_p0_vbus>; 332 }; 333 }; 334 335 # Micro-USB connector with HS lines routed via controller (MUIC) and MHL 336 # lines connected to HDMI-MHL bridge (sii8620) on Samsung Exynos5433-based 337 # mobile phone 338 - | 339 muic-max77843 { 340 usb_con4: connector { 341 compatible = "samsung,usb-connector-11pin", "usb-b-connector"; 342 label = "micro-USB"; 343 type = "micro"; 344 345 ports { 346 #address-cells = <1>; 347 #size-cells = <0>; 348 349 port@0 { 350 reg = <0>; 351 muic_to_usb: endpoint { 352 remote-endpoint = <&usb_to_muic>; 353 }; 354 }; 355 port@3 { 356 reg = <3>; 357 usb_con_mhl: endpoint { 358 remote-endpoint = <&sii8620_mhl>; 359 }; 360 }; 361 }; 362 }; 363 }; 364