1*724ba675SRob Herring// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2*724ba675SRob Herring/*
3*724ba675SRob Herring * Actions Semi S500 SoC
4*724ba675SRob Herring *
5*724ba675SRob Herring * Copyright (c) 2016-2017 Andreas Färber
6*724ba675SRob Herring */
7*724ba675SRob Herring
8*724ba675SRob Herring#include <dt-bindings/clock/actions,s500-cmu.h>
9*724ba675SRob Herring#include <dt-bindings/gpio/gpio.h>
10*724ba675SRob Herring#include <dt-bindings/interrupt-controller/arm-gic.h>
11*724ba675SRob Herring#include <dt-bindings/power/owl-s500-powergate.h>
12*724ba675SRob Herring#include <dt-bindings/reset/actions,s500-reset.h>
13*724ba675SRob Herring
14*724ba675SRob Herring/ {
15*724ba675SRob Herring	compatible = "actions,s500";
16*724ba675SRob Herring	interrupt-parent = <&gic>;
17*724ba675SRob Herring	#address-cells = <1>;
18*724ba675SRob Herring	#size-cells = <1>;
19*724ba675SRob Herring
20*724ba675SRob Herring	aliases {
21*724ba675SRob Herring	};
22*724ba675SRob Herring
23*724ba675SRob Herring	chosen {
24*724ba675SRob Herring	};
25*724ba675SRob Herring
26*724ba675SRob Herring	cpus {
27*724ba675SRob Herring		#address-cells = <1>;
28*724ba675SRob Herring		#size-cells = <0>;
29*724ba675SRob Herring
30*724ba675SRob Herring		cpu0: cpu@0 {
31*724ba675SRob Herring			device_type = "cpu";
32*724ba675SRob Herring			compatible = "arm,cortex-a9";
33*724ba675SRob Herring			reg = <0x0>;
34*724ba675SRob Herring			enable-method = "actions,s500-smp";
35*724ba675SRob Herring		};
36*724ba675SRob Herring
37*724ba675SRob Herring		cpu1: cpu@1 {
38*724ba675SRob Herring			device_type = "cpu";
39*724ba675SRob Herring			compatible = "arm,cortex-a9";
40*724ba675SRob Herring			reg = <0x1>;
41*724ba675SRob Herring			enable-method = "actions,s500-smp";
42*724ba675SRob Herring		};
43*724ba675SRob Herring
44*724ba675SRob Herring		cpu2: cpu@2 {
45*724ba675SRob Herring			device_type = "cpu";
46*724ba675SRob Herring			compatible = "arm,cortex-a9";
47*724ba675SRob Herring			reg = <0x2>;
48*724ba675SRob Herring			enable-method = "actions,s500-smp";
49*724ba675SRob Herring			power-domains = <&sps S500_PD_CPU2>;
50*724ba675SRob Herring		};
51*724ba675SRob Herring
52*724ba675SRob Herring		cpu3: cpu@3 {
53*724ba675SRob Herring			device_type = "cpu";
54*724ba675SRob Herring			compatible = "arm,cortex-a9";
55*724ba675SRob Herring			reg = <0x3>;
56*724ba675SRob Herring			enable-method = "actions,s500-smp";
57*724ba675SRob Herring			power-domains = <&sps S500_PD_CPU3>;
58*724ba675SRob Herring		};
59*724ba675SRob Herring	};
60*724ba675SRob Herring
61*724ba675SRob Herring	arm-pmu {
62*724ba675SRob Herring		compatible = "arm,cortex-a9-pmu";
63*724ba675SRob Herring		interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
64*724ba675SRob Herring		             <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
65*724ba675SRob Herring		             <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
66*724ba675SRob Herring		             <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
67*724ba675SRob Herring		interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
68*724ba675SRob Herring	};
69*724ba675SRob Herring
70*724ba675SRob Herring	hosc: hosc {
71*724ba675SRob Herring		compatible = "fixed-clock";
72*724ba675SRob Herring		clock-frequency = <24000000>;
73*724ba675SRob Herring		#clock-cells = <0>;
74*724ba675SRob Herring	};
75*724ba675SRob Herring
76*724ba675SRob Herring	losc: losc {
77*724ba675SRob Herring		compatible = "fixed-clock";
78*724ba675SRob Herring		clock-frequency = <32768>;
79*724ba675SRob Herring		#clock-cells = <0>;
80*724ba675SRob Herring	};
81*724ba675SRob Herring
82*724ba675SRob Herring	soc {
83*724ba675SRob Herring		compatible = "simple-bus";
84*724ba675SRob Herring		#address-cells = <1>;
85*724ba675SRob Herring		#size-cells = <1>;
86*724ba675SRob Herring		ranges;
87*724ba675SRob Herring
88*724ba675SRob Herring		scu: scu@b0020000 {
89*724ba675SRob Herring			compatible = "arm,cortex-a9-scu";
90*724ba675SRob Herring			reg = <0xb0020000 0x100>;
91*724ba675SRob Herring		};
92*724ba675SRob Herring
93*724ba675SRob Herring		global_timer: timer@b0020200 {
94*724ba675SRob Herring			compatible = "arm,cortex-a9-global-timer";
95*724ba675SRob Herring			reg = <0xb0020200 0x100>;
96*724ba675SRob Herring			interrupts = <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_EDGE_RISING)>;
97*724ba675SRob Herring			status = "disabled";
98*724ba675SRob Herring		};
99*724ba675SRob Herring
100*724ba675SRob Herring		twd_timer: timer@b0020600 {
101*724ba675SRob Herring			compatible = "arm,cortex-a9-twd-timer";
102*724ba675SRob Herring			reg = <0xb0020600 0x20>;
103*724ba675SRob Herring			interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_EDGE_RISING)>;
104*724ba675SRob Herring			status = "disabled";
105*724ba675SRob Herring		};
106*724ba675SRob Herring
107*724ba675SRob Herring		twd_wdt: wdt@b0020620 {
108*724ba675SRob Herring			compatible = "arm,cortex-a9-twd-wdt";
109*724ba675SRob Herring			reg = <0xb0020620 0xe0>;
110*724ba675SRob Herring			interrupts = <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_EDGE_RISING)>;
111*724ba675SRob Herring			status = "disabled";
112*724ba675SRob Herring		};
113*724ba675SRob Herring
114*724ba675SRob Herring		gic: interrupt-controller@b0021000 {
115*724ba675SRob Herring			compatible = "arm,cortex-a9-gic";
116*724ba675SRob Herring			reg = <0xb0021000 0x1000>,
117*724ba675SRob Herring			      <0xb0020100 0x0100>;
118*724ba675SRob Herring			interrupt-controller;
119*724ba675SRob Herring			#interrupt-cells = <3>;
120*724ba675SRob Herring		};
121*724ba675SRob Herring
122*724ba675SRob Herring		l2: cache-controller@b0022000 {
123*724ba675SRob Herring			compatible = "arm,pl310-cache";
124*724ba675SRob Herring			reg = <0xb0022000 0x1000>;
125*724ba675SRob Herring			cache-unified;
126*724ba675SRob Herring			cache-level = <2>;
127*724ba675SRob Herring			interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
128*724ba675SRob Herring			arm,tag-latency = <3 3 2>;
129*724ba675SRob Herring			arm,data-latency = <5 3 3>;
130*724ba675SRob Herring		};
131*724ba675SRob Herring
132*724ba675SRob Herring		uart0: serial@b0120000 {
133*724ba675SRob Herring			compatible = "actions,s500-uart", "actions,owl-uart";
134*724ba675SRob Herring			reg = <0xb0120000 0x2000>;
135*724ba675SRob Herring			interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
136*724ba675SRob Herring			clocks = <&cmu CLK_UART0>;
137*724ba675SRob Herring			status = "disabled";
138*724ba675SRob Herring		};
139*724ba675SRob Herring
140*724ba675SRob Herring		uart1: serial@b0122000 {
141*724ba675SRob Herring			compatible = "actions,s500-uart", "actions,owl-uart";
142*724ba675SRob Herring			reg = <0xb0122000 0x2000>;
143*724ba675SRob Herring			interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
144*724ba675SRob Herring			clocks = <&cmu CLK_UART1>;
145*724ba675SRob Herring			status = "disabled";
146*724ba675SRob Herring		};
147*724ba675SRob Herring
148*724ba675SRob Herring		uart2: serial@b0124000 {
149*724ba675SRob Herring			compatible = "actions,s500-uart", "actions,owl-uart";
150*724ba675SRob Herring			reg = <0xb0124000 0x2000>;
151*724ba675SRob Herring			interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
152*724ba675SRob Herring			clocks = <&cmu CLK_UART2>;
153*724ba675SRob Herring			status = "disabled";
154*724ba675SRob Herring		};
155*724ba675SRob Herring
156*724ba675SRob Herring		uart3: serial@b0126000 {
157*724ba675SRob Herring			compatible = "actions,s500-uart", "actions,owl-uart";
158*724ba675SRob Herring			reg = <0xb0126000 0x2000>;
159*724ba675SRob Herring			interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
160*724ba675SRob Herring			clocks = <&cmu CLK_UART3>;
161*724ba675SRob Herring			status = "disabled";
162*724ba675SRob Herring		};
163*724ba675SRob Herring
164*724ba675SRob Herring		uart4: serial@b0128000 {
165*724ba675SRob Herring			compatible = "actions,s500-uart", "actions,owl-uart";
166*724ba675SRob Herring			reg = <0xb0128000 0x2000>;
167*724ba675SRob Herring			interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
168*724ba675SRob Herring			clocks = <&cmu CLK_UART4>;
169*724ba675SRob Herring			status = "disabled";
170*724ba675SRob Herring		};
171*724ba675SRob Herring
172*724ba675SRob Herring		uart5: serial@b012a000 {
173*724ba675SRob Herring			compatible = "actions,s500-uart", "actions,owl-uart";
174*724ba675SRob Herring			reg = <0xb012a000 0x2000>;
175*724ba675SRob Herring			interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
176*724ba675SRob Herring			clocks = <&cmu CLK_UART5>;
177*724ba675SRob Herring			status = "disabled";
178*724ba675SRob Herring		};
179*724ba675SRob Herring
180*724ba675SRob Herring		uart6: serial@b012c000 {
181*724ba675SRob Herring			compatible = "actions,s500-uart", "actions,owl-uart";
182*724ba675SRob Herring			reg = <0xb012c000 0x2000>;
183*724ba675SRob Herring			interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
184*724ba675SRob Herring			clocks = <&cmu CLK_UART6>;
185*724ba675SRob Herring			status = "disabled";
186*724ba675SRob Herring		};
187*724ba675SRob Herring
188*724ba675SRob Herring		cmu: clock-controller@b0160000 {
189*724ba675SRob Herring			compatible = "actions,s500-cmu";
190*724ba675SRob Herring			reg = <0xb0160000 0x8000>;
191*724ba675SRob Herring			clocks = <&hosc>, <&losc>;
192*724ba675SRob Herring			#clock-cells = <1>;
193*724ba675SRob Herring			#reset-cells = <1>;
194*724ba675SRob Herring		};
195*724ba675SRob Herring
196*724ba675SRob Herring		i2c0: i2c@b0170000 {
197*724ba675SRob Herring			compatible = "actions,s500-i2c";
198*724ba675SRob Herring			reg = <0xb0170000 0x4000>;
199*724ba675SRob Herring			clocks = <&cmu CLK_I2C0>;
200*724ba675SRob Herring			interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
201*724ba675SRob Herring			#address-cells = <1>;
202*724ba675SRob Herring			#size-cells = <0>;
203*724ba675SRob Herring			status = "disabled";
204*724ba675SRob Herring		};
205*724ba675SRob Herring
206*724ba675SRob Herring		i2c1: i2c@b0174000 {
207*724ba675SRob Herring			compatible = "actions,s500-i2c";
208*724ba675SRob Herring			reg = <0xb0174000 0x4000>;
209*724ba675SRob Herring			clocks = <&cmu CLK_I2C1>;
210*724ba675SRob Herring			interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
211*724ba675SRob Herring			#address-cells = <1>;
212*724ba675SRob Herring			#size-cells = <0>;
213*724ba675SRob Herring			status = "disabled";
214*724ba675SRob Herring		};
215*724ba675SRob Herring
216*724ba675SRob Herring		i2c2: i2c@b0178000 {
217*724ba675SRob Herring			compatible = "actions,s500-i2c";
218*724ba675SRob Herring			reg = <0xb0178000 0x4000>;
219*724ba675SRob Herring			clocks = <&cmu CLK_I2C2>;
220*724ba675SRob Herring			interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
221*724ba675SRob Herring			#address-cells = <1>;
222*724ba675SRob Herring			#size-cells = <0>;
223*724ba675SRob Herring			status = "disabled";
224*724ba675SRob Herring		};
225*724ba675SRob Herring
226*724ba675SRob Herring		i2c3: i2c@b017c000 {
227*724ba675SRob Herring			compatible = "actions,s500-i2c";
228*724ba675SRob Herring			reg = <0xb017c000 0x4000>;
229*724ba675SRob Herring			clocks = <&cmu CLK_I2C3>;
230*724ba675SRob Herring			interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
231*724ba675SRob Herring			#address-cells = <1>;
232*724ba675SRob Herring			#size-cells = <0>;
233*724ba675SRob Herring			status = "disabled";
234*724ba675SRob Herring		};
235*724ba675SRob Herring
236*724ba675SRob Herring		sirq: interrupt-controller@b01b0200 {
237*724ba675SRob Herring			compatible = "actions,s500-sirq";
238*724ba675SRob Herring			reg = <0xb01b0200 0x4>;
239*724ba675SRob Herring			interrupt-controller;
240*724ba675SRob Herring			#interrupt-cells = <2>;
241*724ba675SRob Herring			interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>, /* SIRQ0 */
242*724ba675SRob Herring				     <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>, /* SIRQ1 */
243*724ba675SRob Herring				     <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>; /* SIRQ2 */
244*724ba675SRob Herring		};
245*724ba675SRob Herring
246*724ba675SRob Herring		timer: timer@b0168000 {
247*724ba675SRob Herring			compatible = "actions,s500-timer";
248*724ba675SRob Herring			reg = <0xb0168000 0x8000>;
249*724ba675SRob Herring			interrupts = <GIC_SPI  8 IRQ_TYPE_LEVEL_HIGH>,
250*724ba675SRob Herring			             <GIC_SPI  9 IRQ_TYPE_LEVEL_HIGH>,
251*724ba675SRob Herring			             <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
252*724ba675SRob Herring			             <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
253*724ba675SRob Herring			interrupt-names = "2hz0", "2hz1", "timer0", "timer1";
254*724ba675SRob Herring		};
255*724ba675SRob Herring
256*724ba675SRob Herring		sps: power-controller@b01b0100 {
257*724ba675SRob Herring			compatible = "actions,s500-sps";
258*724ba675SRob Herring			reg = <0xb01b0100 0x100>;
259*724ba675SRob Herring			#power-domain-cells = <1>;
260*724ba675SRob Herring		};
261*724ba675SRob Herring
262*724ba675SRob Herring		pinctrl: pinctrl@b01b0000 {
263*724ba675SRob Herring			compatible = "actions,s500-pinctrl";
264*724ba675SRob Herring			reg = <0xb01b0000 0x40>, /* GPIO */
265*724ba675SRob Herring			      <0xb01b0040 0x10>, /* Multiplexing Control */
266*724ba675SRob Herring			      <0xb01b0060 0x18>, /* PAD Control */
267*724ba675SRob Herring			      <0xb01b0080 0xc>;  /* PAD Drive Capacity */
268*724ba675SRob Herring			clocks = <&cmu CLK_GPIO>;
269*724ba675SRob Herring			gpio-controller;
270*724ba675SRob Herring			gpio-ranges = <&pinctrl 0 0 132>;
271*724ba675SRob Herring			#gpio-cells = <2>;
272*724ba675SRob Herring			interrupt-controller;
273*724ba675SRob Herring			#interrupt-cells = <2>;
274*724ba675SRob Herring			interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>, /* GPIOA */
275*724ba675SRob Herring				     <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>, /* GPIOB */
276*724ba675SRob Herring				     <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>, /* GPIOC */
277*724ba675SRob Herring				     <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>, /* GPIOD */
278*724ba675SRob Herring				     <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>; /* GPIOE */
279*724ba675SRob Herring		};
280*724ba675SRob Herring
281*724ba675SRob Herring		dma: dma-controller@b0260000 {
282*724ba675SRob Herring			compatible = "actions,s500-dma";
283*724ba675SRob Herring			reg = <0xb0260000 0xd00>;
284*724ba675SRob Herring			interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>,
285*724ba675SRob Herring				     <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>,
286*724ba675SRob Herring				     <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>,
287*724ba675SRob Herring				     <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
288*724ba675SRob Herring			#dma-cells = <1>;
289*724ba675SRob Herring			dma-channels = <12>;
290*724ba675SRob Herring			dma-requests = <46>;
291*724ba675SRob Herring			clocks = <&cmu CLK_DMAC>;
292*724ba675SRob Herring			power-domains = <&sps S500_PD_DMA>;
293*724ba675SRob Herring		};
294*724ba675SRob Herring
295*724ba675SRob Herring		mmc0: mmc@b0230000 {
296*724ba675SRob Herring			compatible = "actions,s500-mmc", "actions,owl-mmc";
297*724ba675SRob Herring			reg = <0xb0230000 0x38>;
298*724ba675SRob Herring			interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
299*724ba675SRob Herring			clocks = <&cmu CLK_SD0>;
300*724ba675SRob Herring			resets = <&cmu RESET_SD0>;
301*724ba675SRob Herring			dmas = <&dma 2>;
302*724ba675SRob Herring			dma-names = "mmc";
303*724ba675SRob Herring			status = "disabled";
304*724ba675SRob Herring		};
305*724ba675SRob Herring
306*724ba675SRob Herring		mmc1: mmc@b0234000 {
307*724ba675SRob Herring			compatible = "actions,s500-mmc", "actions,owl-mmc";
308*724ba675SRob Herring			reg = <0xb0234000 0x38>;
309*724ba675SRob Herring			interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
310*724ba675SRob Herring			clocks = <&cmu CLK_SD1>;
311*724ba675SRob Herring			resets = <&cmu RESET_SD1>;
312*724ba675SRob Herring			dmas = <&dma 3>;
313*724ba675SRob Herring			dma-names = "mmc";
314*724ba675SRob Herring			status = "disabled";
315*724ba675SRob Herring		};
316*724ba675SRob Herring
317*724ba675SRob Herring		mmc2: mmc@b0238000 {
318*724ba675SRob Herring			compatible = "actions,s500-mmc", "actions,owl-mmc";
319*724ba675SRob Herring			reg = <0xb0238000 0x38>;
320*724ba675SRob Herring			interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
321*724ba675SRob Herring			clocks = <&cmu CLK_SD2>;
322*724ba675SRob Herring			resets = <&cmu RESET_SD2>;
323*724ba675SRob Herring			dmas = <&dma 4>;
324*724ba675SRob Herring			dma-names = "mmc";
325*724ba675SRob Herring			status = "disabled";
326*724ba675SRob Herring		};
327*724ba675SRob Herring
328*724ba675SRob Herring		ethernet: ethernet@b0310000 {
329*724ba675SRob Herring			compatible = "actions,s500-emac", "actions,owl-emac";
330*724ba675SRob Herring			reg = <0xb0310000 0x10000>;
331*724ba675SRob Herring			interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
332*724ba675SRob Herring			clocks = <&cmu CLK_ETHERNET>, <&cmu CLK_RMII_REF>;
333*724ba675SRob Herring			clock-names = "eth", "rmii";
334*724ba675SRob Herring			resets = <&cmu RESET_ETHERNET>;
335*724ba675SRob Herring			status = "disabled";
336*724ba675SRob Herring		};
337*724ba675SRob Herring	};
338*724ba675SRob Herring};
339