summaryrefslogtreecommitdiff
path: root/Documentation/devicetree/bindings/connector/usb-connector.yaml
blob: 28660b931d0c3606a66a482c76bd343a8fb7e1e9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
# SPDX-License-Identifier: GPL-2.0-only
%YAML 1.2
---
$id: http://devicetree.org/schemas/connector/usb-connector.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: USB Connector

maintainers:
  - Rob Herring <robh@kernel.org>

description:
  A USB connector node represents a physical USB connector. It should be a child
  of a USB interface controller or a separate node when it is attached to both
  MUX and USB interface controller.

properties:
  compatible:
    oneOf:
      - enum:
          - usb-a-connector
          - usb-b-connector
          - usb-c-connector

      - items:
          - const: gpio-usb-b-connector
          - const: usb-b-connector

      - items:
          - const: samsung,usb-connector-11pin
          - const: usb-b-connector

  reg:
    maxItems: 1

  label:
    description: Symbolic name for the connector.

  type:
    description: Size of the connector, should be specified in case of
      non-fullsize 'usb-a-connector' or 'usb-b-connector' compatible
      connectors.
    $ref: /schemas/types.yaml#/definitions/string

    enum:
      - mini
      - micro

  self-powered:
    description: Set this property if the USB device has its own power source.
    type: boolean

  # The following are optional properties for "usb-b-connector".
  id-gpios:
    description: An input gpio for USB ID pin.
    maxItems: 1

  vbus-gpios:
    description: An input gpio for USB VBus pin, used to detect presence of
      VBUS 5V.
    maxItems: 1

  vbus-supply:
    description: A phandle to the regulator for USB VBUS if needed when host
      mode or dual role mode is supported.
      Particularly, if use an output GPIO to control a VBUS regulator, should
      model it as a regulator. See bindings/regulator/fixed-regulator.yaml

  # The following are optional properties for "usb-c-connector".
  power-role:
    description: Determines the power role that the Type C connector will
      support. "dual" refers to Dual Role Port (DRP).
    $ref: /schemas/types.yaml#/definitions/string

    enum:
      - source
      - sink
      - dual

  try-power-role:
    description: Preferred power role.
    $ref: /schemas/types.yaml#/definitions/string

    enum:
      - source
      - sink
      - dual

  data-role:
    description: Data role if Type C connector supports USB data. "dual" refers
      Dual Role Device (DRD).
    $ref: /schemas/types.yaml#/definitions/string

    enum:
      - host
      - device
      - dual

  typec-power-opmode:
    description: Determines the power operation mode that the Type C connector
      will support and will advertise through CC pins when it has no power
      delivery support.
      - "default" corresponds to default USB voltage and current defined by the
        USB 2.0 and USB 3.2 specifications, 5V 500mA for USB 2.0 ports and
        5V 900mA or 1500mA for USB 3.2 ports in single-lane or dual-lane
        operation respectively.
      - "1.5A" and "3.0A", 5V 1.5A and 5V 3.0A respectively, as defined in USB
        Type-C Cable and Connector specification, when Power Delivery is not
        supported.
    $ref: /schemas/types.yaml#/definitions/string
    enum:
      - default
      - 1.5A
      - 3.0A

  pd-disable:
    description: Set this property if the Type-C connector has no power delivery support.
    type: boolean

  # The following are optional properties for "usb-c-connector" with power
  # delivery support.
  source-pdos:
    description: An array of u32 with each entry providing supported power
      source data object(PDO), the detailed bit definitions of PDO can be found
      in "Universal Serial Bus Power Delivery Specification" chapter 6.4.1.2
      Source_Capabilities Message, the order of each entry(PDO) should follow
      the PD spec chapter 6.4.1. Required for power source and power dual role.
      User can specify the source PDO array via PDO_FIXED/BATT/VAR/PPS_APDO()
      defined in dt-bindings/usb/pd.h.
    minItems: 1
    maxItems: 7
    $ref: /schemas/types.yaml#/definitions/uint32-array

  sink-pdos:
    description: An array of u32 with each entry providing supported power sink
      data object(PDO), the detailed bit definitions of PDO can be found in
      "Universal Serial Bus Power Delivery Specification" chapter 6.4.1.3
      Sink Capabilities Message, the order of each entry(PDO) should follow the
      PD spec chapter 6.4.1. Required for power sink and power dual role. User
      can specify the sink PDO array via PDO_FIXED/BATT/VAR/PPS_APDO() defined
      in dt-bindings/usb/pd.h.
    minItems: 1
    maxItems: 7
    $ref: /schemas/types.yaml#/definitions/uint32-array

  sink-vdos:
    description: An array of u32 with each entry, a Vendor Defined Message Object (VDO),
      providing additional information corresponding to the product, the detailed bit
      definitions and the order of each VDO can be found in
      "USB Power Delivery Specification Revision 3.0, Version 2.0 + ECNs 2020-12-10"
      chapter 6.4.4.3.1 Discover Identity. User can specify the VDO array via
      VDO_IDH/_CERT/_PRODUCT/_UFP/_DFP/_PCABLE/_ACABLE(1/2)/_VPD() defined in
      dt-bindings/usb/pd.h.
    minItems: 3
    maxItems: 6
    $ref: /schemas/types.yaml#/definitions/uint32-array

  sink-vdos-v1:
    description: An array of u32 with each entry, a Vendor Defined Message Object (VDO),
      providing additional information corresponding to the product, the detailed bit
      definitions and the order of each VDO can be found in
      "USB Power Delivery Specification Revision 2.0, Version 1.3" chapter 6.4.4.3.1 Discover
      Identity. User can specify the VDO array via VDO_IDH/_CERT/_PRODUCT/_CABLE/_AMA defined in
      dt-bindings/usb/pd.h.
    minItems: 3
    maxItems: 6
    $ref: /schemas/types.yaml#/definitions/uint32-array

  op-sink-microwatt:
    description: Sink required operating power in microwatt, if source can't
      offer the power, Capability Mismatch is set. Required for power sink and
      power dual role.

  altmodes:
    type: object
    description: List of Alternative Modes supported by the schematics on the
      particular device. This is only necessary if there are no other means to
      discover supported alternative modes (e.g. through the UCSI firmware
      interface).

    additionalProperties: false

    patternProperties:
      "^(displayport)$":
        type: object
        description:
          A single USB-C Alternative Mode as supported by the USB-C connector logic.

        additionalProperties: false

        properties:
          svid:
            $ref: /schemas/types.yaml#/definitions/uint16
            description: Unique value assigned by USB-IF to the Vendor / AltMode.
            enum: [ 0xff01 ]
          vdo:
            $ref: /schemas/types.yaml#/definitions/uint32
            description: VDO returned by Discover Modes USB PD command.

  port:
    $ref: /schemas/graph.yaml#/properties/port
    description: OF graph bindings modeling a data bus to the connector, e.g.
      there is a single High Speed (HS) port present in this connector. If there
      is more than one bus (several port, with 'reg' property), they can be grouped
      under 'ports'.

  ports:
    $ref: /schemas/graph.yaml#/properties/ports
    description: OF graph bindings modeling any data bus to the connector
      unless the bus is between parent node and the connector. Since a single
      connector can have multiple data buses every bus has an assigned OF graph
      port number as described below.

    properties:
      port@0:
        $ref: /schemas/graph.yaml#/properties/port
        description: High Speed (HS), present in all connectors.

      port@1:
        $ref: /schemas/graph.yaml#/properties/port
        description: Super Speed (SS), present in SS capable connectors.

      port@2:
        $ref: /schemas/graph.yaml#/properties/port
        description: Sideband Use (SBU), present in USB-C. This describes the
          alternate mode connection of which SBU is a part.

    required:
      - port@0

  new-source-frs-typec-current:
    description: Initial current capability of the new source when vSafe5V
      is applied during PD3.0 Fast Role Swap. "Table 6-14 Fixed Supply PDO - Sink"
      of "USB Power Delivery Specification Revision 3.0, Version 1.2" provides the
      different power levels and "6.4.1.3.1.6 Fast Role Swap USB Type-C Current"
      provides a detailed description of the field. The sink PDO from current source
      reflects the current source's(i.e. transmitter of the FRS signal) power
      requirement during fr swap. The current sink (i.e. receiver of the FRS signal),
      a.k.a new source, should check if it will be able to satisfy the current source's,
      new sink's, requirement during frswap before enabling the frs signal reception.
      This property refers to maximum current capability that the current sink can
      satisfy. During FRS, VBUS voltage is at 5V, as the partners are in implicit
      contract, hence, the power level is only a function of the current capability.
      "1" refers to default USB power level as described by "Table 6-14 Fixed Supply PDO - Sink".
      "2" refers to 1.5A@5V.
      "3" refers to 3.0A@5V.
    $ref: /schemas/types.yaml#/definitions/uint32
    enum: [1, 2, 3]

  slow-charger-loop:
    description: Allows PMIC charger loops which are slow(i.e. cannot meet the 15ms deadline) to
      still comply to pSnkStby i.e Maximum power that can be consumed by sink while in Sink Standby
      state as defined in 7.4.2 Sink Electrical Parameters of USB Power Delivery Specification
      Revision 3.0, Version 1.2. When the property is set, the port requests pSnkStby(2.5W -
      5V@500mA) upon entering SNK_DISCOVERY(instead of 3A or the 1.5A, Rp current advertised, during
      SNK_DISCOVERY) and the actual current limit after reception of PS_Ready for PD link or during
      SNK_READY for non-pd link.
    type: boolean

