xref: /OK3568_Linux_fs/kernel/arch/arm/boot/dts/mmp3.dtsi (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun// SPDX-License-Identifier: GPL-2.0+ OR MIT
2*4882a593Smuzhiyun/*
3*4882a593Smuzhiyun *  Copyright (C) 2019 Lubomir Rintel <lkundrak@v3.sk>
4*4882a593Smuzhiyun */
5*4882a593Smuzhiyun
6*4882a593Smuzhiyun#include <dt-bindings/clock/marvell,mmp2.h>
7*4882a593Smuzhiyun#include <dt-bindings/power/marvell,mmp2.h>
8*4882a593Smuzhiyun#include <dt-bindings/interrupt-controller/arm-gic.h>
9*4882a593Smuzhiyun
10*4882a593Smuzhiyun/ {
11*4882a593Smuzhiyun	#address-cells = <1>;
12*4882a593Smuzhiyun	#size-cells = <1>;
13*4882a593Smuzhiyun
14*4882a593Smuzhiyun	cpus {
15*4882a593Smuzhiyun		#address-cells = <1>;
16*4882a593Smuzhiyun		#size-cells = <0>;
17*4882a593Smuzhiyun		enable-method = "marvell,mmp3-smp";
18*4882a593Smuzhiyun
19*4882a593Smuzhiyun		cpu@0 {
20*4882a593Smuzhiyun			compatible = "marvell,pj4b";
21*4882a593Smuzhiyun			device_type = "cpu";
22*4882a593Smuzhiyun			next-level-cache = <&l2>;
23*4882a593Smuzhiyun			reg = <0>;
24*4882a593Smuzhiyun		};
25*4882a593Smuzhiyun
26*4882a593Smuzhiyun		cpu@1 {
27*4882a593Smuzhiyun			compatible = "marvell,pj4b";
28*4882a593Smuzhiyun			device_type = "cpu";
29*4882a593Smuzhiyun			next-level-cache = <&l2>;
30*4882a593Smuzhiyun			reg = <1>;
31*4882a593Smuzhiyun		};
32*4882a593Smuzhiyun	};
33*4882a593Smuzhiyun
34*4882a593Smuzhiyun	soc {
35*4882a593Smuzhiyun		#address-cells = <1>;
36*4882a593Smuzhiyun		#size-cells = <1>;
37*4882a593Smuzhiyun		compatible = "simple-bus";
38*4882a593Smuzhiyun		interrupt-parent = <&gic>;
39*4882a593Smuzhiyun		ranges;
40*4882a593Smuzhiyun
41*4882a593Smuzhiyun		axi@d4200000 {
42*4882a593Smuzhiyun			compatible = "simple-bus";
43*4882a593Smuzhiyun			#address-cells = <1>;
44*4882a593Smuzhiyun			#size-cells = <1>;
45*4882a593Smuzhiyun			reg = <0xd4200000 0x00200000>;
46*4882a593Smuzhiyun			ranges;
47*4882a593Smuzhiyun
48*4882a593Smuzhiyun			interrupt-controller@d4282000 {
49*4882a593Smuzhiyun				compatible = "marvell,mmp3-intc";
50*4882a593Smuzhiyun				interrupt-controller;
51*4882a593Smuzhiyun				#interrupt-cells = <1>;
52*4882a593Smuzhiyun				reg = <0xd4282000 0x1000>,
53*4882a593Smuzhiyun				      <0xd4284000 0x100>;
54*4882a593Smuzhiyun				mrvl,intc-nr-irqs = <64>;
55*4882a593Smuzhiyun			};
56*4882a593Smuzhiyun
57*4882a593Smuzhiyun			pmic_mux: interrupt-controller@d4282150 {
58*4882a593Smuzhiyun				compatible = "mrvl,mmp2-mux-intc";
59*4882a593Smuzhiyun				interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
60*4882a593Smuzhiyun				interrupt-controller;
61*4882a593Smuzhiyun				#interrupt-cells = <1>;
62*4882a593Smuzhiyun				reg = <0x150 0x4>, <0x168 0x4>;
63*4882a593Smuzhiyun				reg-names = "mux status", "mux mask";
64*4882a593Smuzhiyun				mrvl,intc-nr-irqs = <4>;
65*4882a593Smuzhiyun			};
66*4882a593Smuzhiyun
67*4882a593Smuzhiyun			rtc_mux: interrupt-controller@d4282154 {
68*4882a593Smuzhiyun				compatible = "mrvl,mmp2-mux-intc";
69*4882a593Smuzhiyun				interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
70*4882a593Smuzhiyun				interrupt-controller;
71*4882a593Smuzhiyun				#interrupt-cells = <1>;
72*4882a593Smuzhiyun				reg = <0x154 0x4>, <0x16c 0x4>;
73*4882a593Smuzhiyun				reg-names = "mux status", "mux mask";
74*4882a593Smuzhiyun				mrvl,intc-nr-irqs = <2>;
75*4882a593Smuzhiyun			};
76*4882a593Smuzhiyun
77*4882a593Smuzhiyun			hsi3_mux: interrupt-controller@d42821bc {
78*4882a593Smuzhiyun				compatible = "mrvl,mmp2-mux-intc";
79*4882a593Smuzhiyun				interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
80*4882a593Smuzhiyun				interrupt-controller;
81*4882a593Smuzhiyun				#interrupt-cells = <1>;
82*4882a593Smuzhiyun				reg = <0x1bc 0x4>, <0x1a4 0x4>;
83*4882a593Smuzhiyun				reg-names = "mux status", "mux mask";
84*4882a593Smuzhiyun				mrvl,intc-nr-irqs = <3>;
85*4882a593Smuzhiyun			};
86*4882a593Smuzhiyun
87*4882a593Smuzhiyun			gpu_mux: interrupt-controller@d42821c0 {
88*4882a593Smuzhiyun				compatible = "mrvl,mmp2-mux-intc";
89*4882a593Smuzhiyun				interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
90*4882a593Smuzhiyun				interrupt-controller;
91*4882a593Smuzhiyun				#interrupt-cells = <1>;
92*4882a593Smuzhiyun				reg = <0x1c0 0x4>, <0x1a8 0x4>;
93*4882a593Smuzhiyun				reg-names = "mux status", "mux mask";
94*4882a593Smuzhiyun				mrvl,intc-nr-irqs = <3>;
95*4882a593Smuzhiyun			};
96*4882a593Smuzhiyun
97*4882a593Smuzhiyun			twsi_mux: interrupt-controller@d4282158 {
98*4882a593Smuzhiyun				compatible = "mrvl,mmp2-mux-intc";
99*4882a593Smuzhiyun				interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
100*4882a593Smuzhiyun				interrupt-controller;
101*4882a593Smuzhiyun				#interrupt-cells = <1>;
102*4882a593Smuzhiyun				reg = <0x158 0x4>, <0x170 0x4>;
103*4882a593Smuzhiyun				reg-names = "mux status", "mux mask";
104*4882a593Smuzhiyun				mrvl,intc-nr-irqs = <5>;
105*4882a593Smuzhiyun			};
106*4882a593Smuzhiyun
107*4882a593Smuzhiyun			hsi2_mux: interrupt-controller@d42821c4 {
108*4882a593Smuzhiyun				compatible = "mrvl,mmp2-mux-intc";
109*4882a593Smuzhiyun				interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
110*4882a593Smuzhiyun				interrupt-controller;
111*4882a593Smuzhiyun				#interrupt-cells = <1>;
112*4882a593Smuzhiyun				reg = <0x1c4 0x4>, <0x1ac 0x4>;
113*4882a593Smuzhiyun				reg-names = "mux status", "mux mask";
114*4882a593Smuzhiyun				mrvl,intc-nr-irqs = <2>;
115*4882a593Smuzhiyun			};
116*4882a593Smuzhiyun
117*4882a593Smuzhiyun			dxo_mux: interrupt-controller@d42821c8 {
118*4882a593Smuzhiyun				compatible = "mrvl,mmp2-mux-intc";
119*4882a593Smuzhiyun				interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
120*4882a593Smuzhiyun				interrupt-controller;
121*4882a593Smuzhiyun				#interrupt-cells = <1>;
122*4882a593Smuzhiyun				reg = <0x1c8 0x4>, <0x1b0 0x4>;
123*4882a593Smuzhiyun				reg-names = "mux status", "mux mask";
124*4882a593Smuzhiyun				mrvl,intc-nr-irqs = <2>;
125*4882a593Smuzhiyun			};
126*4882a593Smuzhiyun
127*4882a593Smuzhiyun			misc1_mux: interrupt-controller@d428215c {
128*4882a593Smuzhiyun				compatible = "mrvl,mmp2-mux-intc";
129*4882a593Smuzhiyun				interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
130*4882a593Smuzhiyun				interrupt-controller;
131*4882a593Smuzhiyun				#interrupt-cells = <1>;
132*4882a593Smuzhiyun				reg = <0x15c 0x4>, <0x174 0x4>;
133*4882a593Smuzhiyun				reg-names = "mux status", "mux mask";
134*4882a593Smuzhiyun				mrvl,intc-nr-irqs = <31>;
135*4882a593Smuzhiyun			};
136*4882a593Smuzhiyun
137*4882a593Smuzhiyun			ci_mux: interrupt-controller@d42821cc {
138*4882a593Smuzhiyun				compatible = "mrvl,mmp2-mux-intc";
139*4882a593Smuzhiyun				interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
140*4882a593Smuzhiyun				interrupt-controller;
141*4882a593Smuzhiyun				#interrupt-cells = <1>;
142*4882a593Smuzhiyun				reg = <0x1cc 0x4>, <0x1b4 0x4>;
143*4882a593Smuzhiyun				reg-names = "mux status", "mux mask";
144*4882a593Smuzhiyun				mrvl,intc-nr-irqs = <2>;
145*4882a593Smuzhiyun			};
146*4882a593Smuzhiyun
147*4882a593Smuzhiyun			ssp_mux: interrupt-controller@d4282160 {
148*4882a593Smuzhiyun				compatible = "mrvl,mmp2-mux-intc";
149*4882a593Smuzhiyun				interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
150*4882a593Smuzhiyun				interrupt-controller;
151*4882a593Smuzhiyun				#interrupt-cells = <1>;
152*4882a593Smuzhiyun				reg = <0x160 0x4>, <0x178 0x4>;
153*4882a593Smuzhiyun				reg-names = "mux status", "mux mask";
154*4882a593Smuzhiyun				mrvl,intc-nr-irqs = <2>;
155*4882a593Smuzhiyun			};
156*4882a593Smuzhiyun
157*4882a593Smuzhiyun			hsi1_mux: interrupt-controller@d4282184 {
158*4882a593Smuzhiyun				compatible = "mrvl,mmp2-mux-intc";
159*4882a593Smuzhiyun				interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
160*4882a593Smuzhiyun				interrupt-controller;
161*4882a593Smuzhiyun				#interrupt-cells = <1>;
162*4882a593Smuzhiyun				reg = <0x184 0x4>, <0x17c 0x4>;
163*4882a593Smuzhiyun				reg-names = "mux status", "mux mask";
164*4882a593Smuzhiyun				mrvl,intc-nr-irqs = <4>;
165*4882a593Smuzhiyun			};
166*4882a593Smuzhiyun
167*4882a593Smuzhiyun			misc2_mux: interrupt-controller@d4282188 {
168*4882a593Smuzhiyun				compatible = "mrvl,mmp2-mux-intc";
169*4882a593Smuzhiyun				interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
170*4882a593Smuzhiyun				interrupt-controller;
171*4882a593Smuzhiyun				#interrupt-cells = <1>;
172*4882a593Smuzhiyun				reg = <0x188 0x4>, <0x180 0x4>;
173*4882a593Smuzhiyun				reg-names = "mux status", "mux mask";
174*4882a593Smuzhiyun				mrvl,intc-nr-irqs = <20>;
175*4882a593Smuzhiyun			};
176*4882a593Smuzhiyun
177*4882a593Smuzhiyun			hsi0_mux: interrupt-controller@d42821d0 {
178*4882a593Smuzhiyun				compatible = "mrvl,mmp2-mux-intc";
179*4882a593Smuzhiyun				interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>;
180*4882a593Smuzhiyun				interrupt-controller;
181*4882a593Smuzhiyun				#interrupt-cells = <1>;
182*4882a593Smuzhiyun				reg = <0x1d0 0x4>, <0x1b8 0x4>;
183*4882a593Smuzhiyun				reg-names = "mux status", "mux mask";
184*4882a593Smuzhiyun				mrvl,intc-nr-irqs = <5>;
185*4882a593Smuzhiyun			};
186*4882a593Smuzhiyun
187*4882a593Smuzhiyun			usb_otg_phy0: usb-phy@d4207000 {
188*4882a593Smuzhiyun				compatible = "marvell,mmp3-usb-phy";
189*4882a593Smuzhiyun				reg = <0xd4207000 0x40>;
190*4882a593Smuzhiyun				#phy-cells = <0>;
191*4882a593Smuzhiyun				status = "disabled";
192*4882a593Smuzhiyun			};
193*4882a593Smuzhiyun
194*4882a593Smuzhiyun			usb_otg0: usb@d4208000 {
195*4882a593Smuzhiyun				compatible = "marvell,pxau2o-ehci";
196*4882a593Smuzhiyun				reg = <0xd4208000 0x200>;
197*4882a593Smuzhiyun				interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
198*4882a593Smuzhiyun				clocks = <&soc_clocks MMP2_CLK_USB>;
199*4882a593Smuzhiyun				clock-names = "USBCLK";
200*4882a593Smuzhiyun				phys = <&usb_otg_phy0>;
201*4882a593Smuzhiyun				phy-names = "usb";
202*4882a593Smuzhiyun				status = "disabled";
203*4882a593Smuzhiyun			};
204*4882a593Smuzhiyun
205*4882a593Smuzhiyun			hsic_phy0: usb-phy@f0001800 {
206*4882a593Smuzhiyun				compatible = "marvell,mmp3-hsic-phy";
207*4882a593Smuzhiyun				reg = <0xf0001800 0x40>;
208*4882a593Smuzhiyun				#phy-cells = <0>;
209*4882a593Smuzhiyun				status = "disabled";
210*4882a593Smuzhiyun			};
211*4882a593Smuzhiyun
212*4882a593Smuzhiyun			hsic0: usb@f0001000 {
213*4882a593Smuzhiyun				compatible = "marvell,pxau2o-ehci";
214*4882a593Smuzhiyun				reg = <0xf0001000 0x200>;
215*4882a593Smuzhiyun				interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
216*4882a593Smuzhiyun				clocks = <&soc_clocks MMP2_CLK_USBHSIC0>;
217*4882a593Smuzhiyun				clock-names = "USBCLK";
218*4882a593Smuzhiyun				phys = <&hsic_phy0>;
219*4882a593Smuzhiyun				phy-names = "usb";
220*4882a593Smuzhiyun				phy_type = "hsic";
221*4882a593Smuzhiyun				#address-cells = <0x01>;
222*4882a593Smuzhiyun				#size-cells = <0x00>;
223*4882a593Smuzhiyun				status = "disabled";
224*4882a593Smuzhiyun			};
225*4882a593Smuzhiyun
226*4882a593Smuzhiyun			hsic_phy1: usb-phy@f0002800 {
227*4882a593Smuzhiyun				compatible = "marvell,mmp3-hsic-phy";
228*4882a593Smuzhiyun				reg = <0xf0002800 0x40>;
229*4882a593Smuzhiyun				#phy-cells = <0>;
230*4882a593Smuzhiyun				status = "disabled";
231*4882a593Smuzhiyun			};
232*4882a593Smuzhiyun
233*4882a593Smuzhiyun			hsic1: usb@f0002000 {
234*4882a593Smuzhiyun				compatible = "marvell,pxau2o-ehci";
235*4882a593Smuzhiyun				reg = <0xf0002000 0x200>;
236*4882a593Smuzhiyun				interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
237*4882a593Smuzhiyun				clocks = <&soc_clocks MMP2_CLK_USBHSIC1>;
238*4882a593Smuzhiyun				clock-names = "USBCLK";
239*4882a593Smuzhiyun				phys = <&hsic_phy1>;
240*4882a593Smuzhiyun				phy-names = "usb";
241*4882a593Smuzhiyun				phy_type = "hsic";
242*4882a593Smuzhiyun				#address-cells = <0x01>;
243*4882a593Smuzhiyun				#size-cells = <0x00>;
244*4882a593Smuzhiyun				status = "disabled";
245*4882a593Smuzhiyun			};
246*4882a593Smuzhiyun
247*4882a593Smuzhiyun			mmc1: mmc@d4280000 {
248*4882a593Smuzhiyun				compatible = "mrvl,pxav3-mmc";
249*4882a593Smuzhiyun				reg = <0xd4280000 0x120>;
250*4882a593Smuzhiyun				clocks = <&soc_clocks MMP2_CLK_SDH0>;
251*4882a593Smuzhiyun				clock-names = "io";
252*4882a593Smuzhiyun				interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
253*4882a593Smuzhiyun				status = "disabled";
254*4882a593Smuzhiyun			};
255*4882a593Smuzhiyun
256*4882a593Smuzhiyun			mmc2: mmc@d4280800 {
257*4882a593Smuzhiyun				compatible = "mrvl,pxav3-mmc";
258*4882a593Smuzhiyun				reg = <0xd4280800 0x120>;
259*4882a593Smuzhiyun				clocks = <&soc_clocks MMP2_CLK_SDH1>;
260*4882a593Smuzhiyun				clock-names = "io";
261*4882a593Smuzhiyun				interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
262*4882a593Smuzhiyun				status = "disabled";
263*4882a593Smuzhiyun			};
264*4882a593Smuzhiyun
265*4882a593Smuzhiyun			mmc3: mmc@d4281000 {
266*4882a593Smuzhiyun				compatible = "mrvl,pxav3-mmc";
267*4882a593Smuzhiyun				reg = <0xd4281000 0x120>;
268*4882a593Smuzhiyun				clocks = <&soc_clocks MMP2_CLK_SDH2>;
269*4882a593Smuzhiyun				clock-names = "io";
270*4882a593Smuzhiyun				interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
271*4882a593Smuzhiyun				status = "disabled";
272*4882a593Smuzhiyun			};
273*4882a593Smuzhiyun
274*4882a593Smuzhiyun			mmc4: mmc@d4281800 {
275*4882a593Smuzhiyun				compatible = "mrvl,pxav3-mmc";
276*4882a593Smuzhiyun				reg = <0xd4281800 0x120>;
277*4882a593Smuzhiyun				clocks = <&soc_clocks MMP2_CLK_SDH3>;
278*4882a593Smuzhiyun				clock-names = "io";
279*4882a593Smuzhiyun				interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
280*4882a593Smuzhiyun				status = "disabled";
281*4882a593Smuzhiyun			};
282*4882a593Smuzhiyun
283*4882a593Smuzhiyun			mmc5: mmc@d4217000 {
284*4882a593Smuzhiyun				compatible = "mrvl,pxav3-mmc";
285*4882a593Smuzhiyun				reg = <0xd4217000 0x120>;
286*4882a593Smuzhiyun				clocks = <&soc_clocks MMP3_CLK_SDH4>;
287*4882a593Smuzhiyun				clock-names = "io";
288*4882a593Smuzhiyun				interrupt-parent = <&hsi1_mux>;
289*4882a593Smuzhiyun				interrupts = <0>;
290*4882a593Smuzhiyun				status = "disabled";
291*4882a593Smuzhiyun			};
292*4882a593Smuzhiyun
293*4882a593Smuzhiyun			camera0: camera@d420a000 {
294*4882a593Smuzhiyun				compatible = "marvell,mmp2-ccic";
295*4882a593Smuzhiyun				reg = <0xd420a000 0x800>;
296*4882a593Smuzhiyun				interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
297*4882a593Smuzhiyun				clocks = <&soc_clocks MMP2_CLK_CCIC0>;
298*4882a593Smuzhiyun				clock-names = "axi";
299*4882a593Smuzhiyun				power-domains = <&soc_clocks MMP3_POWER_DOMAIN_CAMERA>;
300*4882a593Smuzhiyun				#clock-cells = <0>;
301*4882a593Smuzhiyun				clock-output-names = "mclk";
302*4882a593Smuzhiyun				status = "disabled";
303*4882a593Smuzhiyun			};
304*4882a593Smuzhiyun
305*4882a593Smuzhiyun			camera1: camera@d420a800 {
306*4882a593Smuzhiyun				compatible = "marvell,mmp2-ccic";
307*4882a593Smuzhiyun				reg = <0xd420a800 0x800>;
308*4882a593Smuzhiyun				interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
309*4882a593Smuzhiyun				clocks = <&soc_clocks MMP2_CLK_CCIC1>;
310*4882a593Smuzhiyun				clock-names = "axi";
311*4882a593Smuzhiyun				power-domains = <&soc_clocks MMP3_POWER_DOMAIN_CAMERA>;
312*4882a593Smuzhiyun				#clock-cells = <0>;
313*4882a593Smuzhiyun				clock-output-names = "mclk";
314*4882a593Smuzhiyun				status = "disabled";
315*4882a593Smuzhiyun			};
316*4882a593Smuzhiyun
317*4882a593Smuzhiyun			gpu_3d: gpu@d420d000 {
318*4882a593Smuzhiyun				compatible = "vivante,gc";
319*4882a593Smuzhiyun				reg = <0xd420d000 0x2000>;
320*4882a593Smuzhiyun				interrupt-parent = <&gpu_mux>;
321*4882a593Smuzhiyun				interrupts = <0>;
322*4882a593Smuzhiyun				status = "disabled";
323*4882a593Smuzhiyun				clocks = <&soc_clocks MMP3_CLK_GPU_3D>,
324*4882a593Smuzhiyun					 <&soc_clocks MMP3_CLK_GPU_BUS>;
325*4882a593Smuzhiyun				clock-names = "core", "bus";
326*4882a593Smuzhiyun				power-domains = <&soc_clocks MMP2_POWER_DOMAIN_GPU>;
327*4882a593Smuzhiyun			};
328*4882a593Smuzhiyun
329*4882a593Smuzhiyun			gpu_2d: gpu@d420f000 {
330*4882a593Smuzhiyun				compatible = "vivante,gc";
331*4882a593Smuzhiyun				reg = <0xd420f000 0x2000>;
332*4882a593Smuzhiyun				interrupt-parent = <&gpu_mux>;
333*4882a593Smuzhiyun				interrupts = <2>;
334*4882a593Smuzhiyun				status = "disabled";
335*4882a593Smuzhiyun				clocks = <&soc_clocks MMP3_CLK_GPU_2D>,
336*4882a593Smuzhiyun					 <&soc_clocks MMP3_CLK_GPU_BUS>;
337*4882a593Smuzhiyun				clock-names = "core", "bus";
338*4882a593Smuzhiyun				power-domains = <&soc_clocks MMP2_POWER_DOMAIN_GPU>;
339*4882a593Smuzhiyun			};
340*4882a593Smuzhiyun		};
341*4882a593Smuzhiyun
342*4882a593Smuzhiyun		apb@d4000000 {
343*4882a593Smuzhiyun			compatible = "simple-bus";
344*4882a593Smuzhiyun			#address-cells = <1>;
345*4882a593Smuzhiyun			#size-cells = <1>;
346*4882a593Smuzhiyun			reg = <0xd4000000 0x00200000>;
347*4882a593Smuzhiyun			ranges;
348*4882a593Smuzhiyun
349*4882a593Smuzhiyun			timer: timer@d4014000 {
350*4882a593Smuzhiyun				compatible = "mrvl,mmp-timer";
351*4882a593Smuzhiyun				reg = <0xd4014000 0x100>;
352*4882a593Smuzhiyun				interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
353*4882a593Smuzhiyun				clocks = <&soc_clocks MMP2_CLK_TIMER>;
354*4882a593Smuzhiyun			};
355*4882a593Smuzhiyun
356*4882a593Smuzhiyun			uart1: serial@d4030000 {
357*4882a593Smuzhiyun				compatible = "mrvl,mmp-uart", "intel,xscale-uart";
358*4882a593Smuzhiyun				reg = <0xd4030000 0x1000>;
359*4882a593Smuzhiyun				interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
360*4882a593Smuzhiyun				clocks = <&soc_clocks MMP2_CLK_UART0>;
361*4882a593Smuzhiyun				resets = <&soc_clocks MMP2_CLK_UART0>;
362*4882a593Smuzhiyun				reg-shift = <2>;
363*4882a593Smuzhiyun				status = "disabled";
364*4882a593Smuzhiyun			};
365*4882a593Smuzhiyun
366*4882a593Smuzhiyun			uart2: serial@d4017000 {
367*4882a593Smuzhiyun				compatible = "mrvl,mmp-uart", "intel,xscale-uart";
368*4882a593Smuzhiyun				reg = <0xd4017000 0x1000>;
369*4882a593Smuzhiyun				interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
370*4882a593Smuzhiyun				clocks = <&soc_clocks MMP2_CLK_UART1>;
371*4882a593Smuzhiyun				resets = <&soc_clocks MMP2_CLK_UART1>;
372*4882a593Smuzhiyun				reg-shift = <2>;
373*4882a593Smuzhiyun				status = "disabled";
374*4882a593Smuzhiyun			};
375*4882a593Smuzhiyun
376*4882a593Smuzhiyun			uart3: serial@d4018000 {
377*4882a593Smuzhiyun				compatible = "mrvl,mmp-uart", "intel,xscale-uart";
378*4882a593Smuzhiyun				reg = <0xd4018000 0x1000>;
379*4882a593Smuzhiyun				interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
380*4882a593Smuzhiyun				clocks = <&soc_clocks MMP2_CLK_UART2>;
381*4882a593Smuzhiyun				resets = <&soc_clocks MMP2_CLK_UART2>;
382*4882a593Smuzhiyun				reg-shift = <2>;
383*4882a593Smuzhiyun				status = "disabled";
384*4882a593Smuzhiyun			};
385*4882a593Smuzhiyun
386*4882a593Smuzhiyun			uart4: serial@d4016000 {
387*4882a593Smuzhiyun				compatible = "mrvl,mmp-uart", "intel,xscale-uart";
388*4882a593Smuzhiyun				reg = <0xd4016000 0x1000>;
389*4882a593Smuzhiyun				interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
390*4882a593Smuzhiyun				clocks = <&soc_clocks MMP2_CLK_UART3>;
391*4882a593Smuzhiyun				resets = <&soc_clocks MMP2_CLK_UART3>;
392*4882a593Smuzhiyun				reg-shift = <2>;
393*4882a593Smuzhiyun				status = "disabled";
394*4882a593Smuzhiyun			};
395*4882a593Smuzhiyun
396*4882a593Smuzhiyun			gpio: gpio@d4019000 {
397*4882a593Smuzhiyun				compatible = "marvell,mmp2-gpio";
398*4882a593Smuzhiyun				#address-cells = <1>;
399*4882a593Smuzhiyun				#size-cells = <1>;
400*4882a593Smuzhiyun				reg = <0xd4019000 0x1000>;
401*4882a593Smuzhiyun				gpio-controller;
402*4882a593Smuzhiyun				#gpio-cells = <2>;
403*4882a593Smuzhiyun				interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
404*4882a593Smuzhiyun				interrupt-names = "gpio_mux";
405*4882a593Smuzhiyun				clocks = <&soc_clocks MMP2_CLK_GPIO>;
406*4882a593Smuzhiyun				resets = <&soc_clocks MMP2_CLK_GPIO>;
407*4882a593Smuzhiyun				interrupt-controller;
408*4882a593Smuzhiyun				#interrupt-cells = <2>;
409*4882a593Smuzhiyun				ranges;
410*4882a593Smuzhiyun
411*4882a593Smuzhiyun				gcb0: gpio@d4019000 {
412*4882a593Smuzhiyun					reg = <0xd4019000 0x4>;
413*4882a593Smuzhiyun				};
414*4882a593Smuzhiyun
415*4882a593Smuzhiyun				gcb1: gpio@d4019004 {
416*4882a593Smuzhiyun					reg = <0xd4019004 0x4>;
417*4882a593Smuzhiyun				};
418*4882a593Smuzhiyun
419*4882a593Smuzhiyun				gcb2: gpio@d4019008 {
420*4882a593Smuzhiyun					reg = <0xd4019008 0x4>;
421*4882a593Smuzhiyun				};
422*4882a593Smuzhiyun
423*4882a593Smuzhiyun				gcb3: gpio@d4019100 {
424*4882a593Smuzhiyun					reg = <0xd4019100 0x4>;
425*4882a593Smuzhiyun				};
426*4882a593Smuzhiyun
427*4882a593Smuzhiyun				gcb4: gpio@d4019104 {
428*4882a593Smuzhiyun					reg = <0xd4019104 0x4>;
429*4882a593Smuzhiyun				};
430*4882a593Smuzhiyun
431*4882a593Smuzhiyun				gcb5: gpio@d4019108 {
432*4882a593Smuzhiyun					reg = <0xd4019108 0x4>;
433*4882a593Smuzhiyun				};
434*4882a593Smuzhiyun			};
435*4882a593Smuzhiyun
436*4882a593Smuzhiyun			twsi1: i2c@d4011000 {
437*4882a593Smuzhiyun				compatible = "mrvl,mmp-twsi";
438*4882a593Smuzhiyun				reg = <0xd4011000 0x70>;
439*4882a593Smuzhiyun				interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
440*4882a593Smuzhiyun				clocks = <&soc_clocks MMP2_CLK_TWSI0>;
441*4882a593Smuzhiyun				resets = <&soc_clocks MMP2_CLK_TWSI0>;
442*4882a593Smuzhiyun				#address-cells = <1>;
443*4882a593Smuzhiyun				#size-cells = <0>;
444*4882a593Smuzhiyun				mrvl,i2c-fast-mode;
445*4882a593Smuzhiyun				status = "disabled";
446*4882a593Smuzhiyun			};
447*4882a593Smuzhiyun
448*4882a593Smuzhiyun			twsi2: i2c@d4031000 {
449*4882a593Smuzhiyun				compatible = "mrvl,mmp-twsi";
450*4882a593Smuzhiyun				reg = <0xd4031000 0x70>;
451*4882a593Smuzhiyun				interrupt-parent = <&twsi_mux>;
452*4882a593Smuzhiyun				interrupts = <0>;
453*4882a593Smuzhiyun				clocks = <&soc_clocks MMP2_CLK_TWSI1>;
454*4882a593Smuzhiyun				resets = <&soc_clocks MMP2_CLK_TWSI1>;
455*4882a593Smuzhiyun				#address-cells = <1>;
456*4882a593Smuzhiyun				#size-cells = <0>;
457*4882a593Smuzhiyun				status = "disabled";
458*4882a593Smuzhiyun			};
459*4882a593Smuzhiyun
460*4882a593Smuzhiyun			twsi3: i2c@d4032000 {
461*4882a593Smuzhiyun				compatible = "mrvl,mmp-twsi";
462*4882a593Smuzhiyun				reg = <0xd4032000 0x70>;
463*4882a593Smuzhiyun				interrupt-parent = <&twsi_mux>;
464*4882a593Smuzhiyun				interrupts = <1>;
465*4882a593Smuzhiyun				clocks = <&soc_clocks MMP2_CLK_TWSI2>;
466*4882a593Smuzhiyun				resets = <&soc_clocks MMP2_CLK_TWSI2>;
467*4882a593Smuzhiyun				#address-cells = <1>;
468*4882a593Smuzhiyun				#size-cells = <0>;
469*4882a593Smuzhiyun				status = "disabled";
470*4882a593Smuzhiyun			};
471*4882a593Smuzhiyun
472*4882a593Smuzhiyun			twsi4: i2c@d4033000 {
473*4882a593Smuzhiyun				compatible = "mrvl,mmp-twsi";
474*4882a593Smuzhiyun				reg = <0xd4033000 0x70>;
475*4882a593Smuzhiyun				interrupt-parent = <&twsi_mux>;
476*4882a593Smuzhiyun				interrupts = <2>;
477*4882a593Smuzhiyun				clocks = <&soc_clocks MMP2_CLK_TWSI3>;
478*4882a593Smuzhiyun				resets = <&soc_clocks MMP2_CLK_TWSI3>;
479*4882a593Smuzhiyun				#address-cells = <1>;
480*4882a593Smuzhiyun				#size-cells = <0>;
481*4882a593Smuzhiyun				status = "disabled";
482*4882a593Smuzhiyun			};
483*4882a593Smuzhiyun
484*4882a593Smuzhiyun
485*4882a593Smuzhiyun			twsi5: i2c@d4033800 {
486*4882a593Smuzhiyun				compatible = "mrvl,mmp-twsi";
487*4882a593Smuzhiyun				reg = <0xd4033800 0x70>;
488*4882a593Smuzhiyun				interrupt-parent = <&twsi_mux>;
489*4882a593Smuzhiyun				interrupts = <3>;
490*4882a593Smuzhiyun				clocks = <&soc_clocks MMP2_CLK_TWSI4>;
491*4882a593Smuzhiyun				resets = <&soc_clocks MMP2_CLK_TWSI4>;
492*4882a593Smuzhiyun				#address-cells = <1>;
493*4882a593Smuzhiyun				#size-cells = <0>;
494*4882a593Smuzhiyun				status = "disabled";
495*4882a593Smuzhiyun			};
496*4882a593Smuzhiyun
497*4882a593Smuzhiyun			twsi6: i2c@d4034000 {
498*4882a593Smuzhiyun				compatible = "mrvl,mmp-twsi";
499*4882a593Smuzhiyun				reg = <0xd4034000 0x70>;
500*4882a593Smuzhiyun				interrupt-parent = <&twsi_mux>;
501*4882a593Smuzhiyun				interrupts = <4>;
502*4882a593Smuzhiyun				clocks = <&soc_clocks MMP2_CLK_TWSI5>;
503*4882a593Smuzhiyun				resets = <&soc_clocks MMP2_CLK_TWSI5>;
504*4882a593Smuzhiyun				#address-cells = <1>;
505*4882a593Smuzhiyun				#size-cells = <0>;
506*4882a593Smuzhiyun				status = "disabled";
507*4882a593Smuzhiyun			};
508*4882a593Smuzhiyun
509*4882a593Smuzhiyun			rtc: rtc@d4010000 {
510*4882a593Smuzhiyun				compatible = "mrvl,mmp-rtc";
511*4882a593Smuzhiyun				reg = <0xd4010000 0x1000>;
512*4882a593Smuzhiyun				interrupts = <1>, <0>;
513*4882a593Smuzhiyun				interrupt-names = "rtc 1Hz", "rtc alarm";
514*4882a593Smuzhiyun				interrupt-parent = <&rtc_mux>;
515*4882a593Smuzhiyun				clocks = <&soc_clocks MMP2_CLK_RTC>;
516*4882a593Smuzhiyun				resets = <&soc_clocks MMP2_CLK_RTC>;
517*4882a593Smuzhiyun				status = "disabled";
518*4882a593Smuzhiyun			};
519*4882a593Smuzhiyun
520*4882a593Smuzhiyun			ssp1: spi@d4035000 {
521*4882a593Smuzhiyun				compatible = "marvell,mmp2-ssp";
522*4882a593Smuzhiyun				reg = <0xd4035000 0x1000>;
523*4882a593Smuzhiyun				clocks = <&soc_clocks MMP2_CLK_SSP0>;
524*4882a593Smuzhiyun				interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
525*4882a593Smuzhiyun				#address-cells = <1>;
526*4882a593Smuzhiyun				#size-cells = <0>;
527*4882a593Smuzhiyun				status = "disabled";
528*4882a593Smuzhiyun			};
529*4882a593Smuzhiyun
530*4882a593Smuzhiyun			ssp2: spi@d4036000 {
531*4882a593Smuzhiyun				compatible = "marvell,mmp2-ssp";
532*4882a593Smuzhiyun				reg = <0xd4036000 0x1000>;
533*4882a593Smuzhiyun				clocks = <&soc_clocks MMP2_CLK_SSP1>;
534*4882a593Smuzhiyun				interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
535*4882a593Smuzhiyun				#address-cells = <1>;
536*4882a593Smuzhiyun				#size-cells = <0>;
537*4882a593Smuzhiyun				status = "disabled";
538*4882a593Smuzhiyun			};
539*4882a593Smuzhiyun
540*4882a593Smuzhiyun			ssp3: spi@d4037000 {
541*4882a593Smuzhiyun				compatible = "marvell,mmp2-ssp";
542*4882a593Smuzhiyun				reg = <0xd4037000 0x1000>;
543*4882a593Smuzhiyun				clocks = <&soc_clocks MMP2_CLK_SSP2>;
544*4882a593Smuzhiyun				interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
545*4882a593Smuzhiyun				#address-cells = <1>;
546*4882a593Smuzhiyun				#size-cells = <0>;
547*4882a593Smuzhiyun				status = "disabled";
548*4882a593Smuzhiyun			};
549*4882a593Smuzhiyun
550*4882a593Smuzhiyun			ssp4: spi@d4039000 {
551*4882a593Smuzhiyun				compatible = "marvell,mmp2-ssp";
552*4882a593Smuzhiyun				reg = <0xd4039000 0x1000>;
553*4882a593Smuzhiyun				clocks = <&soc_clocks MMP2_CLK_SSP3>;
554*4882a593Smuzhiyun				interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
555*4882a593Smuzhiyun				#address-cells = <1>;
556*4882a593Smuzhiyun				#size-cells = <0>;
557*4882a593Smuzhiyun				status = "disabled";
558*4882a593Smuzhiyun			};
559*4882a593Smuzhiyun		};
560*4882a593Smuzhiyun
561*4882a593Smuzhiyun		l2: cache-controller@d0020000 {
562*4882a593Smuzhiyun			compatible = "marvell,tauros3-cache", "arm,pl310-cache";
563*4882a593Smuzhiyun			reg = <0xd0020000 0x1000>;
564*4882a593Smuzhiyun			cache-unified;
565*4882a593Smuzhiyun			cache-level = <2>;
566*4882a593Smuzhiyun		};
567*4882a593Smuzhiyun
568*4882a593Smuzhiyun		soc_clocks: clocks@d4050000 {
569*4882a593Smuzhiyun			compatible = "marvell,mmp3-clock";
570*4882a593Smuzhiyun			reg = <0xd4050000 0x1000>,
571*4882a593Smuzhiyun			      <0xd4282800 0x400>,
572*4882a593Smuzhiyun			      <0xd4015000 0x1000>;
573*4882a593Smuzhiyun			reg-names = "mpmu", "apmu", "apbc";
574*4882a593Smuzhiyun			#clock-cells = <1>;
575*4882a593Smuzhiyun			#reset-cells = <1>;
576*4882a593Smuzhiyun			#power-domain-cells = <1>;
577*4882a593Smuzhiyun		};
578*4882a593Smuzhiyun
579*4882a593Smuzhiyun		snoop-control-unit@e0000000 {
580*4882a593Smuzhiyun			compatible = "arm,arm11mp-scu";
581*4882a593Smuzhiyun			reg = <0xe0000000 0x100>;
582*4882a593Smuzhiyun		};
583*4882a593Smuzhiyun
584*4882a593Smuzhiyun		gic: interrupt-controller@e0001000 {
585*4882a593Smuzhiyun			compatible = "arm,arm11mp-gic";
586*4882a593Smuzhiyun			interrupt-controller;
587*4882a593Smuzhiyun			#interrupt-cells = <3>;
588*4882a593Smuzhiyun			reg = <0xe0001000 0x1000>,
589*4882a593Smuzhiyun			      <0xe0000100 0x100>;
590*4882a593Smuzhiyun		};
591*4882a593Smuzhiyun
592*4882a593Smuzhiyun		local-timer@e0000600 {
593*4882a593Smuzhiyun			compatible = "arm,arm11mp-twd-timer";
594*4882a593Smuzhiyun			interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(2) |
595*4882a593Smuzhiyun						  IRQ_TYPE_EDGE_RISING)>;
596*4882a593Smuzhiyun			reg = <0xe0000600 0x20>;
597*4882a593Smuzhiyun		};
598*4882a593Smuzhiyun
599*4882a593Smuzhiyun		watchdog@e0000620 {
600*4882a593Smuzhiyun			compatible = "arm,arm11mp-twd-wdt";
601*4882a593Smuzhiyun			reg = <0xe0000620 0x20>;
602*4882a593Smuzhiyun			interrupts = <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(2) |
603*4882a593Smuzhiyun						  IRQ_TYPE_EDGE_RISING)>;
604*4882a593Smuzhiyun		};
605*4882a593Smuzhiyun	};
606*4882a593Smuzhiyun};
607