GNU Linux-libre 6.1.90-gnu
[releases.git] / arch / mips / boot / dts / qca / ar9331.dtsi
1 // SPDX-License-Identifier: GPL-2.0
2 #include <dt-bindings/clock/ath79-clk.h>
3
4 / {
5         compatible = "qca,ar9331";
6
7         #address-cells = <1>;
8         #size-cells = <1>;
9
10         cpus {
11                 #address-cells = <1>;
12                 #size-cells = <0>;
13
14                 cpu@0 {
15                         device_type = "cpu";
16                         compatible = "mips,mips24Kc";
17                         clocks = <&pll ATH79_CLK_CPU>;
18                         reg = <0>;
19                 };
20         };
21
22         cpuintc: interrupt-controller {
23                 compatible = "qca,ar7100-cpu-intc";
24
25                 interrupt-controller;
26                 #interrupt-cells = <1>;
27
28                 qca,ddr-wb-channel-interrupts = <2>, <3>;
29                 qca,ddr-wb-channels = <&ddr_ctrl 3>, <&ddr_ctrl 2>;
30         };
31
32         ref: ref {
33                 compatible = "fixed-clock";
34                 #clock-cells = <0>;
35         };
36
37         ahb {
38                 compatible = "simple-bus";
39                 ranges;
40
41                 #address-cells = <1>;
42                 #size-cells = <1>;
43
44                 interrupt-parent = <&cpuintc>;
45
46                 apb {
47                         compatible = "simple-bus";
48                         ranges;
49
50                         #address-cells = <1>;
51                         #size-cells = <1>;
52
53                         interrupt-parent = <&miscintc>;
54
55                         ddr_ctrl: memory-controller@18000000 {
56                                 compatible = "qca,ar7240-ddr-controller";
57                                 reg = <0x18000000 0x100>;
58
59                                 #qca,ddr-wb-channel-cells = <1>;
60                         };
61
62                         uart: serial@18020000 {
63                                 compatible = "qca,ar9330-uart";
64                                 reg = <0x18020000 0x14>;
65
66                                 interrupts = <3>;
67
68                                 clocks = <&ref>;
69                                 clock-names = "uart";
70
71                                 status = "disabled";
72                         };
73
74                         gpio: gpio@18040000 {
75                                 compatible = "qca,ar7100-gpio";
76                                 reg = <0x18040000 0x34>;
77                                 interrupts = <2>;
78
79                                 ngpios = <30>;
80
81                                 gpio-controller;
82                                 #gpio-cells = <2>;
83
84                                 interrupt-controller;
85                                 #interrupt-cells = <2>;
86
87                                 status = "disabled";
88                         };
89
90                         pll: pll-controller@18050000 {
91                                 compatible = "qca,ar9330-pll";
92                                 reg = <0x18050000 0x100>;
93
94                                 clocks = <&ref>;
95                                 clock-names = "ref";
96
97                                 #clock-cells = <1>;
98                         };
99
100                         miscintc: interrupt-controller@18060010 {
101                                 compatible = "qca,ar7240-misc-intc";
102                                 reg = <0x18060010 0x8>;
103
104                                 interrupt-parent = <&cpuintc>;
105                                 interrupts = <6>;
106
107                                 interrupt-controller;
108                                 #interrupt-cells = <1>;
109                         };
110
111                         rst: reset-controller@1806001c {
112                                 compatible = "qca,ar7100-reset";
113                                 reg = <0x1806001c 0x4>;
114
115                                 #reset-cells = <1>;
116                         };
117                 };
118
119                 eth0: ethernet@19000000 {
120                         compatible = "qca,ar9330-eth";
121                         reg = <0x19000000 0x200>;
122                         interrupts = <4>;
123
124                         resets = <&rst 9>, <&rst 22>;
125                         reset-names = "mac", "mdio";
126                         clocks = <&pll ATH79_CLK_AHB>, <&pll ATH79_CLK_AHB>;
127                         clock-names = "eth", "mdio";
128
129                         phy-mode = "mii";
130                         phy-handle = <&phy_port4>;
131
132                         status = "disabled";
133                 };
134
135                 eth1: ethernet@1a000000 {
136                         compatible = "qca,ar9330-eth";
137                         reg = <0x1a000000 0x200>;
138                         interrupts = <5>;
139                         resets = <&rst 13>, <&rst 23>;
140                         reset-names = "mac", "mdio";
141                         clocks = <&pll ATH79_CLK_AHB>, <&pll ATH79_CLK_AHB>;
142                         clock-names = "eth", "mdio";
143
144                         phy-mode = "gmii";
145
146                         status = "disabled";
147
148                         fixed-link {
149                                 speed = <1000>;
150                                 full-duplex;
151                                 pause;
152                         };
153
154                         mdio {
155                                 #address-cells = <1>;
156                                 #size-cells = <0>;
157
158                                 switch10: switch@10 {
159                                         #address-cells = <1>;
160                                         #size-cells = <0>;
161
162                                         compatible = "qca,ar9331-switch";
163                                         reg = <0x10>;
164                                         resets = <&rst 8>;
165                                         reset-names = "switch";
166
167                                         interrupt-parent = <&miscintc>;
168                                         interrupts = <12>;
169
170                                         interrupt-controller;
171                                         #interrupt-cells = <1>;
172
173                                         ports {
174                                                 #address-cells = <1>;
175                                                 #size-cells = <0>;
176
177                                                 switch_port0: port@0 {
178                                                         reg = <0x0>;
179                                                         label = "cpu";
180                                                         ethernet = <&eth1>;
181
182                                                         phy-mode = "gmii";
183
184                                                         fixed-link {
185                                                                 speed = <1000>;
186                                                                 full-duplex;
187                                                                 pause;
188                                                         };
189                                                 };
190
191                                                 switch_port1: port@1 {
192                                                         reg = <0x1>;
193                                                         phy-handle = <&phy_port0>;
194                                                         phy-mode = "internal";
195
196                                                         status = "disabled";
197                                                 };
198
199                                                 switch_port2: port@2 {
200                                                         reg = <0x2>;
201                                                         phy-handle = <&phy_port1>;
202                                                         phy-mode = "internal";
203
204                                                         status = "disabled";
205                                                 };
206
207                                                 switch_port3: port@3 {
208                                                         reg = <0x3>;
209                                                         phy-handle = <&phy_port2>;
210                                                         phy-mode = "internal";
211
212                                                         status = "disabled";
213                                                 };
214
215                                                 switch_port4: port@4 {
216                                                         reg = <0x4>;
217                                                         phy-handle = <&phy_port3>;
218                                                         phy-mode = "internal";
219
220                                                         status = "disabled";
221                                                 };
222                                         };
223
224                                         mdio {
225                                                 #address-cells = <1>;
226                                                 #size-cells = <0>;
227
228                                                 interrupt-parent = <&switch10>;
229
230                                                 phy_port0: phy@0 {
231                                                         reg = <0x0>;
232                                                         interrupts = <0>;
233                                                         status = "disabled";
234                                                 };
235
236                                                 phy_port1: phy@1 {
237                                                         reg = <0x1>;
238                                                         interrupts = <0>;
239                                                         status = "disabled";
240                                                 };
241
242                                                 phy_port2: phy@2 {
243                                                         reg = <0x2>;
244                                                         interrupts = <0>;
245                                                         status = "disabled";
246                                                 };
247
248                                                 phy_port3: phy@3 {
249                                                         reg = <0x3>;
250                                                         interrupts = <0>;
251                                                         status = "disabled";
252                                                 };
253
254                                                 phy_port4: phy@4 {
255                                                         reg = <0x4>;
256                                                         interrupts = <0>;
257                                                         status = "disabled";
258                                                 };
259                                         };
260                                 };
261                         };
262                 };
263
264                 usb: usb@1b000100 {
265                         compatible = "chipidea,usb2";
266                         reg = <0x1b000000 0x200>;
267
268                         interrupts = <3>;
269                         resets = <&rst 5>;
270
271                         phy-names = "usb-phy";
272                         phys = <&usb_phy>;
273
274                         status = "disabled";
275                 };
276
277                 spi: spi@1f000000 {
278                         compatible = "qca,ar7100-spi";
279                         reg = <0x1f000000 0x10>;
280
281                         clocks = <&pll ATH79_CLK_AHB>;
282                         clock-names = "ahb";
283
284                         #address-cells = <1>;
285                         #size-cells = <0>;
286
287                         status = "disabled";
288                 };
289         };
290
291         usb_phy: usb-phy {
292                 compatible = "qca,ar7100-usb-phy";
293
294                 reset-names = "phy", "suspend-override";
295                 resets = <&rst 4>, <&rst 3>;
296
297                 #phy-cells = <0>;
298
299                 status = "disabled";
300         };
301 };