xref: /OK3568_Linux_fs/kernel/arch/arm/boot/dts/berlin2.dtsi (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun// SPDX-License-Identifier: (GPL-2.0 OR MIT)
2*4882a593Smuzhiyun/*
3*4882a593Smuzhiyun * Device Tree Include file for Marvell Armada 1500 (Berlin BG2) SoC
4*4882a593Smuzhiyun *
5*4882a593Smuzhiyun * Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
6*4882a593Smuzhiyun *
7*4882a593Smuzhiyun * based on GPL'ed 2.6 kernel sources
8*4882a593Smuzhiyun *  (c) Marvell International Ltd.
9*4882a593Smuzhiyun */
10*4882a593Smuzhiyun
11*4882a593Smuzhiyun#include <dt-bindings/clock/berlin2.h>
12*4882a593Smuzhiyun#include <dt-bindings/interrupt-controller/arm-gic.h>
13*4882a593Smuzhiyun
14*4882a593Smuzhiyun/ {
15*4882a593Smuzhiyun	model = "Marvell Armada 1500 (BG2) SoC";
16*4882a593Smuzhiyun	compatible = "marvell,berlin2", "marvell,berlin";
17*4882a593Smuzhiyun	#address-cells = <1>;
18*4882a593Smuzhiyun	#size-cells = <1>;
19*4882a593Smuzhiyun
20*4882a593Smuzhiyun	aliases {
21*4882a593Smuzhiyun		serial0 = &uart0;
22*4882a593Smuzhiyun		serial1 = &uart1;
23*4882a593Smuzhiyun		serial2 = &uart2;
24*4882a593Smuzhiyun	};
25*4882a593Smuzhiyun
26*4882a593Smuzhiyun	cpus {
27*4882a593Smuzhiyun		#address-cells = <1>;
28*4882a593Smuzhiyun		#size-cells = <0>;
29*4882a593Smuzhiyun		enable-method = "marvell,berlin-smp";
30*4882a593Smuzhiyun
31*4882a593Smuzhiyun		cpu@0 {
32*4882a593Smuzhiyun			compatible = "marvell,pj4b";
33*4882a593Smuzhiyun			device_type = "cpu";
34*4882a593Smuzhiyun			next-level-cache = <&l2>;
35*4882a593Smuzhiyun			reg = <0>;
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun			clocks = <&chip_clk CLKID_CPU>;
38*4882a593Smuzhiyun			clock-latency = <100000>;
39*4882a593Smuzhiyun			operating-points = <
40*4882a593Smuzhiyun				/* kHz    uV */
41*4882a593Smuzhiyun				1200000 1200000
42*4882a593Smuzhiyun				1000000 1200000
43*4882a593Smuzhiyun				800000  1200000
44*4882a593Smuzhiyun				600000  1200000
45*4882a593Smuzhiyun			>;
46*4882a593Smuzhiyun		};
47*4882a593Smuzhiyun
48*4882a593Smuzhiyun		cpu@1 {
49*4882a593Smuzhiyun			compatible = "marvell,pj4b";
50*4882a593Smuzhiyun			device_type = "cpu";
51*4882a593Smuzhiyun			next-level-cache = <&l2>;
52*4882a593Smuzhiyun			reg = <1>;
53*4882a593Smuzhiyun
54*4882a593Smuzhiyun			clocks = <&chip_clk CLKID_CPU>;
55*4882a593Smuzhiyun			clock-latency = <100000>;
56*4882a593Smuzhiyun			operating-points = <
57*4882a593Smuzhiyun				/* kHz    uV */
58*4882a593Smuzhiyun				1200000 1200000
59*4882a593Smuzhiyun				1000000 1200000
60*4882a593Smuzhiyun				800000  1200000
61*4882a593Smuzhiyun				600000  1200000
62*4882a593Smuzhiyun			>;
63*4882a593Smuzhiyun		};
64*4882a593Smuzhiyun	};
65*4882a593Smuzhiyun
66*4882a593Smuzhiyun	refclk: oscillator {
67*4882a593Smuzhiyun		compatible = "fixed-clock";
68*4882a593Smuzhiyun		#clock-cells = <0>;
69*4882a593Smuzhiyun		clock-frequency = <25000000>;
70*4882a593Smuzhiyun	};
71*4882a593Smuzhiyun
72*4882a593Smuzhiyun	soc@f7000000 {
73*4882a593Smuzhiyun		compatible = "simple-bus";
74*4882a593Smuzhiyun		#address-cells = <1>;
75*4882a593Smuzhiyun		#size-cells = <1>;
76*4882a593Smuzhiyun		interrupt-parent = <&gic>;
77*4882a593Smuzhiyun
78*4882a593Smuzhiyun		ranges = <0 0xf7000000 0x1000000>;
79*4882a593Smuzhiyun
80*4882a593Smuzhiyun		sdhci0: mmc@ab0000 {
81*4882a593Smuzhiyun			compatible = "mrvl,pxav3-mmc";
82*4882a593Smuzhiyun			reg = <0xab0000 0x200>;
83*4882a593Smuzhiyun			clocks = <&chip_clk CLKID_SDIO0XIN>, <&chip_clk CLKID_SDIO0>;
84*4882a593Smuzhiyun			clock-names = "io", "core";
85*4882a593Smuzhiyun			interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
86*4882a593Smuzhiyun			status = "disabled";
87*4882a593Smuzhiyun		};
88*4882a593Smuzhiyun
89*4882a593Smuzhiyun		sdhci1: mmc@ab0800 {
90*4882a593Smuzhiyun			compatible = "mrvl,pxav3-mmc";
91*4882a593Smuzhiyun			reg = <0xab0800 0x200>;
92*4882a593Smuzhiyun			clocks = <&chip_clk CLKID_SDIO1XIN>, <&chip_clk CLKID_SDIO1>;
93*4882a593Smuzhiyun			clock-names = "io", "core";
94*4882a593Smuzhiyun			interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
95*4882a593Smuzhiyun			status = "disabled";
96*4882a593Smuzhiyun		};
97*4882a593Smuzhiyun
98*4882a593Smuzhiyun		sdhci2: mmc@ab1000 {
99*4882a593Smuzhiyun			compatible = "mrvl,pxav3-mmc";
100*4882a593Smuzhiyun			reg = <0xab1000 0x200>;
101*4882a593Smuzhiyun			interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
102*4882a593Smuzhiyun			clocks = <&chip_clk CLKID_NFC_ECC>, <&chip_clk CLKID_NFC>;
103*4882a593Smuzhiyun			clock-names = "io", "core";
104*4882a593Smuzhiyun			pinctrl-0 = <&emmc_pmux>;
105*4882a593Smuzhiyun			pinctrl-names = "default";
106*4882a593Smuzhiyun			status = "disabled";
107*4882a593Smuzhiyun		};
108*4882a593Smuzhiyun
109*4882a593Smuzhiyun		l2: cache-controller@ac0000 {
110*4882a593Smuzhiyun			compatible = "marvell,tauros3-cache", "arm,pl310-cache";
111*4882a593Smuzhiyun			reg = <0xac0000 0x1000>;
112*4882a593Smuzhiyun			cache-unified;
113*4882a593Smuzhiyun			cache-level = <2>;
114*4882a593Smuzhiyun		};
115*4882a593Smuzhiyun
116*4882a593Smuzhiyun		scu: snoop-control-unit@ad0000 {
117*4882a593Smuzhiyun			compatible = "arm,cortex-a9-scu";
118*4882a593Smuzhiyun			reg = <0xad0000 0x58>;
119*4882a593Smuzhiyun		};
120*4882a593Smuzhiyun
121*4882a593Smuzhiyun		gic: interrupt-controller@ad1000 {
122*4882a593Smuzhiyun			compatible = "arm,cortex-a9-gic";
123*4882a593Smuzhiyun			reg = <0xad1000 0x1000>, <0xad0100 0x0100>;
124*4882a593Smuzhiyun			interrupt-controller;
125*4882a593Smuzhiyun			#interrupt-cells = <3>;
126*4882a593Smuzhiyun		};
127*4882a593Smuzhiyun
128*4882a593Smuzhiyun		local-timer@ad0600 {
129*4882a593Smuzhiyun			compatible = "arm,cortex-a9-twd-timer";
130*4882a593Smuzhiyun			reg = <0xad0600 0x20>;
131*4882a593Smuzhiyun			interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_EDGE_RISING)>;
132*4882a593Smuzhiyun			clocks = <&chip_clk CLKID_TWD>;
133*4882a593Smuzhiyun		};
134*4882a593Smuzhiyun
135*4882a593Smuzhiyun		eth1: ethernet@b90000 {
136*4882a593Smuzhiyun			compatible = "marvell,pxa168-eth";
137*4882a593Smuzhiyun			reg = <0xb90000 0x10000>;
138*4882a593Smuzhiyun			clocks = <&chip_clk CLKID_GETH1>;
139*4882a593Smuzhiyun			interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
140*4882a593Smuzhiyun			/* set by bootloader */
141*4882a593Smuzhiyun			local-mac-address = [00 00 00 00 00 00];
142*4882a593Smuzhiyun			#address-cells = <1>;
143*4882a593Smuzhiyun			#size-cells = <0>;
144*4882a593Smuzhiyun			phy-connection-type = "mii";
145*4882a593Smuzhiyun			phy-handle = <&ethphy1>;
146*4882a593Smuzhiyun			status = "disabled";
147*4882a593Smuzhiyun
148*4882a593Smuzhiyun			ethphy1: ethernet-phy@0 {
149*4882a593Smuzhiyun				reg = <0>;
150*4882a593Smuzhiyun			};
151*4882a593Smuzhiyun		};
152*4882a593Smuzhiyun
153*4882a593Smuzhiyun		cpu-ctrl@dd0000 {
154*4882a593Smuzhiyun			compatible = "marvell,berlin-cpu-ctrl";
155*4882a593Smuzhiyun			reg = <0xdd0000 0x10000>;
156*4882a593Smuzhiyun		};
157*4882a593Smuzhiyun
158*4882a593Smuzhiyun		eth0: ethernet@e50000 {
159*4882a593Smuzhiyun			compatible = "marvell,pxa168-eth";
160*4882a593Smuzhiyun			reg = <0xe50000 0x10000>;
161*4882a593Smuzhiyun			clocks = <&chip_clk CLKID_GETH0>;
162*4882a593Smuzhiyun			interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
163*4882a593Smuzhiyun			/* set by bootloader */
164*4882a593Smuzhiyun			local-mac-address = [00 00 00 00 00 00];
165*4882a593Smuzhiyun			#address-cells = <1>;
166*4882a593Smuzhiyun			#size-cells = <0>;
167*4882a593Smuzhiyun			phy-connection-type = "mii";
168*4882a593Smuzhiyun			phy-handle = <&ethphy0>;
169*4882a593Smuzhiyun			status = "disabled";
170*4882a593Smuzhiyun
171*4882a593Smuzhiyun			ethphy0: ethernet-phy@0 {
172*4882a593Smuzhiyun				reg = <0>;
173*4882a593Smuzhiyun			};
174*4882a593Smuzhiyun		};
175*4882a593Smuzhiyun
176*4882a593Smuzhiyun		apb@e80000 {
177*4882a593Smuzhiyun			compatible = "simple-bus";
178*4882a593Smuzhiyun			#address-cells = <1>;
179*4882a593Smuzhiyun			#size-cells = <1>;
180*4882a593Smuzhiyun
181*4882a593Smuzhiyun			ranges = <0 0xe80000 0x10000>;
182*4882a593Smuzhiyun			interrupt-parent = <&aic>;
183*4882a593Smuzhiyun
184*4882a593Smuzhiyun			gpio0: gpio@400 {
185*4882a593Smuzhiyun				compatible = "snps,dw-apb-gpio";
186*4882a593Smuzhiyun				reg = <0x0400 0x400>;
187*4882a593Smuzhiyun				#address-cells = <1>;
188*4882a593Smuzhiyun				#size-cells = <0>;
189*4882a593Smuzhiyun
190*4882a593Smuzhiyun				porta: gpio-port@0 {
191*4882a593Smuzhiyun					compatible = "snps,dw-apb-gpio-port";
192*4882a593Smuzhiyun					gpio-controller;
193*4882a593Smuzhiyun					#gpio-cells = <2>;
194*4882a593Smuzhiyun					snps,nr-gpios = <8>;
195*4882a593Smuzhiyun					reg = <0>;
196*4882a593Smuzhiyun					interrupt-controller;
197*4882a593Smuzhiyun					#interrupt-cells = <2>;
198*4882a593Smuzhiyun					interrupts = <0>;
199*4882a593Smuzhiyun				};
200*4882a593Smuzhiyun			};
201*4882a593Smuzhiyun
202*4882a593Smuzhiyun			gpio1: gpio@800 {
203*4882a593Smuzhiyun				compatible = "snps,dw-apb-gpio";
204*4882a593Smuzhiyun				reg = <0x0800 0x400>;
205*4882a593Smuzhiyun				#address-cells = <1>;
206*4882a593Smuzhiyun				#size-cells = <0>;
207*4882a593Smuzhiyun
208*4882a593Smuzhiyun				portb: gpio-port@1 {
209*4882a593Smuzhiyun					compatible = "snps,dw-apb-gpio-port";
210*4882a593Smuzhiyun					gpio-controller;
211*4882a593Smuzhiyun					#gpio-cells = <2>;
212*4882a593Smuzhiyun					snps,nr-gpios = <8>;
213*4882a593Smuzhiyun					reg = <0>;
214*4882a593Smuzhiyun					interrupt-controller;
215*4882a593Smuzhiyun					#interrupt-cells = <2>;
216*4882a593Smuzhiyun					interrupts = <1>;
217*4882a593Smuzhiyun				};
218*4882a593Smuzhiyun			};
219*4882a593Smuzhiyun
220*4882a593Smuzhiyun			gpio2: gpio@c00 {
221*4882a593Smuzhiyun				compatible = "snps,dw-apb-gpio";
222*4882a593Smuzhiyun				reg = <0x0c00 0x400>;
223*4882a593Smuzhiyun				#address-cells = <1>;
224*4882a593Smuzhiyun				#size-cells = <0>;
225*4882a593Smuzhiyun
226*4882a593Smuzhiyun				portc: gpio-port@2 {
227*4882a593Smuzhiyun					compatible = "snps,dw-apb-gpio-port";
228*4882a593Smuzhiyun					gpio-controller;
229*4882a593Smuzhiyun					#gpio-cells = <2>;
230*4882a593Smuzhiyun					snps,nr-gpios = <8>;
231*4882a593Smuzhiyun					reg = <0>;
232*4882a593Smuzhiyun					interrupt-controller;
233*4882a593Smuzhiyun					#interrupt-cells = <2>;
234*4882a593Smuzhiyun					interrupts = <2>;
235*4882a593Smuzhiyun				};
236*4882a593Smuzhiyun			};
237*4882a593Smuzhiyun
238*4882a593Smuzhiyun			gpio3: gpio@1000 {
239*4882a593Smuzhiyun				compatible = "snps,dw-apb-gpio";
240*4882a593Smuzhiyun				reg = <0x1000 0x400>;
241*4882a593Smuzhiyun				#address-cells = <1>;
242*4882a593Smuzhiyun				#size-cells = <0>;
243*4882a593Smuzhiyun
244*4882a593Smuzhiyun				portd: gpio-port@3 {
245*4882a593Smuzhiyun					compatible = "snps,dw-apb-gpio-port";
246*4882a593Smuzhiyun					gpio-controller;
247*4882a593Smuzhiyun					#gpio-cells = <2>;
248*4882a593Smuzhiyun					snps,nr-gpios = <8>;
249*4882a593Smuzhiyun					reg = <0>;
250*4882a593Smuzhiyun					interrupt-controller;
251*4882a593Smuzhiyun					#interrupt-cells = <2>;
252*4882a593Smuzhiyun					interrupts = <3>;
253*4882a593Smuzhiyun				};
254*4882a593Smuzhiyun			};
255*4882a593Smuzhiyun
256*4882a593Smuzhiyun			timer0: timer@2c00 {
257*4882a593Smuzhiyun				compatible = "snps,dw-apb-timer";
258*4882a593Smuzhiyun				reg = <0x2c00 0x14>;
259*4882a593Smuzhiyun				interrupts = <8>;
260*4882a593Smuzhiyun				clocks = <&chip_clk CLKID_CFG>;
261*4882a593Smuzhiyun				clock-names = "timer";
262*4882a593Smuzhiyun				status = "okay";
263*4882a593Smuzhiyun			};
264*4882a593Smuzhiyun
265*4882a593Smuzhiyun			timer1: timer@2c14 {
266*4882a593Smuzhiyun				compatible = "snps,dw-apb-timer";
267*4882a593Smuzhiyun				reg = <0x2c14 0x14>;
268*4882a593Smuzhiyun				interrupts = <9>;
269*4882a593Smuzhiyun				clocks = <&chip_clk CLKID_CFG>;
270*4882a593Smuzhiyun				clock-names = "timer";
271*4882a593Smuzhiyun				status = "okay";
272*4882a593Smuzhiyun			};
273*4882a593Smuzhiyun
274*4882a593Smuzhiyun			timer2: timer@2c28 {
275*4882a593Smuzhiyun				compatible = "snps,dw-apb-timer";
276*4882a593Smuzhiyun				reg = <0x2c28 0x14>;
277*4882a593Smuzhiyun				interrupts = <10>;
278*4882a593Smuzhiyun				clocks = <&chip_clk CLKID_CFG>;
279*4882a593Smuzhiyun				clock-names = "timer";
280*4882a593Smuzhiyun				status = "disabled";
281*4882a593Smuzhiyun			};
282*4882a593Smuzhiyun
283*4882a593Smuzhiyun			timer3: timer@2c3c {
284*4882a593Smuzhiyun				compatible = "snps,dw-apb-timer";
285*4882a593Smuzhiyun				reg = <0x2c3c 0x14>;
286*4882a593Smuzhiyun				interrupts = <11>;
287*4882a593Smuzhiyun				clocks = <&chip_clk CLKID_CFG>;
288*4882a593Smuzhiyun				clock-names = "timer";
289*4882a593Smuzhiyun				status = "disabled";
290*4882a593Smuzhiyun			};
291*4882a593Smuzhiyun
292*4882a593Smuzhiyun			timer4: timer@2c50 {
293*4882a593Smuzhiyun				compatible = "snps,dw-apb-timer";
294*4882a593Smuzhiyun				reg = <0x2c50 0x14>;
295*4882a593Smuzhiyun				interrupts = <12>;
296*4882a593Smuzhiyun				clocks = <&chip_clk CLKID_CFG>;
297*4882a593Smuzhiyun				clock-names = "timer";
298*4882a593Smuzhiyun				status = "disabled";
299*4882a593Smuzhiyun			};
300*4882a593Smuzhiyun
301*4882a593Smuzhiyun			timer5: timer@2c64 {
302*4882a593Smuzhiyun				compatible = "snps,dw-apb-timer";
303*4882a593Smuzhiyun				reg = <0x2c64 0x14>;
304*4882a593Smuzhiyun				interrupts = <13>;
305*4882a593Smuzhiyun				clocks = <&chip_clk CLKID_CFG>;
306*4882a593Smuzhiyun				clock-names = "timer";
307*4882a593Smuzhiyun				status = "disabled";
308*4882a593Smuzhiyun			};
309*4882a593Smuzhiyun
310*4882a593Smuzhiyun			timer6: timer@2c78 {
311*4882a593Smuzhiyun				compatible = "snps,dw-apb-timer";
312*4882a593Smuzhiyun				reg = <0x2c78 0x14>;
313*4882a593Smuzhiyun				interrupts = <14>;
314*4882a593Smuzhiyun				clocks = <&chip_clk CLKID_CFG>;
315*4882a593Smuzhiyun				clock-names = "timer";
316*4882a593Smuzhiyun				status = "disabled";
317*4882a593Smuzhiyun			};
318*4882a593Smuzhiyun
319*4882a593Smuzhiyun			timer7: timer@2c8c {
320*4882a593Smuzhiyun				compatible = "snps,dw-apb-timer";
321*4882a593Smuzhiyun				reg = <0x2c8c 0x14>;
322*4882a593Smuzhiyun				interrupts = <15>;
323*4882a593Smuzhiyun				clocks = <&chip_clk CLKID_CFG>;
324*4882a593Smuzhiyun				clock-names = "timer";
325*4882a593Smuzhiyun				status = "disabled";
326*4882a593Smuzhiyun			};
327*4882a593Smuzhiyun
328*4882a593Smuzhiyun			aic: interrupt-controller@3000 {
329*4882a593Smuzhiyun				compatible = "snps,dw-apb-ictl";
330*4882a593Smuzhiyun				reg = <0x3000 0xc00>;
331*4882a593Smuzhiyun				interrupt-controller;
332*4882a593Smuzhiyun				#interrupt-cells = <1>;
333*4882a593Smuzhiyun				interrupt-parent = <&gic>;
334*4882a593Smuzhiyun				interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
335*4882a593Smuzhiyun			};
336*4882a593Smuzhiyun		};
337*4882a593Smuzhiyun
338*4882a593Smuzhiyun		ahci: sata@e90000 {
339*4882a593Smuzhiyun			compatible = "marvell,berlin2-ahci", "generic-ahci";
340*4882a593Smuzhiyun			reg = <0xe90000 0x1000>;
341*4882a593Smuzhiyun			interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
342*4882a593Smuzhiyun			clocks = <&chip_clk CLKID_SATA>;
343*4882a593Smuzhiyun			#address-cells = <1>;
344*4882a593Smuzhiyun			#size-cells = <0>;
345*4882a593Smuzhiyun
346*4882a593Smuzhiyun			sata0: sata-port@0 {
347*4882a593Smuzhiyun				reg = <0>;
348*4882a593Smuzhiyun				phys = <&sata_phy 0>;
349*4882a593Smuzhiyun				status = "disabled";
350*4882a593Smuzhiyun			};
351*4882a593Smuzhiyun
352*4882a593Smuzhiyun			sata1: sata-port@1 {
353*4882a593Smuzhiyun				reg = <1>;
354*4882a593Smuzhiyun				phys = <&sata_phy 1>;
355*4882a593Smuzhiyun				status = "disabled";
356*4882a593Smuzhiyun			};
357*4882a593Smuzhiyun		};
358*4882a593Smuzhiyun
359*4882a593Smuzhiyun		sata_phy: phy@e900a0 {
360*4882a593Smuzhiyun			compatible = "marvell,berlin2-sata-phy";
361*4882a593Smuzhiyun			reg = <0xe900a0 0x200>;
362*4882a593Smuzhiyun			clocks = <&chip_clk CLKID_SATA>;
363*4882a593Smuzhiyun			#address-cells = <1>;
364*4882a593Smuzhiyun			#size-cells = <0>;
365*4882a593Smuzhiyun			#phy-cells = <1>;
366*4882a593Smuzhiyun			status = "disabled";
367*4882a593Smuzhiyun
368*4882a593Smuzhiyun			sata-phy@0 {
369*4882a593Smuzhiyun				reg = <0>;
370*4882a593Smuzhiyun			};
371*4882a593Smuzhiyun
372*4882a593Smuzhiyun			sata-phy@1 {
373*4882a593Smuzhiyun				reg = <1>;
374*4882a593Smuzhiyun			};
375*4882a593Smuzhiyun		};
376*4882a593Smuzhiyun
377*4882a593Smuzhiyun		chip: chip-control@ea0000 {
378*4882a593Smuzhiyun			compatible = "simple-mfd", "syscon";
379*4882a593Smuzhiyun			reg = <0xea0000 0x400>;
380*4882a593Smuzhiyun
381*4882a593Smuzhiyun			chip_clk: clock {
382*4882a593Smuzhiyun				compatible = "marvell,berlin2-clk";
383*4882a593Smuzhiyun				#clock-cells = <1>;
384*4882a593Smuzhiyun				clocks = <&refclk>;
385*4882a593Smuzhiyun				clock-names = "refclk";
386*4882a593Smuzhiyun			};
387*4882a593Smuzhiyun
388*4882a593Smuzhiyun			soc_pinctrl: pin-controller {
389*4882a593Smuzhiyun				compatible = "marvell,berlin2-soc-pinctrl";
390*4882a593Smuzhiyun
391*4882a593Smuzhiyun				emmc_pmux: emmc-pmux {
392*4882a593Smuzhiyun					groups = "G26";
393*4882a593Smuzhiyun					function = "emmc";
394*4882a593Smuzhiyun				};
395*4882a593Smuzhiyun			};
396*4882a593Smuzhiyun
397*4882a593Smuzhiyun			chip_rst: reset {
398*4882a593Smuzhiyun				compatible = "marvell,berlin2-reset";
399*4882a593Smuzhiyun				#reset-cells = <2>;
400*4882a593Smuzhiyun			};
401*4882a593Smuzhiyun		};
402*4882a593Smuzhiyun
403*4882a593Smuzhiyun		pwm: pwm@f20000 {
404*4882a593Smuzhiyun			compatible = "marvell,berlin-pwm";
405*4882a593Smuzhiyun			reg = <0xf20000 0x40>;
406*4882a593Smuzhiyun			clocks = <&chip_clk CLKID_CFG>;
407*4882a593Smuzhiyun			#pwm-cells = <3>;
408*4882a593Smuzhiyun		};
409*4882a593Smuzhiyun
410*4882a593Smuzhiyun		apb@fc0000 {
411*4882a593Smuzhiyun			compatible = "simple-bus";
412*4882a593Smuzhiyun			#address-cells = <1>;
413*4882a593Smuzhiyun			#size-cells = <1>;
414*4882a593Smuzhiyun
415*4882a593Smuzhiyun			ranges = <0 0xfc0000 0x10000>;
416*4882a593Smuzhiyun			interrupt-parent = <&sic>;
417*4882a593Smuzhiyun
418*4882a593Smuzhiyun			wdt0: watchdog@1000 {
419*4882a593Smuzhiyun				compatible = "snps,dw-wdt";
420*4882a593Smuzhiyun				reg = <0x1000 0x100>;
421*4882a593Smuzhiyun				clocks = <&refclk>;
422*4882a593Smuzhiyun				interrupts = <0>;
423*4882a593Smuzhiyun			};
424*4882a593Smuzhiyun
425*4882a593Smuzhiyun			wdt1: watchdog@2000 {
426*4882a593Smuzhiyun				compatible = "snps,dw-wdt";
427*4882a593Smuzhiyun				reg = <0x2000 0x100>;
428*4882a593Smuzhiyun				clocks = <&refclk>;
429*4882a593Smuzhiyun				interrupts = <1>;
430*4882a593Smuzhiyun			};
431*4882a593Smuzhiyun
432*4882a593Smuzhiyun			wdt2: watchdog@3000 {
433*4882a593Smuzhiyun				compatible = "snps,dw-wdt";
434*4882a593Smuzhiyun				reg = <0x3000 0x100>;
435*4882a593Smuzhiyun				clocks = <&refclk>;
436*4882a593Smuzhiyun				interrupts = <2>;
437*4882a593Smuzhiyun			};
438*4882a593Smuzhiyun
439*4882a593Smuzhiyun			sm_gpio1: gpio@5000 {
440*4882a593Smuzhiyun				compatible = "snps,dw-apb-gpio";
441*4882a593Smuzhiyun				reg = <0x5000 0x400>;
442*4882a593Smuzhiyun				#address-cells = <1>;
443*4882a593Smuzhiyun				#size-cells = <0>;
444*4882a593Smuzhiyun
445*4882a593Smuzhiyun				portf: gpio-port@5 {
446*4882a593Smuzhiyun					compatible = "snps,dw-apb-gpio-port";
447*4882a593Smuzhiyun					gpio-controller;
448*4882a593Smuzhiyun					#gpio-cells = <2>;
449*4882a593Smuzhiyun					snps,nr-gpios = <8>;
450*4882a593Smuzhiyun					reg = <0>;
451*4882a593Smuzhiyun				};
452*4882a593Smuzhiyun			};
453*4882a593Smuzhiyun
454*4882a593Smuzhiyun			sm_gpio0: gpio@c000 {
455*4882a593Smuzhiyun				compatible = "snps,dw-apb-gpio";
456*4882a593Smuzhiyun				reg = <0xc000 0x400>;
457*4882a593Smuzhiyun				#address-cells = <1>;
458*4882a593Smuzhiyun				#size-cells = <0>;
459*4882a593Smuzhiyun
460*4882a593Smuzhiyun				porte: gpio-port@4 {
461*4882a593Smuzhiyun					compatible = "snps,dw-apb-gpio-port";
462*4882a593Smuzhiyun					gpio-controller;
463*4882a593Smuzhiyun					#gpio-cells = <2>;
464*4882a593Smuzhiyun					snps,nr-gpios = <8>;
465*4882a593Smuzhiyun					reg = <0>;
466*4882a593Smuzhiyun					interrupt-controller;
467*4882a593Smuzhiyun					#interrupt-cells = <2>;
468*4882a593Smuzhiyun					interrupts = <11>;
469*4882a593Smuzhiyun				};
470*4882a593Smuzhiyun			};
471*4882a593Smuzhiyun
472*4882a593Smuzhiyun			uart0: serial@9000 {
473*4882a593Smuzhiyun				compatible = "snps,dw-apb-uart";
474*4882a593Smuzhiyun				reg = <0x9000 0x100>;
475*4882a593Smuzhiyun				reg-shift = <2>;
476*4882a593Smuzhiyun				reg-io-width = <1>;
477*4882a593Smuzhiyun				interrupts = <8>;
478*4882a593Smuzhiyun				clocks = <&refclk>;
479*4882a593Smuzhiyun				pinctrl-0 = <&uart0_pmux>;
480*4882a593Smuzhiyun				pinctrl-names = "default";
481*4882a593Smuzhiyun				status = "disabled";
482*4882a593Smuzhiyun			};
483*4882a593Smuzhiyun
484*4882a593Smuzhiyun			uart1: serial@a000 {
485*4882a593Smuzhiyun				compatible = "snps,dw-apb-uart";
486*4882a593Smuzhiyun				reg = <0xa000 0x100>;
487*4882a593Smuzhiyun				reg-shift = <2>;
488*4882a593Smuzhiyun				reg-io-width = <1>;
489*4882a593Smuzhiyun				interrupts = <9>;
490*4882a593Smuzhiyun				clocks = <&refclk>;
491*4882a593Smuzhiyun				pinctrl-0 = <&uart1_pmux>;
492*4882a593Smuzhiyun				pinctrl-names = "default";
493*4882a593Smuzhiyun				status = "disabled";
494*4882a593Smuzhiyun			};
495*4882a593Smuzhiyun
496*4882a593Smuzhiyun			uart2: serial@b000 {
497*4882a593Smuzhiyun				compatible = "snps,dw-apb-uart";
498*4882a593Smuzhiyun				reg = <0xb000 0x100>;
499*4882a593Smuzhiyun				reg-shift = <2>;
500*4882a593Smuzhiyun				reg-io-width = <1>;
501*4882a593Smuzhiyun				interrupts = <10>;
502*4882a593Smuzhiyun				clocks = <&refclk>;
503*4882a593Smuzhiyun				pinctrl-0 = <&uart2_pmux>;
504*4882a593Smuzhiyun				pinctrl-names = "default";
505*4882a593Smuzhiyun				status = "disabled";
506*4882a593Smuzhiyun			};
507*4882a593Smuzhiyun
508*4882a593Smuzhiyun			sysctrl: system-controller@d000 {
509*4882a593Smuzhiyun				compatible = "simple-mfd", "syscon";
510*4882a593Smuzhiyun				reg = <0xd000 0x100>;
511*4882a593Smuzhiyun
512*4882a593Smuzhiyun				sys_pinctrl: pin-controller {
513*4882a593Smuzhiyun					compatible = "marvell,berlin2-system-pinctrl";
514*4882a593Smuzhiyun					uart0_pmux: uart0-pmux {
515*4882a593Smuzhiyun						groups = "GSM4";
516*4882a593Smuzhiyun						function = "uart0";
517*4882a593Smuzhiyun					};
518*4882a593Smuzhiyun
519*4882a593Smuzhiyun					uart1_pmux: uart1-pmux {
520*4882a593Smuzhiyun						groups = "GSM5";
521*4882a593Smuzhiyun						function = "uart1";
522*4882a593Smuzhiyun					};
523*4882a593Smuzhiyun					uart2_pmux: uart2-pmux {
524*4882a593Smuzhiyun						groups = "GSM3";
525*4882a593Smuzhiyun						function = "uart2";
526*4882a593Smuzhiyun					};
527*4882a593Smuzhiyun				};
528*4882a593Smuzhiyun			};
529*4882a593Smuzhiyun
530*4882a593Smuzhiyun			sic: interrupt-controller@e000 {
531*4882a593Smuzhiyun				compatible = "snps,dw-apb-ictl";
532*4882a593Smuzhiyun				reg = <0xe000 0x400>;
533*4882a593Smuzhiyun				interrupt-controller;
534*4882a593Smuzhiyun				#interrupt-cells = <1>;
535*4882a593Smuzhiyun				interrupt-parent = <&gic>;
536*4882a593Smuzhiyun				interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
537*4882a593Smuzhiyun			};
538*4882a593Smuzhiyun		};
539*4882a593Smuzhiyun	};
540*4882a593Smuzhiyun};
541