summaryrefslogtreecommitdiffstats
path: root/dts/Bindings/usb/amlogic,meson-g12a-usb-ctrl.yaml
blob: 267fce1659943f78b71982a918f07b61c00a834f (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
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
# Copyright 2019 BayLibre, SAS
%YAML 1.2
---
$id: "http://devicetree.org/schemas/usb/amlogic,meson-g12a-usb-ctrl.yaml#"
$schema: "http://devicetree.org/meta-schemas/core.yaml#"

title: Amlogic Meson G12A DWC3 USB SoC Controller Glue

maintainers:
  - Neil Armstrong <narmstrong@baylibre.com>

description: |
  The Amlogic G12A embeds a DWC3 USB IP Core configured for USB2 and USB3
  in host-only mode, and a DWC2 IP Core configured for USB2 peripheral mode
  only.

  A glue connects the DWC3 core to USB2 PHYs and optionally to an USB3 PHY.

  One of the USB2 PHYs can be re-routed in peripheral mode to a DWC2 USB IP.

  The DWC3 Glue controls the PHY routing and power, an interrupt line is
  connected to the Glue to serve as OTG ID change detection.

properties:
  compatible:
    enum:
      - amlogic,meson-g12a-usb-ctrl

  ranges: true

  "#address-cells":
    enum: [ 1, 2 ]

  "#size-cells":
    enum: [ 1, 2 ]

  clocks:
    minItems: 1

  resets:
    minItems: 1

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  phy-names:
    items:
      - const: usb2-phy0 # USB2 PHY0 if USBHOST_A port is used
      - const: usb2-phy1 # USB2 PHY1 if USBOTG_B port is used
      - const: usb3-phy0 # USB3 PHY if USB3_0 is used

  phys:
    minItems: 1
    maxItems: 3

  dr_mode: true

  power-domains:
    maxItems: 1

  vbus-supply:
    description: VBUS power supply when used in OTG switchable mode

patternProperties:
  "^usb@[0-9a-f]+$":
    type: object

additionalProperties: false

required:
  - compatible
  - "#address-cells"
  - "#size-cells"
  - ranges
  - clocks
  - resets
  - reg
  - interrupts
  - phy-names
  - phys
  - dr_mode

examples:
  - |
    usb: usb@ffe09000 {
          compatible = "amlogic,meson-g12a-usb-ctrl";
          reg = <0x0 0xffe09000 0x0 0xa0>;
          interrupts = <16>;
          #address-cells = <1>;
          #size-cells = <1>;
          ranges;

          clocks = <&clkc_usb>;
          resets = <&reset_usb>;

          dr_mode = "otg";

          phys = <&usb2_phy0>, <&usb2_phy1>, <&usb3_phy0>;
          phy-names = "usb2-phy0", "usb2-phy1", "usb3-phy0";

          dwc2: usb@ff400000 {
              compatible = "amlogic,meson-g12a-usb", "snps,dwc2";
              reg = <0xff400000 0x40000>;
              interrupts = <31>;
              clocks = <&clkc_usb1>;
              clock-names = "otg";
              phys = <&usb2_phy1>;
              dr_mode = "peripheral";
              g-rx-fifo-size = <192>;
              g-np-tx-fifo-size = <128>;
              g-tx-fifo-size = <128 128 16 16 16>;
          };

          dwc3: usb@ff500000 {
              compatible = "snps,dwc3";
              reg = <0xff500000 0x100000>;
              interrupts = <30>;
              dr_mode = "host";
              snps,dis_u2_susphy_quirk;
              snps,quirk-frame-length-adjustment;
          };
    };