blob: 1a48ff3c61621685c32f48943b4d921eacaf3b2f [file] [log] [blame]
Chris Packham4db944a2019-04-11 22:22:53 +12001// 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>;
Pali Rohár94c30f92021-12-21 12:20:19 +010088 resets = <&systemc 0 0>;
Chris Packham4db944a2019-04-11 22:22:53 +120089 status = "disabled";
90 };
91 };
92
93 internal-regs {
94 sdramc: sdramc@1400 {
95 compatible = "marvell,armada-xp-sdram-controller";
96 reg = <0x1400 0x500>;
97 };
98
99 L2: l2-cache@8000 {
100 compatible = "marvell,aurora-system-cache";
101 reg = <0x08000 0x1000>;
102 cache-id-part = <0x100>;
103 cache-level = <2>;
104 cache-unified;
105 wt-override;
106 };
107
108 gpio0: gpio@18100 {
109 compatible = "marvell,orion-gpio";
110 reg = <0x18100 0x40>;
111 ngpios = <32>;
112 gpio-controller;
113 #gpio-cells = <2>;
114 interrupt-controller;
115 #interrupt-cells = <2>;
116 interrupts = <82>, <83>, <84>, <85>;
117 };
118
119 /* does not exist */
120 gpio1: gpio@18140 {
121 compatible = "marvell,orion-gpio";
122 reg = <0x18140 0x40>;
123 status = "disabled";
124 };
125
126 gpio2: gpio@18180 { /* rework some properties */
127 compatible = "marvell,orion-gpio";
128 reg = <0x18180 0x40>;
129 ngpios = <1>; /* only gpio #32 */
130 gpio-controller;
131 #gpio-cells = <2>;
132 interrupt-controller;
133 #interrupt-cells = <2>;
134 interrupts = <87>;
135 };
136
137 systemc: system-controller@18200 {
138 compatible = "marvell,armada-370-xp-system-controller";
139 reg = <0x18200 0x500>;
Pali Rohár35e29e82021-12-21 12:20:18 +0100140 #reset-cells = <2>;
Chris Packham4db944a2019-04-11 22:22:53 +1200141 };
142
143 gateclk: clock-gating-control@18220 {
144 compatible = "marvell,mv98dx3236-gating-clock";
145 reg = <0x18220 0x4>;
146 clocks = <&coreclk 0>;
147 #clock-cells = <1>;
148 };
149
150 cpuclk: clock-complex@18700 {
151 #clock-cells = <1>;
152 compatible = "marvell,mv98dx3236-cpu-clock";
153 reg = <0x18700 0x24>, <0x1c054 0x10>;
154 clocks = <&coreclk 1>;
155 };
156
157 corediv-clock@18740 {
158 status = "disabled";
159 };
160
161 cpu-config@21000 {
162 compatible = "marvell,armada-xp-cpu-config";
163 reg = <0x21000 0x8>;
164 };
165
166 ethernet@70000 {
167 compatible = "marvell,armada-xp-neta";
168 };
169
170 ethernet@74000 {
171 compatible = "marvell,armada-xp-neta";
172 };
173
174 xor1: xor@f0800 {
175 compatible = "marvell,orion-xor";
176 reg = <0xf0800 0x100
177 0xf0a00 0x100>;
178 clocks = <&gateclk 22>;
179 status = "okay";
180
181 xor10 {
182 interrupts = <51>;
183 dmacap,memcpy;
184 dmacap,xor;
185 };
186 xor11 {
187 interrupts = <52>;
188 dmacap,memcpy;
189 dmacap,xor;
190 dmacap,memset;
191 };
192 };
193
194 nand_controller: nand@d0000 {
195 clocks = <&dfx_coredivclk 0>;
196 };
197
198 xor0: xor@f0900 {
199 compatible = "marvell,orion-xor";
200 reg = <0xF0900 0x100
201 0xF0B00 0x100>;
202 clocks = <&gateclk 28>;
203 status = "okay";
204
205 xor00 {
206 interrupts = <94>;
207 dmacap,memcpy;
208 dmacap,xor;
209 };
210 xor01 {
211 interrupts = <95>;
212 dmacap,memcpy;
213 dmacap,xor;
214 dmacap,memset;
215 };
216 };
217 };
218
219 dfx: dfx-server@ac000000 {
220 compatible = "marvell,dfx-server", "simple-bus";
221 #address-cells = <1>;
222 #size-cells = <1>;
223 ranges = <0 MBUS_ID(0x08, 0x00) 0 0x100000>;
224 reg = <MBUS_ID(0x08, 0x00) 0 0x100000>;
225
226 thermal: thermal@f8078 {
227 compatible = "marvell,armada380-thermal";
228 reg = <0xf8078 0x4>, <0xf8074 0x4>;
229 status = "okay";
230 };
231
232 coreclk: mvebu-sar@f8204 {
233 compatible = "marvell,mv98dx3236-core-clock";
234 reg = <0xf8204 0x4>;
235 #clock-cells = <1>;
236 };
237
238 dfx_coredivclk: corediv-clock@f8268 {
239 compatible = "marvell,mv98dx3236-corediv-clock";
240 reg = <0xf8268 0xc>;
241 #clock-cells = <1>;
242 clocks = <&mainpll>;
243 clock-output-names = "nand";
244 };
245 };
246
247 switch: switch@a8000000 {
248 compatible = "simple-bus";
249 #address-cells = <1>;
250 #size-cells = <1>;
251 ranges = <0 MBUS_ID(0x03, 0x00) 0 0x100000>;
252
253 pp0: packet-processor@0 {
254 compatible = "marvell,prestera-98dx3236", "marvell,prestera";
255 reg = <0 0x4000000>;
256 interrupts = <33>, <34>, <35>;
257 dfx = <&dfx>;
258 };
259 };
260 };
261
262 clocks {
263 /* 25 MHz reference crystal */
264 refclk: oscillator {
265 compatible = "fixed-clock";
266 #clock-cells = <0>;
267 clock-frequency = <25000000>;
268 };
269 };
270};
271
272&i2c0 {
273 compatible = "marvell,mv78230-i2c", "marvell,mv64xxx-i2c";
274 reg = <0x11000 0x100>;
275};
276
277&i2c1 {
278 compatible = "marvell,mv78230-i2c", "marvell,mv64xxx-i2c";
279 reg = <0x11100 0x100>;
280};
281
282&mpic {
283 reg = <0x20a00 0x2d0>, <0x21070 0x58>;
284};
285
286&rtc {
287 status = "disabled";
288};
289
290&timer {
291 compatible = "marvell,armada-xp-timer";
292 clocks = <&coreclk 2>, <&refclk>;
293 clock-names = "nbclk", "fixed";
294};
295
296&watchdog {
297 compatible = "marvell,armada-xp-wdt";
298 clocks = <&coreclk 2>, <&refclk>;
299 clock-names = "nbclk", "fixed";
300};
301
302&cpurst {
303 reg = <0x20800 0x20>;
304};
305
306&usb0 {
307 clocks = <&gateclk 18>;
308};
309
310&usb1 {
311 clocks = <&gateclk 19>;
312};
313
314&pinctrl {
315 compatible = "marvell,98dx3236-pinctrl";
316
317 nand_pins: nand-pins {
318 marvell,pins = "mpp20", "mpp21", "mpp22",
319 "mpp23", "mpp24", "mpp25",
320 "mpp26", "mpp27", "mpp28",
321 "mpp29", "mpp30";
322 marvell,function = "dev";
323 };
324
325 nand_rb: nand-rb {
326 marvell,pins = "mpp19";
327 marvell,function = "nand";
328 };
329
330 spi0_pins: spi0-pins {
331 marvell,pins = "mpp0", "mpp1",
332 "mpp2", "mpp3";
333 marvell,function = "spi0";
334 };
335};
336
337&spi0 {
338 compatible = "marvell,armada-xp-spi", "marvell,orion-spi";
339 pinctrl-0 = <&spi0_pins>;
340 pinctrl-names = "default";
341};
342
343&sdio {
344 status = "disabled";
345};