dependencies:
  sink-vdos-v1: [ sink-vdos ]
  sink-vdos: [ sink-vdos-v1 ]

required:
  - compatible

allOf:
  - if:
      properties:
        compatible:
          contains:
            const: gpio-usb-b-connector
    then:
      anyOf:
        - required:
            - vbus-gpios
        - required:
            - id-gpios

  - if:
      properties:
        compatible:
          contains:
            const: samsung,usb-connector-11pin
    then:
      properties:
        type:
          const: micro

anyOf:
  - not:
      required:
        - typec-power-opmode
        - new-source-frs-typec-current

additionalProperties: false

examples:
  # Micro-USB connector with HS lines routed via controller (MUIC).
  - |
    muic-max77843 {
        usb_con1: connector {
            compatible = "usb-b-connector";
            label = "micro-USB";
            type = "micro";
        };
    };

  # USB-C connector attached to CC controller (s2mm005), HS lines routed
  # to companion PMIC (max77865), SS lines to USB3 PHY and SBU to DisplayPort.
  # DisplayPort video lines are routed to the connector via SS mux in USB3 PHY.
  - |
    ccic: s2mm005 {
        usb_con2: connector {
            compatible = "usb-c-connector";
            label = "USB-C";

            altmodes {
                displayport {
                    svid = /bits/ 16 <0xff01>;
                    vdo = <0x00001c46>;
                };
            };

            ports {
                #address-cells = <1>;
                #size-cells = <0>;

                port@0 {
                    reg = <0>;
                    usb_con_hs: endpoint {
                        remote-endpoint = <&max77865_usbc_hs>;
                    };
                };
                port@1 {
                    reg = <1>;
                    usb_con_ss: endpoint {
                        remote-endpoint = <&usbdrd_phy_ss>;
                    };
                };
                port@2 {
                    reg = <2>;
                    usb_con_sbu: endpoint {
                        remote-endpoint = <&dp_aux>;
                    };
                };
            };
        };
    };

  # USB-C connector attached to a typec port controller(ptn5110), which has
  # power delivery support and enables drp.
  - |
    #include <dt-bindings/usb/pd.h>
    typec: ptn5110 {
        usb_con3: connector {
            compatible = "usb-c-connector";
            label = "USB-C";
            power-role = "dual";
            try-power-role = "sink";
            source-pdos = <PDO_FIXED(5000, 2000, PDO_FIXED_USB_COMM)>;
            sink-pdos = <PDO_FIXED(5000, 2000, PDO_FIXED_USB_COMM)
                         PDO_VAR(5000, 12000, 2000)>;
            op-sink-microwatt = <10000000>;
        };
    };

  # USB-C connector attached to SoC with a single High-Speed controller
  - |
    connector {
        compatible = "usb-c-connector";
        label = "USB-C";

        port {
            high_speed_ep: endpoint {
                remote-endpoint = <&usb_hs_ep>;
            };
        };
    };

  # USB-C connector attached to SoC and USB3 typec port controller(hd3ss3220)
  # with SS 2:1 MUX. HS lines routed to SoC, SS lines routed to the MUX and
  # the output of MUX is connected to the SoC.
  - |
    connector {
        compatible = "usb-c-connector";
        label = "USB-C";
        data-role = "dual";

        ports {
            #address-cells = <1>;
            #size-cells = <0>;
            port@0 {
                reg = <0>;
                hs_ep: endpoint {
                    remote-endpoint = <&usb3_hs_ep>;
                };
            };
            port@1 {
                reg = <1>;
                ss_ep: endpoint {
                    remote-endpoint = <&hd3ss3220_in_ep>;
                };
            };
        };
    };

  # USB connector with GPIO control lines
  - |
    #include <dt-bindings/gpio/gpio.h>

    usb {
        connector {
            compatible = "gpio-usb-b-connector", "usb-b-connector";
            type = "micro";
            id-gpios = <&pio 12 GPIO_ACTIVE_HIGH>;
            vbus-supply = <&usb_p0_vbus>;
        };
    };

  # Micro-USB connector with HS lines routed via controller (MUIC) and MHL
  # lines connected to HDMI-MHL bridge (sii8620) on Samsung Exynos5433-based
  # mobile phone
  - |
    muic-max77843 {
        usb_con4: connector {
            compatible = "samsung,usb-connector-11pin", "usb-b-connector";
            label = "micro-USB";
            type = "micro";

            ports {
                #address-cells = <1>;
                #size-cells = <0>;

                port@0 {
                    reg = <0>;
                    muic_to_usb: endpoint {
                        remote-endpoint = <&usb_to_muic>;
                    };
                };
                port@3 {
                    reg = <3>;
                    usb_con_mhl: endpoint {
                        remote-endpoint = <&sii8620_mhl>;
                    };
                };
            };
        };
    };