hc
2023-11-06 e3e12f52b214121840b44c91de5b3e5af5d3eb84
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
ROCKCHIP USB2.0 PHY WITH INNO IP BLOCK
 
Required properties (phy (parent) node):
 - compatible : should be one of the listed compatibles:
   * "rockchip,px30-usb2phy"
   * "rockchip,rk3128-usb2phy"
   * "rockchip,rk3228-usb2phy"
   * "rockchip,rk3308-usb2phy"
   * "rockchip,rk3328-usb2phy"
   * "rockchip,rk3366-usb2phy"
   * "rockchip,rk3368-usb2phy"
   * "rockchip,rk3399-usb2phy"
   * "rockchip,rk3528-usb2phy"
   * "rockchip,rk3568-usb2phy"
   * "rockchip,rv1108-usb2phy"
 - reg : the address offset of grf for usb-phy configuration.
 - #clock-cells : should be 0.
 - clock-output-names : specify the 480m output clock name.
 
Optional properties:
 - clocks : phandle + phy specifier pair, for the input clock of phy.
 - clock-names : input clock name of phy, must be "phyclk".
 - assigned-clocks : phandle of usb 480m clock.
 - assigned-clock-parents : parent of usb 480m clock, select between
        usb-phy output 480m and xin24m.
        Refer to clk/clock-bindings.txt for generic clock
        consumer properties.
 - rockchip,usbgrf : phandle to the syscon managing the "usb general
        register files". When set driver will request its
        phandle as one companion-grf for some special SoCs
        (e.g RV1108).
 - rockchip,u2phy-tuning: when set, tuning u2phy to improve usb2 SI.
 - vbus-supply: regulator phandle for vbus power source.
 - wakeup-source: enable USB irq wakeup when suspend.
         only work when suspend wakeup-config is not work.
 
Required nodes : a sub-node is required for each port the phy provides.
        The sub-node name is used to identify host or otg port,
        and shall be the following entries:
   * "otg-port" : the name of otg port.
   * "host-port" : the name of host port.
 
Required properties (port (child) node):
 - #phy-cells : must be 0. See ./phy-bindings.txt for details.
 - interrupts : specify an interrupt for each entry in interrupt-names.
 - interrupt-names : a list which should be one of the following cases:
   Regular case:
   * "otg-id" : for the otg id interrupt.
   * "otg-bvalid" : for the otg vbus interrupt.
   * "linestate" : for the host/otg linestate interrupt.
   Some SoCs use one interrupt with the above muxed together, so for these
   * "otg-mux" : otg-port interrupt, which mux otg-id/otg-bvalid/linestate
       to one.
 
Optional properties:
 - phy-supply : phandle to a regulator that provides power to VBUS.
       See ./phy-bindings.txt for details.
 - rockchip,bypass-uart: when set, indicates that support usb to
       bypass uart feature.
       note: this property can only be added in debug stage.
 - rockchip,utmi-avalid : when set, the usb2 phy will use avalid
       status bit to get vbus status. If not, it will use
       bvalid status bit to get vbus status by default.
 - rockchip,vbus-always-on: when set, indicates that the otg vbus
       is always powered on.
 - rockchip,low-power-mode: when set, the port will enter low power
       state when suspend.
 - rockchip,dis-u2-susphy: when set, disable otg suspend phy.
 
Example:
 
grf: syscon@ff770000 {
   compatible = "rockchip,rk3366-grf", "syscon", "simple-mfd";
   #address-cells = <1>;
   #size-cells = <1>;
 
...
 
   u2phy: usb2-phy@700 {
       compatible = "rockchip,rk3366-usb2phy";
       reg = <0x700 0x2c>;
       #clock-cells = <0>;
       clock-output-names = "sclk_otgphy0_480m";
 
       u2phy_otg: otg-port {
           #phy-cells = <0>;
           interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>,
                    <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>,
                    <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
           interrupt-names = "otg-id", "otg-bvalid", "linestate";
       };
 
       u2phy_host: host-port {
           #phy-cells = <0>;
           interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
           interrupt-names = "linestate";
       };
   };
};
 
Required properties (usb2phy grf node):
 - compatible : should be one of the listed compatibles:
       "rockchip,px30-usb2phy-grf", "syscon", "simple-mfd";
       "rockchip,rk1808-usb2phy-grf", "syscon", "simple-mfd";
       "rockchip,rk3308-usb2phy-grf", "syscon", "simple-mfd";
       "rockchip,rk3328-usb2phy-grf", "syscon", "simple-mfd";
       "rockchip,rk3528-grf", "syscon", "simple-mfd";
       "rockchip,rk3568-usb2phy-grf", "syscon";
 - reg : the address offset of grf for usb-phy configuration.
 - #address-cells : should be 1.
 - #size-cells : should be 1.
 
Required nodes : a sub-node is required for the phy provides.
        The sub-node name is used to identify each phy,
        and shall be the following entries:
 
Example:
 
usb2phy_grf: syscon@ff450000 {
   compatible = "rockchip,rk3328-usb2phy-grf", "syscon",
            "simple-mfd";
   reg = <0x0 0xff450000 0x0 0x10000>;
   #address-cells = <1>;
   #size-cells = <1>;
 
   u2phy: usb2-phy@100 {
       compatible = "rockchip,rk3328-usb2phy";
       reg = <0x100 0x10>;
       clocks = <&xin24m>;
       clock-names = "phyclk";
       #clock-cells = <0>;
       assigned-clocks = <&cru USB480M>;
       assigned-clock-parents = <&u2phy>;
       clock-output-names = "usb480m_phy";
       status = "disabled";
 
       u2phy_host: host-port {
           #phy-cells = <0>;
           interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
           interrupt-names = "linestate";
           status = "disabled";
       };
   };
};