xref: /OK3568_Linux_fs/kernel/arch/arm/boot/dts/ox810se.dtsi (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun// SPDX-License-Identifier: GPL-2.0-or-later
2*4882a593Smuzhiyun/*
3*4882a593Smuzhiyun * ox810se.dtsi - Device tree file for Oxford Semiconductor OX810SE SoC
4*4882a593Smuzhiyun *
5*4882a593Smuzhiyun * Copyright (C) 2016 Neil Armstrong <narmstrong@baylibre.com>
6*4882a593Smuzhiyun */
7*4882a593Smuzhiyun
8*4882a593Smuzhiyun#include <dt-bindings/clock/oxsemi,ox810se.h>
9*4882a593Smuzhiyun#include <dt-bindings/reset/oxsemi,ox810se.h>
10*4882a593Smuzhiyun
11*4882a593Smuzhiyun/ {
12*4882a593Smuzhiyun	#address-cells = <1>;
13*4882a593Smuzhiyun	#size-cells = <1>;
14*4882a593Smuzhiyun	compatible = "oxsemi,ox810se";
15*4882a593Smuzhiyun
16*4882a593Smuzhiyun	cpus {
17*4882a593Smuzhiyun		#address-cells = <0>;
18*4882a593Smuzhiyun		#size-cells = <0>;
19*4882a593Smuzhiyun
20*4882a593Smuzhiyun		cpu {
21*4882a593Smuzhiyun			device_type = "cpu";
22*4882a593Smuzhiyun			compatible = "arm,arm926ej-s";
23*4882a593Smuzhiyun			clocks = <&armclk>;
24*4882a593Smuzhiyun		};
25*4882a593Smuzhiyun	};
26*4882a593Smuzhiyun
27*4882a593Smuzhiyun	memory {
28*4882a593Smuzhiyun		device_type = "memory";
29*4882a593Smuzhiyun		/* Max 256MB @ 0x48000000 */
30*4882a593Smuzhiyun		reg = <0x48000000 0x10000000>;
31*4882a593Smuzhiyun	};
32*4882a593Smuzhiyun
33*4882a593Smuzhiyun	clocks {
34*4882a593Smuzhiyun		osc: oscillator {
35*4882a593Smuzhiyun			compatible = "fixed-clock";
36*4882a593Smuzhiyun			#clock-cells = <0>;
37*4882a593Smuzhiyun			clock-frequency = <25000000>;
38*4882a593Smuzhiyun		};
39*4882a593Smuzhiyun
40*4882a593Smuzhiyun		gmacclk: gmacclk {
41*4882a593Smuzhiyun			compatible = "fixed-clock";
42*4882a593Smuzhiyun			#clock-cells = <0>;
43*4882a593Smuzhiyun			clock-frequency = <125000000>;
44*4882a593Smuzhiyun		};
45*4882a593Smuzhiyun
46*4882a593Smuzhiyun		rpsclk: rpsclk {
47*4882a593Smuzhiyun			compatible = "fixed-factor-clock";
48*4882a593Smuzhiyun			#clock-cells = <0>;
49*4882a593Smuzhiyun			clock-div = <1>;
50*4882a593Smuzhiyun			clock-mult = <1>;
51*4882a593Smuzhiyun			clocks = <&osc>;
52*4882a593Smuzhiyun		};
53*4882a593Smuzhiyun
54*4882a593Smuzhiyun		pll400: pll400 {
55*4882a593Smuzhiyun			compatible = "fixed-clock";
56*4882a593Smuzhiyun			#clock-cells = <0>;
57*4882a593Smuzhiyun			clock-frequency = <733333333>;
58*4882a593Smuzhiyun		};
59*4882a593Smuzhiyun
60*4882a593Smuzhiyun		sysclk: sysclk {
61*4882a593Smuzhiyun			compatible = "fixed-factor-clock";
62*4882a593Smuzhiyun			#clock-cells = <0>;
63*4882a593Smuzhiyun			clock-div = <4>;
64*4882a593Smuzhiyun			clock-mult = <1>;
65*4882a593Smuzhiyun			clocks = <&pll400>;
66*4882a593Smuzhiyun		};
67*4882a593Smuzhiyun
68*4882a593Smuzhiyun		armclk: armclk {
69*4882a593Smuzhiyun			compatible = "fixed-factor-clock";
70*4882a593Smuzhiyun			#clock-cells = <0>;
71*4882a593Smuzhiyun			clock-div = <2>;
72*4882a593Smuzhiyun			clock-mult = <1>;
73*4882a593Smuzhiyun			clocks = <&pll400>;
74*4882a593Smuzhiyun		};
75*4882a593Smuzhiyun	};
76*4882a593Smuzhiyun
77*4882a593Smuzhiyun	soc {
78*4882a593Smuzhiyun		#address-cells = <1>;
79*4882a593Smuzhiyun		#size-cells = <1>;
80*4882a593Smuzhiyun		compatible = "simple-bus";
81*4882a593Smuzhiyun		ranges;
82*4882a593Smuzhiyun		interrupt-parent = <&intc>;
83*4882a593Smuzhiyun
84*4882a593Smuzhiyun		apb-bridge@44000000 {
85*4882a593Smuzhiyun			#address-cells = <1>;
86*4882a593Smuzhiyun			#size-cells = <1>;
87*4882a593Smuzhiyun			compatible = "simple-bus";
88*4882a593Smuzhiyun			ranges = <0 0x44000000 0x1000000>;
89*4882a593Smuzhiyun
90*4882a593Smuzhiyun			pinctrl: pinctrl {
91*4882a593Smuzhiyun				compatible = "oxsemi,ox810se-pinctrl";
92*4882a593Smuzhiyun
93*4882a593Smuzhiyun				/* Regmap for sys registers */
94*4882a593Smuzhiyun				oxsemi,sys-ctrl = <&sys>;
95*4882a593Smuzhiyun
96*4882a593Smuzhiyun				pinctrl_uart0: uart0 {
97*4882a593Smuzhiyun					uart0a {
98*4882a593Smuzhiyun						pins = "gpio31";
99*4882a593Smuzhiyun						function = "fct3";
100*4882a593Smuzhiyun					};
101*4882a593Smuzhiyun					uart0b {
102*4882a593Smuzhiyun						pins = "gpio32";
103*4882a593Smuzhiyun						function = "fct3";
104*4882a593Smuzhiyun					};
105*4882a593Smuzhiyun				};
106*4882a593Smuzhiyun
107*4882a593Smuzhiyun				pinctrl_uart0_modem: uart0_modem {
108*4882a593Smuzhiyun					uart0c {
109*4882a593Smuzhiyun						pins = "gpio27";
110*4882a593Smuzhiyun						function = "fct3";
111*4882a593Smuzhiyun					};
112*4882a593Smuzhiyun					uart0d {
113*4882a593Smuzhiyun						pins = "gpio28";
114*4882a593Smuzhiyun						function = "fct3";
115*4882a593Smuzhiyun					};
116*4882a593Smuzhiyun					uart0e {
117*4882a593Smuzhiyun						pins = "gpio29";
118*4882a593Smuzhiyun						function = "fct3";
119*4882a593Smuzhiyun					};
120*4882a593Smuzhiyun					uart0f {
121*4882a593Smuzhiyun						pins = "gpio30";
122*4882a593Smuzhiyun						function = "fct3";
123*4882a593Smuzhiyun					};
124*4882a593Smuzhiyun					uart0g {
125*4882a593Smuzhiyun						pins = "gpio33";
126*4882a593Smuzhiyun						function = "fct3";
127*4882a593Smuzhiyun					};
128*4882a593Smuzhiyun					uart0h {
129*4882a593Smuzhiyun						pins = "gpio34";
130*4882a593Smuzhiyun						function = "fct3";
131*4882a593Smuzhiyun					};
132*4882a593Smuzhiyun				};
133*4882a593Smuzhiyun
134*4882a593Smuzhiyun				pinctrl_uart1: uart1 {
135*4882a593Smuzhiyun					uart1a {
136*4882a593Smuzhiyun						pins = "gpio20";
137*4882a593Smuzhiyun						function = "fct3";
138*4882a593Smuzhiyun					};
139*4882a593Smuzhiyun					uart1b {
140*4882a593Smuzhiyun						pins = "gpio22";
141*4882a593Smuzhiyun						function = "fct3";
142*4882a593Smuzhiyun					};
143*4882a593Smuzhiyun				};
144*4882a593Smuzhiyun
145*4882a593Smuzhiyun				pinctrl_uart1_modem: uart1_modem {
146*4882a593Smuzhiyun					uart1c {
147*4882a593Smuzhiyun						pins = "gpio8";
148*4882a593Smuzhiyun						function = "fct3";
149*4882a593Smuzhiyun					};
150*4882a593Smuzhiyun					uart1d {
151*4882a593Smuzhiyun						pins = "gpio9";
152*4882a593Smuzhiyun						function = "fct3";
153*4882a593Smuzhiyun					};
154*4882a593Smuzhiyun					uart1e {
155*4882a593Smuzhiyun						pins = "gpio23";
156*4882a593Smuzhiyun						function = "fct3";
157*4882a593Smuzhiyun					};
158*4882a593Smuzhiyun					uart1f {
159*4882a593Smuzhiyun						pins = "gpio24";
160*4882a593Smuzhiyun						function = "fct3";
161*4882a593Smuzhiyun					};
162*4882a593Smuzhiyun					uart1g {
163*4882a593Smuzhiyun						pins = "gpio25";
164*4882a593Smuzhiyun						function = "fct3";
165*4882a593Smuzhiyun					};
166*4882a593Smuzhiyun					uart1h {
167*4882a593Smuzhiyun						pins = "gpio26";
168*4882a593Smuzhiyun						function = "fct3";
169*4882a593Smuzhiyun					};
170*4882a593Smuzhiyun				};
171*4882a593Smuzhiyun
172*4882a593Smuzhiyun				pinctrl_uart2: uart2 {
173*4882a593Smuzhiyun					uart2a {
174*4882a593Smuzhiyun						pins = "gpio6";
175*4882a593Smuzhiyun						function = "fct3";
176*4882a593Smuzhiyun					};
177*4882a593Smuzhiyun					uart2b {
178*4882a593Smuzhiyun						pins = "gpio7";
179*4882a593Smuzhiyun						function = "fct3";
180*4882a593Smuzhiyun					};
181*4882a593Smuzhiyun				};
182*4882a593Smuzhiyun
183*4882a593Smuzhiyun				pinctrl_uart2_modem: uart2_modem {
184*4882a593Smuzhiyun					uart2c {
185*4882a593Smuzhiyun						pins = "gpio0";
186*4882a593Smuzhiyun						function = "fct3";
187*4882a593Smuzhiyun					};
188*4882a593Smuzhiyun					uart2d {
189*4882a593Smuzhiyun						pins = "gpio1";
190*4882a593Smuzhiyun						function = "fct3";
191*4882a593Smuzhiyun					};
192*4882a593Smuzhiyun					uart2e {
193*4882a593Smuzhiyun						pins = "gpio2";
194*4882a593Smuzhiyun						function = "fct3";
195*4882a593Smuzhiyun					};
196*4882a593Smuzhiyun					uart2f {
197*4882a593Smuzhiyun						pins = "gpio3";
198*4882a593Smuzhiyun						function = "fct3";
199*4882a593Smuzhiyun					};
200*4882a593Smuzhiyun					uart2g {
201*4882a593Smuzhiyun						pins = "gpio4";
202*4882a593Smuzhiyun						function = "fct3";
203*4882a593Smuzhiyun					};
204*4882a593Smuzhiyun					uart2h {
205*4882a593Smuzhiyun						pins = "gpio5";
206*4882a593Smuzhiyun						function = "fct3";
207*4882a593Smuzhiyun					};
208*4882a593Smuzhiyun				};
209*4882a593Smuzhiyun			};
210*4882a593Smuzhiyun
211*4882a593Smuzhiyun			gpio0: gpio@0 {
212*4882a593Smuzhiyun				compatible = "oxsemi,ox810se-gpio";
213*4882a593Smuzhiyun				reg = <0x000000 0x100000>;
214*4882a593Smuzhiyun				interrupts = <21>;
215*4882a593Smuzhiyun				#gpio-cells = <2>;
216*4882a593Smuzhiyun				gpio-controller;
217*4882a593Smuzhiyun				interrupt-controller;
218*4882a593Smuzhiyun				#interrupt-cells = <2>;
219*4882a593Smuzhiyun				ngpios = <32>;
220*4882a593Smuzhiyun				oxsemi,gpio-bank = <0>;
221*4882a593Smuzhiyun				gpio-ranges = <&pinctrl 0 0 32>;
222*4882a593Smuzhiyun			};
223*4882a593Smuzhiyun
224*4882a593Smuzhiyun			gpio1: gpio@100000 {
225*4882a593Smuzhiyun				compatible = "oxsemi,ox810se-gpio";
226*4882a593Smuzhiyun				reg = <0x100000 0x100000>;
227*4882a593Smuzhiyun				interrupts = <22>;
228*4882a593Smuzhiyun				#gpio-cells = <2>;
229*4882a593Smuzhiyun				gpio-controller;
230*4882a593Smuzhiyun				interrupt-controller;
231*4882a593Smuzhiyun				#interrupt-cells = <2>;
232*4882a593Smuzhiyun				ngpios = <3>;
233*4882a593Smuzhiyun				oxsemi,gpio-bank = <1>;
234*4882a593Smuzhiyun				gpio-ranges = <&pinctrl 0 32 3>;
235*4882a593Smuzhiyun			};
236*4882a593Smuzhiyun
237*4882a593Smuzhiyun			uart0: serial@200000 {
238*4882a593Smuzhiyun			       compatible = "ns16550a";
239*4882a593Smuzhiyun			       reg = <0x200000 0x100000>;
240*4882a593Smuzhiyun			       clocks = <&sysclk>;
241*4882a593Smuzhiyun			       interrupts = <23>;
242*4882a593Smuzhiyun			       reg-shift = <0>;
243*4882a593Smuzhiyun			       fifo-size = <16>;
244*4882a593Smuzhiyun			       reg-io-width = <1>;
245*4882a593Smuzhiyun			       current-speed = <115200>;
246*4882a593Smuzhiyun			       no-loopback-test;
247*4882a593Smuzhiyun			       status = "disabled";
248*4882a593Smuzhiyun			       resets = <&reset RESET_UART1>;
249*4882a593Smuzhiyun			};
250*4882a593Smuzhiyun
251*4882a593Smuzhiyun			uart1: serial@300000 {
252*4882a593Smuzhiyun			       compatible = "ns16550a";
253*4882a593Smuzhiyun			       reg = <0x300000 0x100000>;
254*4882a593Smuzhiyun			       clocks = <&sysclk>;
255*4882a593Smuzhiyun			       interrupts = <24>;
256*4882a593Smuzhiyun			       reg-shift = <0>;
257*4882a593Smuzhiyun			       fifo-size = <16>;
258*4882a593Smuzhiyun			       reg-io-width = <1>;
259*4882a593Smuzhiyun			       current-speed = <115200>;
260*4882a593Smuzhiyun			       no-loopback-test;
261*4882a593Smuzhiyun			       status = "disabled";
262*4882a593Smuzhiyun			       resets = <&reset RESET_UART2>;
263*4882a593Smuzhiyun			};
264*4882a593Smuzhiyun
265*4882a593Smuzhiyun			uart2: serial@900000 {
266*4882a593Smuzhiyun			       compatible = "ns16550a";
267*4882a593Smuzhiyun			       reg = <0x900000 0x100000>;
268*4882a593Smuzhiyun			       clocks = <&sysclk>;
269*4882a593Smuzhiyun			       interrupts = <29>;
270*4882a593Smuzhiyun			       reg-shift = <0>;
271*4882a593Smuzhiyun			       fifo-size = <16>;
272*4882a593Smuzhiyun			       reg-io-width = <1>;
273*4882a593Smuzhiyun			       current-speed = <115200>;
274*4882a593Smuzhiyun			       no-loopback-test;
275*4882a593Smuzhiyun			       status = "disabled";
276*4882a593Smuzhiyun			       resets = <&reset RESET_UART3>;
277*4882a593Smuzhiyun			};
278*4882a593Smuzhiyun
279*4882a593Smuzhiyun			uart3: serial@a00000 {
280*4882a593Smuzhiyun			       compatible = "ns16550a";
281*4882a593Smuzhiyun			       reg = <0xa00000 0x100000>;
282*4882a593Smuzhiyun			       clocks = <&sysclk>;
283*4882a593Smuzhiyun			       interrupts = <30>;
284*4882a593Smuzhiyun			       reg-shift = <0>;
285*4882a593Smuzhiyun			       fifo-size = <16>;
286*4882a593Smuzhiyun			       reg-io-width = <1>;
287*4882a593Smuzhiyun			       current-speed = <115200>;
288*4882a593Smuzhiyun			       no-loopback-test;
289*4882a593Smuzhiyun			       status = "disabled";
290*4882a593Smuzhiyun			       resets = <&reset RESET_UART4>;
291*4882a593Smuzhiyun			};
292*4882a593Smuzhiyun		};
293*4882a593Smuzhiyun
294*4882a593Smuzhiyun		apb-bridge@45000000 {
295*4882a593Smuzhiyun			#address-cells = <1>;
296*4882a593Smuzhiyun			#size-cells = <1>;
297*4882a593Smuzhiyun			compatible = "simple-bus";
298*4882a593Smuzhiyun			ranges = <0 0x45000000 0x1000000>;
299*4882a593Smuzhiyun
300*4882a593Smuzhiyun			sys: sys-ctrl@0 {
301*4882a593Smuzhiyun				compatible = "oxsemi,ox810se-sys-ctrl", "syscon", "simple-mfd";
302*4882a593Smuzhiyun				reg = <0x000000 0x100000>;
303*4882a593Smuzhiyun
304*4882a593Smuzhiyun				reset: reset-controller {
305*4882a593Smuzhiyun					compatible = "oxsemi,ox810se-reset";
306*4882a593Smuzhiyun					#reset-cells = <1>;
307*4882a593Smuzhiyun				};
308*4882a593Smuzhiyun
309*4882a593Smuzhiyun				stdclk: stdclk {
310*4882a593Smuzhiyun					compatible = "oxsemi,ox810se-stdclk";
311*4882a593Smuzhiyun					#clock-cells = <1>;
312*4882a593Smuzhiyun				};
313*4882a593Smuzhiyun			};
314*4882a593Smuzhiyun
315*4882a593Smuzhiyun			rps@300000 {
316*4882a593Smuzhiyun				#address-cells = <1>;
317*4882a593Smuzhiyun				#size-cells = <1>;
318*4882a593Smuzhiyun				compatible = "simple-bus";
319*4882a593Smuzhiyun				ranges = <0 0x300000 0x100000>;
320*4882a593Smuzhiyun
321*4882a593Smuzhiyun				intc: interrupt-controller@0 {
322*4882a593Smuzhiyun					compatible = "oxsemi,ox810se-rps-irq";
323*4882a593Smuzhiyun					interrupt-controller;
324*4882a593Smuzhiyun					reg = <0 0x200>;
325*4882a593Smuzhiyun					#interrupt-cells = <1>;
326*4882a593Smuzhiyun					valid-mask = <0xffffffff>;
327*4882a593Smuzhiyun					clear-mask = <0xffffffff>;
328*4882a593Smuzhiyun				};
329*4882a593Smuzhiyun
330*4882a593Smuzhiyun				timer0: timer@200 {
331*4882a593Smuzhiyun					compatible = "oxsemi,ox810se-rps-timer";
332*4882a593Smuzhiyun					reg = <0x200 0x40>;
333*4882a593Smuzhiyun					clocks = <&rpsclk>;
334*4882a593Smuzhiyun					interrupts = <4 5>;
335*4882a593Smuzhiyun				};
336*4882a593Smuzhiyun			};
337*4882a593Smuzhiyun		};
338*4882a593Smuzhiyun	};
339*4882a593Smuzhiyun};
340