Merge tag 'drm-next-2020-12-24' of git://anongit.freedesktop.org/drm/drm
[linux-2.6-microblaze.git] / arch / arm / boot / dts / armada-xp-98dx3236.dtsi
1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2 /*
3  * Device Tree Include file for Marvell 98dx3236 family SoC
4  *
5  * Copyright (C) 2016 Allied Telesis Labs
6  *
7  * Contains definitions specific to the 98dx3236 SoC that are not
8  * common to all Armada XP SoCs.
9  */
10
11 #include "armada-370-xp.dtsi"
12
13 / {
14         #address-cells = <2>;
15         #size-cells = <2>;
16
17         model = "Marvell 98DX3236 SoC";
18         compatible = "marvell,armadaxp-98dx3236", "marvell,armada-370-xp";
19
20         aliases {
21                 gpio0 = &gpio0;
22                 gpio1 = &gpio1;
23                 gpio2 = &gpio2;
24         };
25
26         cpus {
27                 #address-cells = <1>;
28                 #size-cells = <0>;
29                 enable-method = "marvell,98dx3236-smp";
30
31                 cpu@0 {
32                         device_type = "cpu";
33                         compatible = "marvell,sheeva-v7";
34                         reg = <0>;
35                         clocks = <&cpuclk 0>;
36                         clock-latency = <1000000>;
37                 };
38         };
39
40         soc {
41                 compatible = "marvell,armadaxp-mbus", "simple-bus";
42
43                 ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000
44                           MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
45                           MBUS_ID(0x01, 0x2f) 0 0 0xf0000000 0x1000000
46                           MBUS_ID(0x03, 0x00) 0 0 0xa8000000 0x4000000
47                           MBUS_ID(0x08, 0x00) 0 0 0xac000000 0x100000>;
48
49                 bootrom {
50                         compatible = "marvell,bootrom";
51                         reg = <MBUS_ID(0x01, 0x1d) 0 0x100000>;
52                 };
53
54                 /*
55                  * 98DX3236 has 1 x1 PCIe unit Gen2.0
56                  */
57                 pciec: pcie@82000000 {
58                         compatible = "marvell,armada-xp-pcie";
59                         status = "disabled";
60                         device_type = "pci";
61
62                         #address-cells = <3>;
63                         #size-cells = <2>;
64
65                         msi-parent = <&mpic>;
66                         bus-range = <0x00 0xff>;
67
68                         ranges =
69                                <0x82000000 0 0x40000 MBUS_ID(0xf0, 0x01) 0x40000 0 0x00002000   /* Port 0.0 registers */
70                                 0x82000000 0x1 0       MBUS_ID(0x04, 0xe8) 0 1 0 /* Port 0.0 MEM */
71                                 0x81000000 0x1 0       MBUS_ID(0x04, 0xe0) 0 1 0 /* Port 0.0 IO  */>;
72
73                         pcie1: pcie@1,0 {
74                                 device_type = "pci";
75                                 assigned-addresses = <0x82000800 0 0x40000 0 0x2000>;
76                                 reg = <0x0800 0 0 0 0>;
77                                 #address-cells = <3>;
78                                 #size-cells = <2>;
79                                 #interrupt-cells = <1>;
80                                 ranges = <0x82000000 0 0 0x82000000 0x1 0 1 0
81                                           0x81000000 0 0 0x81000000 0x1 0 1 0>;
82                                 bus-range = <0x00 0xff>;
83                                 interrupt-map-mask = <0 0 0 0>;
84                                 interrupt-map = <0 0 0 0 &mpic 58>;
85                                 marvell,pcie-port = <0>;
86                                 marvell,pcie-lane = <0>;
87                                 clocks = <&gateclk 5>;
88                                 status = "disabled";
89                         };
90                 };
91
92                 internal-regs {
93                         sdramc: sdramc@1400 {
94                                 compatible = "marvell,armada-xp-sdram-controller";
95                                 reg = <0x1400 0x500>;
96                         };
97
98                         L2: l2-cache@8000 {
99                                 compatible = "marvell,aurora-system-cache";
100                                 reg = <0x08000 0x1000>;
101                                 cache-id-part = <0x100>;
102                                 cache-level = <2>;
103                                 cache-unified;
104                                 wt-override;
105                         };
106
107                         gpio0: gpio@18100 {
108                                 compatible = "marvell,orion-gpio";
109                                 reg = <0x18100 0x40>;
110                                 ngpios = <32>;
111                                 gpio-controller;
112                                 #gpio-cells = <2>;
113                                 interrupt-controller;
114                                 #interrupt-cells = <2>;
115                                 interrupts = <82>, <83>, <84>, <85>;
116                         };
117
118                         /* does not exist */
119                         gpio1: gpio@18140 {
120                                 compatible = "marvell,orion-gpio";
121                                 reg = <0x18140 0x40>;
122                                 status = "disabled";
123                         };
124
125                         gpio2: gpio@18180 { /* rework some properties */
126                                 compatible = "marvell,orion-gpio";
127                                 reg = <0x18180 0x40>;
128                                 ngpios = <1>; /* only gpio #32 */
129                                 gpio-controller;
130                                 #gpio-cells = <2>;
131                                 interrupt-controller;
132                                 #interrupt-cells = <2>;
133                                 interrupts = <87>;
134                         };
135
136                         systemc: system-controller@18200 {
137                                 compatible = "marvell,armada-370-xp-system-controller";
138                                 reg = <0x18200 0x500>;
139                         };
140
141                         gateclk: clock-gating-control@18220 {
142                                 compatible = "marvell,mv98dx3236-gating-clock";
143                                 reg = <0x18220 0x4>;
144                                 clocks = <&coreclk 0>;
145                                 #clock-cells = <1>;
146                         };
147
148                         cpuclk: clock-complex@18700 {
149                                 #clock-cells = <1>;
150                                 compatible = "marvell,mv98dx3236-cpu-clock";
151                                 reg = <0x18700 0x24>, <0x1c054 0x10>;
152                                 clocks = <&coreclk 1>;
153                         };
154
155                         corediv-clock@18740 {
156                                 status = "disabled";
157                         };
158
159                         cpu-config@21000 {
160                                 compatible = "marvell,armada-xp-cpu-config";
161                                 reg = <0x21000 0x8>;
162                         };
163
164                         ethernet@70000 {
165                                 compatible = "marvell,armada-xp-neta";
166                         };
167
168                         ethernet@74000 {
169                                 compatible = "marvell,armada-xp-neta";
170                         };
171
172                         xor1: xor@f0800 {
173                                 compatible = "marvell,orion-xor";
174                                 reg = <0xf0800 0x100
175                                        0xf0a00 0x100>;
176                                 clocks = <&gateclk 22>;
177                                 status = "okay";
178
179                                 xor10 {
180                                         interrupts = <51>;
181                                         dmacap,memcpy;
182                                         dmacap,xor;
183                                 };
184                                 xor11 {
185                                         interrupts = <52>;
186                                         dmacap,memcpy;
187                                         dmacap,xor;
188                                         dmacap,memset;
189                                 };
190                         };
191
192                         nand_controller: nand-controller@d0000 {
193                                 clocks = <&dfx_coredivclk 0>;
194                         };
195
196                         xor0: xor@f0900 {
197                                 compatible = "marvell,orion-xor";
198                                 reg = <0xF0900 0x100
199                                        0xF0B00 0x100>;
200                                 clocks = <&gateclk 28>;
201                                 status = "okay";
202
203                                 xor00 {
204                                         interrupts = <94>;
205                                         dmacap,memcpy;
206                                         dmacap,xor;
207                                 };
208                                 xor01 {
209                                         interrupts = <95>;
210                                         dmacap,memcpy;
211                                         dmacap,xor;
212                                         dmacap,memset;
213                                 };
214                         };
215                 };
216
217                 dfx: dfx-server@ac000000 {
218                         compatible = "marvell,dfx-server", "simple-bus";
219                         #address-cells = <1>;
220                         #size-cells = <1>;
221                         ranges = <0 MBUS_ID(0x08, 0x00) 0 0x100000>;
222                         reg = <MBUS_ID(0x08, 0x00) 0 0x100000>;
223
224                         coreclk: mvebu-sar@f8204 {
225                                 compatible = "marvell,mv98dx3236-core-clock";
226                                 reg = <0xf8204 0x4>;
227                                 #clock-cells = <1>;
228                         };
229
230                         dfx_coredivclk: corediv-clock@f8268 {
231                                 compatible = "marvell,mv98dx3236-corediv-clock";
232                                 reg = <0xf8268 0xc>;
233                                 #clock-cells = <1>;
234                                 clocks = <&mainpll>;
235                                 clock-output-names = "nand";
236                         };
237                 };
238
239                 switch: switch@a8000000 {
240                         compatible = "simple-bus";
241                         #address-cells = <1>;
242                         #size-cells = <1>;
243                         ranges = <0 MBUS_ID(0x03, 0x00) 0 0x100000>;
244
245                         pp0: packet-processor@0 {
246                                 compatible = "marvell,prestera-98dx3236", "marvell,prestera";
247                                 reg = <0 0x4000000>;
248                                 interrupts = <33>, <34>, <35>;
249                                 dfx = <&dfx>;
250                         };
251                 };
252         };
253
254         clocks {
255                 /* 25 MHz reference crystal */
256                 refclk: oscillator {
257                         compatible = "fixed-clock";
258                         #clock-cells = <0>;
259                         clock-frequency = <25000000>;
260                 };
261         };
262 };
263
264 &i2c0 {
265         compatible = "marvell,mv78230-i2c", "marvell,mv64xxx-i2c";
266         reg = <0x11000 0x100>;
267         pinctrl-names = "default";
268         pinctrl-0 = <&i2c0_pins>;
269 };
270
271 &mpic {
272         reg = <0x20a00 0x2d0>, <0x21070 0x58>;
273 };
274
275 &rtc {
276         status = "disabled";
277 };
278
279 &timer {
280         compatible = "marvell,armada-xp-timer";
281         clocks = <&coreclk 2>, <&refclk>;
282         clock-names = "nbclk", "fixed";
283 };
284
285 &watchdog {
286         compatible = "marvell,armada-xp-wdt";
287         clocks = <&coreclk 2>, <&refclk>;
288         clock-names = "nbclk", "fixed";
289 };
290
291 &cpurst {
292         reg = <0x20800 0x20>;
293 };
294
295 &usb0 {
296         clocks = <&gateclk 18>;
297 };
298
299 &usb1 {
300         clocks = <&gateclk 19>;
301 };
302
303 &pinctrl {
304         compatible = "marvell,98dx3236-pinctrl";
305
306         nand_pins: nand-pins {
307                 marvell,pins = "mpp20", "mpp21", "mpp22",
308                                "mpp23", "mpp24", "mpp25",
309                                "mpp26", "mpp27", "mpp28",
310                                "mpp29", "mpp30";
311                 marvell,function = "dev";
312         };
313
314         nand_rb: nand-rb {
315                 marvell,pins = "mpp19";
316                 marvell,function = "nand";
317         };
318
319         spi0_pins: spi0-pins {
320                 marvell,pins = "mpp0", "mpp1",
321                                "mpp2", "mpp3";
322                 marvell,function = "spi0";
323         };
324
325         i2c0_pins: i2c-pins-0 {
326                 marvell,pins = "mpp14", "mpp15";
327                 marvell,function = "i2c0";
328         };
329 };
330
331 &spi0 {
332         compatible = "marvell,armada-xp-spi", "marvell,orion-spi";
333         pinctrl-0 = <&spi0_pins>;
334         pinctrl-names = "default";
335 };
336
337 &sdio {
338         status = "disabled";
339 };
340
341 &uart0 {
342         compatible = "marvell,armada-38x-uart";
343 };
344
345 &uart1 {
346         compatible = "marvell,armada-38x-uart";
347 };
348