xref: /openbmc/u-boot/arch/arm/dts/kirkwood.dtsi (revision 1a88a04e)
1// SPDX-License-Identifier: GPL-2.0
2/include/ "skeleton.dtsi"
3#include <dt-bindings/input/input.h>
4#include <dt-bindings/gpio/gpio.h>
5
6#define MBUS_ID(target,attributes) (((target) << 24) | ((attributes) << 16))
7
8/ {
9	compatible = "marvell,kirkwood";
10	interrupt-parent = <&intc>;
11
12	cpus {
13		#address-cells = <1>;
14		#size-cells = <0>;
15
16		cpu@0 {
17			device_type = "cpu";
18			compatible = "marvell,feroceon";
19			reg = <0>;
20			clocks = <&core_clk 1>, <&core_clk 3>, <&gate_clk 11>;
21			clock-names = "cpu_clk", "ddrclk", "powersave";
22		};
23	};
24
25	aliases {
26	       gpio0 = &gpio0;
27	       gpio1 = &gpio1;
28	       i2c0 = &i2c0;
29	};
30
31	mbus@f1000000 {
32		compatible = "marvell,kirkwood-mbus", "simple-bus";
33		#address-cells = <2>;
34		#size-cells = <1>;
35		/* If a board file needs to change this ranges it must replace it completely */
36		ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000	/* internal-regs */
37			  MBUS_ID(0x01, 0x2f) 0 0xf4000000 0x10000	/* nand flash */
38			  MBUS_ID(0x03, 0x01) 0 0xf5000000 0x10000	/* crypto sram */
39			  >;
40		controller = <&mbusc>;
41		pcie-mem-aperture = <0xe0000000 0x10000000>; /* 256 MiB memory space */
42		pcie-io-aperture  = <0xf2000000 0x100000>;   /*   1 MiB    I/O space */
43
44		nand: nand@12f {
45			#address-cells = <1>;
46			#size-cells = <1>;
47			cle = <0>;
48			ale = <1>;
49			bank-width = <1>;
50			compatible = "marvell,orion-nand";
51			reg = <MBUS_ID(0x01, 0x2f) 0 0x400>;
52			chip-delay = <25>;
53			/* set partition map and/or chip-delay in board dts */
54			clocks = <&gate_clk 7>;
55			pinctrl-0 = <&pmx_nand>;
56			pinctrl-names = "default";
57			status = "disabled";
58		};
59
60		crypto_sram: sa-sram@301 {
61			compatible = "mmio-sram";
62			reg = <MBUS_ID(0x03, 0x01) 0x0 0x800>;
63			clocks = <&gate_clk 17>;
64			#address-cells = <1>;
65			#size-cells = <1>;
66		};
67	};
68
69	ocp@f1000000 {
70		compatible = "simple-bus";
71		ranges = <0x00000000 0xf1000000 0x0100000>;
72		#address-cells = <1>;
73		#size-cells = <1>;
74
75		pinctrl: pin-controller@10000 {
76			/* set compatible property in SoC file */
77			reg = <0x10000 0x20>;
78
79			pmx_ge1: pmx-ge1 {
80				marvell,pins = "mpp20", "mpp21", "mpp22", "mpp23",
81					       "mpp24", "mpp25", "mpp26", "mpp27",
82					       "mpp30", "mpp31", "mpp32", "mpp33";
83				marvell,function = "ge1";
84			};
85
86			pmx_nand: pmx-nand {
87				marvell,pins = "mpp0", "mpp1", "mpp2", "mpp3",
88					       "mpp4", "mpp5", "mpp18", "mpp19";
89				marvell,function = "nand";
90			};
91
92			/*
93			 * Default SPI0 pinctrl setting with CSn on mpp0,
94			 * overwrite marvell,pins on board level if required.
95			 */
96			pmx_spi: pmx-spi {
97				marvell,pins = "mpp0", "mpp1", "mpp2", "mpp3";
98				marvell,function = "spi";
99			};
100
101			pmx_twsi0: pmx-twsi0 {
102				marvell,pins = "mpp8", "mpp9";
103				marvell,function = "twsi0";
104			};
105
106			/*
107			 * Default UART pinctrl setting without RTS/CTS,
108			 * overwrite marvell,pins on board level if required.
109			 */
110			pmx_uart0: pmx-uart0 {
111				marvell,pins = "mpp10", "mpp11";
112				marvell,function = "uart0";
113			};
114
115			pmx_uart1: pmx-uart1 {
116				marvell,pins = "mpp13", "mpp14";
117				marvell,function = "uart1";
118			};
119		};
120
121		core_clk: core-clocks@10030 {
122			compatible = "marvell,kirkwood-core-clock";
123			reg = <0x10030 0x4>;
124			#clock-cells = <1>;
125		};
126
127		spi0: spi@10600 {
128			compatible = "marvell,orion-spi";
129			#address-cells = <1>;
130			#size-cells = <0>;
131			cell-index = <0>;
132			interrupts = <23>;
133			reg = <0x10600 0x28>;
134			clocks = <&gate_clk 7>;
135			pinctrl-0 = <&pmx_spi>;
136			pinctrl-names = "default";
137			status = "disabled";
138		};
139
140		gpio0: gpio@10100 {
141			compatible = "marvell,orion-gpio";
142			#gpio-cells = <2>;
143			gpio-controller;
144			reg = <0x10100 0x40>;
145			ngpios = <32>;
146			interrupt-controller;
147			#interrupt-cells = <2>;
148			interrupts = <35>, <36>, <37>, <38>;
149			clocks = <&gate_clk 7>;
150		};
151
152		gpio1: gpio@10140 {
153			compatible = "marvell,orion-gpio";
154			#gpio-cells = <2>;
155			gpio-controller;
156			reg = <0x10140 0x40>;
157			ngpios = <18>;
158			interrupt-controller;
159			#interrupt-cells = <2>;
160			interrupts = <39>, <40>, <41>;
161			clocks = <&gate_clk 7>;
162		};
163
164		i2c0: i2c@11000 {
165			compatible = "marvell,mv64xxx-i2c";
166			reg = <0x11000 0x20>;
167			#address-cells = <1>;
168			#size-cells = <0>;
169			interrupts = <29>;
170			clock-frequency = <100000>;
171			clocks = <&gate_clk 7>;
172			pinctrl-0 = <&pmx_twsi0>;
173			pinctrl-names = "default";
174			status = "disabled";
175		};
176
177		uart0: serial@12000 {
178			compatible = "ns16550a";
179			reg = <0x12000 0x100>;
180			reg-shift = <2>;
181			interrupts = <33>;
182			clocks = <&gate_clk 7>;
183			pinctrl-0 = <&pmx_uart0>;
184			pinctrl-names = "default";
185			status = "disabled";
186		};
187
188		uart1: serial@12100 {
189			compatible = "ns16550a";
190			reg = <0x12100 0x100>;
191			reg-shift = <2>;
192			interrupts = <34>;
193			clocks = <&gate_clk 7>;
194			pinctrl-0 = <&pmx_uart1>;
195			pinctrl-names = "default";
196			status = "disabled";
197		};
198
199		mbusc: mbus-controller@20000 {
200			compatible = "marvell,mbus-controller";
201			reg = <0x20000 0x80>, <0x1500 0x20>;
202		};
203
204		sysc: system-controller@20000 {
205			compatible = "marvell,orion-system-controller";
206			reg = <0x20000 0x120>;
207		};
208
209		bridge_intc: bridge-interrupt-ctrl@20110 {
210			compatible = "marvell,orion-bridge-intc";
211			interrupt-controller;
212			#interrupt-cells = <1>;
213			reg = <0x20110 0x8>;
214			interrupts = <1>;
215			marvell,#interrupts = <6>;
216		};
217
218		gate_clk: clock-gating-control@2011c {
219			compatible = "marvell,kirkwood-gating-clock";
220			reg = <0x2011c 0x4>;
221			clocks = <&core_clk 0>;
222			#clock-cells = <1>;
223		};
224
225		l2: l2-cache@20128 {
226			compatible = "marvell,kirkwood-cache";
227			reg = <0x20128 0x4>;
228		};
229
230		intc: main-interrupt-ctrl@20200 {
231			compatible = "marvell,orion-intc";
232			interrupt-controller;
233			#interrupt-cells = <1>;
234			reg = <0x20200 0x10>, <0x20210 0x10>;
235		};
236
237		timer: timer@20300 {
238			compatible = "marvell,orion-timer";
239			reg = <0x20300 0x20>;
240			interrupt-parent = <&bridge_intc>;
241			interrupts = <1>, <2>;
242			clocks = <&core_clk 0>;
243		};
244
245		wdt: watchdog-timer@20300 {
246			compatible = "marvell,orion-wdt";
247			reg = <0x20300 0x28>, <0x20108 0x4>;
248			interrupt-parent = <&bridge_intc>;
249			interrupts = <3>;
250			clocks = <&gate_clk 7>;
251			status = "okay";
252		};
253
254		cesa: crypto@30000 {
255			compatible = "marvell,kirkwood-crypto";
256			reg = <0x30000 0x10000>;
257			reg-names = "regs";
258			interrupts = <22>;
259			clocks = <&gate_clk 17>;
260			marvell,crypto-srams = <&crypto_sram>;
261			marvell,crypto-sram-size = <0x800>;
262			status = "okay";
263		};
264
265		usb0: ehci@50000 {
266			compatible = "marvell,orion-ehci";
267			reg = <0x50000 0x1000>;
268			interrupts = <19>;
269			clocks = <&gate_clk 3>;
270			status = "okay";
271		};
272
273		dma0: xor@60800 {
274			compatible = "marvell,orion-xor";
275			reg = <0x60800 0x100
276			       0x60A00 0x100>;
277			status = "okay";
278			clocks = <&gate_clk 8>;
279
280			xor00 {
281			      interrupts = <5>;
282			      dmacap,memcpy;
283			      dmacap,xor;
284			};
285			xor01 {
286			      interrupts = <6>;
287			      dmacap,memcpy;
288			      dmacap,xor;
289			      dmacap,memset;
290			};
291		};
292
293		dma1: xor@60900 {
294			compatible = "marvell,orion-xor";
295			reg = <0x60900 0x100
296			       0x60B00 0x100>;
297			status = "okay";
298			clocks = <&gate_clk 16>;
299
300			xor00 {
301			      interrupts = <7>;
302			      dmacap,memcpy;
303			      dmacap,xor;
304			};
305			xor01 {
306			      interrupts = <8>;
307			      dmacap,memcpy;
308			      dmacap,xor;
309			      dmacap,memset;
310			};
311		};
312
313		eth0: ethernet-controller@72000 {
314			compatible = "marvell,kirkwood-eth";
315			#address-cells = <1>;
316			#size-cells = <0>;
317			reg = <0x72000 0x4000>;
318			clocks = <&gate_clk 0>;
319			marvell,tx-checksum-limit = <1600>;
320			status = "disabled";
321
322			eth0port: ethernet0-port@0 {
323				compatible = "marvell,kirkwood-eth-port";
324				reg = <0>;
325				interrupts = <11>;
326				/* overwrite MAC address in bootloader */
327				local-mac-address = [00 00 00 00 00 00];
328				/* set phy-handle property in board file */
329			};
330		};
331
332		mdio: mdio-bus@72004 {
333			compatible = "marvell,orion-mdio";
334			#address-cells = <1>;
335			#size-cells = <0>;
336			reg = <0x72004 0x84>;
337			interrupts = <46>;
338			clocks = <&gate_clk 0>;
339			status = "disabled";
340
341			/* add phy nodes in board file */
342		};
343
344		eth1: ethernet-controller@76000 {
345			compatible = "marvell,kirkwood-eth";
346			#address-cells = <1>;
347			#size-cells = <0>;
348			reg = <0x76000 0x4000>;
349			clocks = <&gate_clk 19>;
350			marvell,tx-checksum-limit = <1600>;
351			pinctrl-0 = <&pmx_ge1>;
352			pinctrl-names = "default";
353			status = "disabled";
354
355			eth1port: ethernet1-port@0 {
356				compatible = "marvell,kirkwood-eth-port";
357				reg = <0>;
358				interrupts = <15>;
359				/* overwrite MAC address in bootloader */
360				local-mac-address = [00 00 00 00 00 00];
361				/* set phy-handle property in board file */
362			};
363		};
364
365		sata_phy0: sata-phy@82000 {
366			compatible = "marvell,mvebu-sata-phy";
367			reg = <0x82000 0x0334>;
368			clocks = <&gate_clk 14>;
369			clock-names = "sata";
370			#phy-cells = <0>;
371			status = "ok";
372		};
373
374		sata_phy1: sata-phy@84000 {
375			compatible = "marvell,mvebu-sata-phy";
376			reg = <0x84000 0x0334>;
377			clocks = <&gate_clk 15>;
378			clock-names = "sata";
379			#phy-cells = <0>;
380			status = "ok";
381		};
382
383		audio0: audio-controller@a0000 {
384			compatible = "marvell,kirkwood-audio";
385			#sound-dai-cells = <0>;
386			reg = <0xa0000 0x2210>;
387			interrupts = <24>;
388			clocks = <&gate_clk 9>;
389			clock-names = "internal";
390			status = "disabled";
391		};
392	};
393};
394