1*724ba675SRob Herring// SPDX-License-Identifier: (GPL-2.0+ OR X11)
2*724ba675SRob Herring/*
3*724ba675SRob Herring * Copyright 2018 Icenowy Zheng <icenowy@aosc.io>
4*724ba675SRob Herring * Copyright 2018 Mesih Kilinc <mesihkilinc@gmail.com>
5*724ba675SRob Herring */
6*724ba675SRob Herring
7*724ba675SRob Herring#include <dt-bindings/clock/suniv-ccu-f1c100s.h>
8*724ba675SRob Herring#include <dt-bindings/reset/suniv-ccu-f1c100s.h>
9*724ba675SRob Herring
10*724ba675SRob Herring/ {
11*724ba675SRob Herring	#address-cells = <1>;
12*724ba675SRob Herring	#size-cells = <1>;
13*724ba675SRob Herring	interrupt-parent = <&intc>;
14*724ba675SRob Herring
15*724ba675SRob Herring	clocks {
16*724ba675SRob Herring		osc24M: clk-24M {
17*724ba675SRob Herring			#clock-cells = <0>;
18*724ba675SRob Herring			compatible = "fixed-clock";
19*724ba675SRob Herring			clock-frequency = <24000000>;
20*724ba675SRob Herring			clock-output-names = "osc24M";
21*724ba675SRob Herring		};
22*724ba675SRob Herring
23*724ba675SRob Herring		osc32k: clk-32k {
24*724ba675SRob Herring			#clock-cells = <0>;
25*724ba675SRob Herring			compatible = "fixed-clock";
26*724ba675SRob Herring			clock-frequency = <32768>;
27*724ba675SRob Herring			clock-output-names = "osc32k";
28*724ba675SRob Herring		};
29*724ba675SRob Herring	};
30*724ba675SRob Herring
31*724ba675SRob Herring	cpus {
32*724ba675SRob Herring		#address-cells = <1>;
33*724ba675SRob Herring		#size-cells = <0>;
34*724ba675SRob Herring
35*724ba675SRob Herring		cpu@0 {
36*724ba675SRob Herring			compatible = "arm,arm926ej-s";
37*724ba675SRob Herring			device_type = "cpu";
38*724ba675SRob Herring			reg = <0x0>;
39*724ba675SRob Herring		};
40*724ba675SRob Herring	};
41*724ba675SRob Herring
42*724ba675SRob Herring	soc {
43*724ba675SRob Herring		compatible = "simple-bus";
44*724ba675SRob Herring		#address-cells = <1>;
45*724ba675SRob Herring		#size-cells = <1>;
46*724ba675SRob Herring		ranges;
47*724ba675SRob Herring
48*724ba675SRob Herring		sram-controller@1c00000 {
49*724ba675SRob Herring			compatible = "allwinner,suniv-f1c100s-system-control",
50*724ba675SRob Herring				     "allwinner,sun4i-a10-system-control";
51*724ba675SRob Herring			reg = <0x01c00000 0x30>;
52*724ba675SRob Herring			#address-cells = <1>;
53*724ba675SRob Herring			#size-cells = <1>;
54*724ba675SRob Herring			ranges;
55*724ba675SRob Herring
56*724ba675SRob Herring			sram_d: sram@10000 {
57*724ba675SRob Herring				compatible = "mmio-sram";
58*724ba675SRob Herring				reg = <0x00010000 0x1000>;
59*724ba675SRob Herring				#address-cells = <1>;
60*724ba675SRob Herring				#size-cells = <1>;
61*724ba675SRob Herring				ranges = <0 0x00010000 0x1000>;
62*724ba675SRob Herring
63*724ba675SRob Herring				otg_sram: sram-section@0 {
64*724ba675SRob Herring					compatible = "allwinner,suniv-f1c100s-sram-d",
65*724ba675SRob Herring						     "allwinner,sun4i-a10-sram-d";
66*724ba675SRob Herring					reg = <0x0000 0x1000>;
67*724ba675SRob Herring					status = "disabled";
68*724ba675SRob Herring				};
69*724ba675SRob Herring			};
70*724ba675SRob Herring		};
71*724ba675SRob Herring
72*724ba675SRob Herring		spi0: spi@1c05000 {
73*724ba675SRob Herring			compatible = "allwinner,suniv-f1c100s-spi",
74*724ba675SRob Herring				     "allwinner,sun8i-h3-spi";
75*724ba675SRob Herring			reg = <0x01c05000 0x1000>;
76*724ba675SRob Herring			interrupts = <10>;
77*724ba675SRob Herring			clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_BUS_SPI0>;
78*724ba675SRob Herring			clock-names = "ahb", "mod";
79*724ba675SRob Herring			resets = <&ccu RST_BUS_SPI0>;
80*724ba675SRob Herring			status = "disabled";
81*724ba675SRob Herring			num-cs = <1>;
82*724ba675SRob Herring			#address-cells = <1>;
83*724ba675SRob Herring			#size-cells = <0>;
84*724ba675SRob Herring		};
85*724ba675SRob Herring
86*724ba675SRob Herring		spi1: spi@1c06000 {
87*724ba675SRob Herring			compatible = "allwinner,suniv-f1c100s-spi",
88*724ba675SRob Herring				     "allwinner,sun8i-h3-spi";
89*724ba675SRob Herring			reg = <0x01c06000 0x1000>;
90*724ba675SRob Herring			interrupts = <11>;
91*724ba675SRob Herring			clocks = <&ccu CLK_BUS_SPI1>, <&ccu CLK_BUS_SPI1>;
92*724ba675SRob Herring			clock-names = "ahb", "mod";
93*724ba675SRob Herring			resets = <&ccu RST_BUS_SPI1>;
94*724ba675SRob Herring			status = "disabled";
95*724ba675SRob Herring			num-cs = <1>;
96*724ba675SRob Herring			#address-cells = <1>;
97*724ba675SRob Herring			#size-cells = <0>;
98*724ba675SRob Herring		};
99*724ba675SRob Herring
100*724ba675SRob Herring		mmc0: mmc@1c0f000 {
101*724ba675SRob Herring			compatible = "allwinner,suniv-f1c100s-mmc",
102*724ba675SRob Herring				     "allwinner,sun7i-a20-mmc";
103*724ba675SRob Herring			reg = <0x01c0f000 0x1000>;
104*724ba675SRob Herring			clocks = <&ccu CLK_BUS_MMC0>,
105*724ba675SRob Herring				 <&ccu CLK_MMC0>,
106*724ba675SRob Herring				 <&ccu CLK_MMC0_OUTPUT>,
107*724ba675SRob Herring				 <&ccu CLK_MMC0_SAMPLE>;
108*724ba675SRob Herring			clock-names = "ahb", "mmc", "output", "sample";
109*724ba675SRob Herring			resets = <&ccu RST_BUS_MMC0>;
110*724ba675SRob Herring			reset-names = "ahb";
111*724ba675SRob Herring			interrupts = <23>;
112*724ba675SRob Herring			pinctrl-names = "default";
113*724ba675SRob Herring			pinctrl-0 = <&mmc0_pins>;
114*724ba675SRob Herring			status = "disabled";
115*724ba675SRob Herring			#address-cells = <1>;
116*724ba675SRob Herring			#size-cells = <0>;
117*724ba675SRob Herring		};
118*724ba675SRob Herring
119*724ba675SRob Herring		mmc1: mmc@1c10000 {
120*724ba675SRob Herring			compatible = "allwinner,suniv-f1c100s-mmc",
121*724ba675SRob Herring				     "allwinner,sun7i-a20-mmc";
122*724ba675SRob Herring			reg = <0x01c10000 0x1000>;
123*724ba675SRob Herring			clocks = <&ccu CLK_BUS_MMC1>,
124*724ba675SRob Herring				 <&ccu CLK_MMC1>,
125*724ba675SRob Herring				 <&ccu CLK_MMC1_OUTPUT>,
126*724ba675SRob Herring				 <&ccu CLK_MMC1_SAMPLE>;
127*724ba675SRob Herring			clock-names = "ahb", "mmc", "output", "sample";
128*724ba675SRob Herring			resets = <&ccu RST_BUS_MMC1>;
129*724ba675SRob Herring			reset-names = "ahb";
130*724ba675SRob Herring			interrupts = <24>;
131*724ba675SRob Herring			status = "disabled";
132*724ba675SRob Herring			#address-cells = <1>;
133*724ba675SRob Herring			#size-cells = <0>;
134*724ba675SRob Herring		};
135*724ba675SRob Herring
136*724ba675SRob Herring		usb_otg: usb@1c13000 {
137*724ba675SRob Herring			compatible = "allwinner,suniv-f1c100s-musb";
138*724ba675SRob Herring			reg = <0x01c13000 0x0400>;
139*724ba675SRob Herring			clocks = <&ccu CLK_BUS_OTG>;
140*724ba675SRob Herring			resets = <&ccu RST_BUS_OTG>;
141*724ba675SRob Herring			interrupts = <26>;
142*724ba675SRob Herring			interrupt-names = "mc";
143*724ba675SRob Herring			phys = <&usbphy 0>;
144*724ba675SRob Herring			phy-names = "usb";
145*724ba675SRob Herring			extcon = <&usbphy 0>;
146*724ba675SRob Herring			allwinner,sram = <&otg_sram 1>;
147*724ba675SRob Herring			status = "disabled";
148*724ba675SRob Herring		};
149*724ba675SRob Herring
150*724ba675SRob Herring		usbphy: phy@1c13400 {
151*724ba675SRob Herring			compatible = "allwinner,suniv-f1c100s-usb-phy";
152*724ba675SRob Herring			reg = <0x01c13400 0x10>;
153*724ba675SRob Herring			reg-names = "phy_ctrl";
154*724ba675SRob Herring			clocks = <&ccu CLK_USB_PHY0>;
155*724ba675SRob Herring			clock-names = "usb0_phy";
156*724ba675SRob Herring			resets = <&ccu RST_USB_PHY0>;
157*724ba675SRob Herring			reset-names = "usb0_reset";
158*724ba675SRob Herring			#phy-cells = <1>;
159*724ba675SRob Herring			status = "disabled";
160*724ba675SRob Herring		};
161*724ba675SRob Herring
162*724ba675SRob Herring		ccu: clock@1c20000 {
163*724ba675SRob Herring			compatible = "allwinner,suniv-f1c100s-ccu";
164*724ba675SRob Herring			reg = <0x01c20000 0x400>;
165*724ba675SRob Herring			clocks = <&osc24M>, <&osc32k>;
166*724ba675SRob Herring			clock-names = "hosc", "losc";
167*724ba675SRob Herring			#clock-cells = <1>;
168*724ba675SRob Herring			#reset-cells = <1>;
169*724ba675SRob Herring		};
170*724ba675SRob Herring
171*724ba675SRob Herring		intc: interrupt-controller@1c20400 {
172*724ba675SRob Herring			compatible = "allwinner,suniv-f1c100s-ic";
173*724ba675SRob Herring			reg = <0x01c20400 0x400>;
174*724ba675SRob Herring			interrupt-controller;
175*724ba675SRob Herring			#interrupt-cells = <1>;
176*724ba675SRob Herring		};
177*724ba675SRob Herring
178*724ba675SRob Herring		pio: pinctrl@1c20800 {
179*724ba675SRob Herring			compatible = "allwinner,suniv-f1c100s-pinctrl";
180*724ba675SRob Herring			reg = <0x01c20800 0x400>;
181*724ba675SRob Herring			interrupts = <38>, <39>, <40>;
182*724ba675SRob Herring			clocks = <&ccu CLK_BUS_PIO>, <&osc24M>, <&osc32k>;
183*724ba675SRob Herring			clock-names = "apb", "hosc", "losc";
184*724ba675SRob Herring			gpio-controller;
185*724ba675SRob Herring			interrupt-controller;
186*724ba675SRob Herring			#interrupt-cells = <3>;
187*724ba675SRob Herring			#gpio-cells = <3>;
188*724ba675SRob Herring
189*724ba675SRob Herring			mmc0_pins: mmc0-pins {
190*724ba675SRob Herring				pins = "PF0", "PF1", "PF2", "PF3", "PF4", "PF5";
191*724ba675SRob Herring				function = "mmc0";
192*724ba675SRob Herring				drive-strength = <30>;
193*724ba675SRob Herring			};
194*724ba675SRob Herring
195*724ba675SRob Herring			/omit-if-no-ref/
196*724ba675SRob Herring			i2c0_pd_pins: i2c0-pd-pins {
197*724ba675SRob Herring				pins = "PD0", "PD12";
198*724ba675SRob Herring				function = "i2c0";
199*724ba675SRob Herring			};
200*724ba675SRob Herring
201*724ba675SRob Herring			spi0_pc_pins: spi0-pc-pins {
202*724ba675SRob Herring				pins = "PC0", "PC1", "PC2", "PC3";
203*724ba675SRob Herring				function = "spi0";
204*724ba675SRob Herring			};
205*724ba675SRob Herring
206*724ba675SRob Herring			uart0_pe_pins: uart0-pe-pins {
207*724ba675SRob Herring				pins = "PE0", "PE1";
208*724ba675SRob Herring				function = "uart0";
209*724ba675SRob Herring			};
210*724ba675SRob Herring
211*724ba675SRob Herring			/omit-if-no-ref/
212*724ba675SRob Herring			uart1_pa_pins: uart1-pa-pins {
213*724ba675SRob Herring				pins = "PA2", "PA3";
214*724ba675SRob Herring				function = "uart1";
215*724ba675SRob Herring			};
216*724ba675SRob Herring		};
217*724ba675SRob Herring
218*724ba675SRob Herring		i2c0: i2c@1c27000 {
219*724ba675SRob Herring			compatible = "allwinner,suniv-f1c100s-i2c",
220*724ba675SRob Herring				     "allwinner,sun6i-a31-i2c";
221*724ba675SRob Herring			reg = <0x01c27000 0x400>;
222*724ba675SRob Herring			interrupts = <7>;
223*724ba675SRob Herring			clocks = <&ccu CLK_BUS_I2C0>;
224*724ba675SRob Herring			resets = <&ccu RST_BUS_I2C0>;
225*724ba675SRob Herring			#address-cells = <1>;
226*724ba675SRob Herring			#size-cells = <0>;
227*724ba675SRob Herring			status = "disabled";
228*724ba675SRob Herring		};
229*724ba675SRob Herring
230*724ba675SRob Herring		i2c1: i2c@1c27400 {
231*724ba675SRob Herring			compatible = "allwinner,suniv-f1c100s-i2c",
232*724ba675SRob Herring				     "allwinner,sun6i-a31-i2c";
233*724ba675SRob Herring			reg = <0x01c27400 0x400>;
234*724ba675SRob Herring			interrupts = <8>;
235*724ba675SRob Herring			clocks = <&ccu CLK_BUS_I2C1>;
236*724ba675SRob Herring			resets = <&ccu RST_BUS_I2C1>;
237*724ba675SRob Herring			#address-cells = <1>;
238*724ba675SRob Herring			#size-cells = <0>;
239*724ba675SRob Herring			status = "disabled";
240*724ba675SRob Herring		};
241*724ba675SRob Herring
242*724ba675SRob Herring		i2c2: i2c@1c27800 {
243*724ba675SRob Herring			compatible = "allwinner,suniv-f1c100s-i2c",
244*724ba675SRob Herring				     "allwinner,sun6i-a31-i2c";
245*724ba675SRob Herring			reg = <0x01c27800 0x400>;
246*724ba675SRob Herring			interrupts = <9>;
247*724ba675SRob Herring			clocks = <&ccu CLK_BUS_I2C2>;
248*724ba675SRob Herring			resets = <&ccu RST_BUS_I2C2>;
249*724ba675SRob Herring			#address-cells = <1>;
250*724ba675SRob Herring			#size-cells = <0>;
251*724ba675SRob Herring			status = "disabled";
252*724ba675SRob Herring		};
253*724ba675SRob Herring
254*724ba675SRob Herring		timer@1c20c00 {
255*724ba675SRob Herring			compatible = "allwinner,suniv-f1c100s-timer";
256*724ba675SRob Herring			reg = <0x01c20c00 0x90>;
257*724ba675SRob Herring			interrupts = <13>, <14>, <15>;
258*724ba675SRob Herring			clocks = <&osc24M>;
259*724ba675SRob Herring		};
260*724ba675SRob Herring
261*724ba675SRob Herring		wdt: watchdog@1c20ca0 {
262*724ba675SRob Herring			compatible = "allwinner,suniv-f1c100s-wdt",
263*724ba675SRob Herring				     "allwinner,sun6i-a31-wdt";
264*724ba675SRob Herring			reg = <0x01c20ca0 0x20>;
265*724ba675SRob Herring			interrupts = <16>;
266*724ba675SRob Herring			clocks = <&osc32k>;
267*724ba675SRob Herring		};
268*724ba675SRob Herring
269*724ba675SRob Herring		pwm: pwm@1c21000 {
270*724ba675SRob Herring			compatible = "allwinner,suniv-f1c100s-pwm",
271*724ba675SRob Herring				     "allwinner,sun7i-a20-pwm";
272*724ba675SRob Herring			reg = <0x01c21000 0x400>;
273*724ba675SRob Herring			clocks = <&osc24M>;
274*724ba675SRob Herring			#pwm-cells = <3>;
275*724ba675SRob Herring			status = "disabled";
276*724ba675SRob Herring		};
277*724ba675SRob Herring
278*724ba675SRob Herring		ir: ir@1c22c00 {
279*724ba675SRob Herring			compatible = "allwinner,suniv-f1c100s-ir",
280*724ba675SRob Herring				     "allwinner,sun6i-a31-ir";
281*724ba675SRob Herring			reg = <0x01c22c00 0x400>;
282*724ba675SRob Herring			clocks = <&ccu CLK_BUS_IR>, <&ccu CLK_IR>;
283*724ba675SRob Herring			clock-names = "apb", "ir";
284*724ba675SRob Herring			resets = <&ccu RST_BUS_IR>;
285*724ba675SRob Herring			interrupts = <6>;
286*724ba675SRob Herring			status = "disabled";
287*724ba675SRob Herring		};
288*724ba675SRob Herring
289*724ba675SRob Herring		lradc: lradc@1c23400 {
290*724ba675SRob Herring			compatible = "allwinner,suniv-f1c100s-lradc",
291*724ba675SRob Herring				     "allwinner,sun8i-a83t-r-lradc";
292*724ba675SRob Herring			reg = <0x01c23400 0x400>;
293*724ba675SRob Herring			interrupts = <22>;
294*724ba675SRob Herring			status = "disabled";
295*724ba675SRob Herring		};
296*724ba675SRob Herring
297*724ba675SRob Herring		uart0: serial@1c25000 {
298*724ba675SRob Herring			compatible = "snps,dw-apb-uart";
299*724ba675SRob Herring			reg = <0x01c25000 0x400>;
300*724ba675SRob Herring			interrupts = <1>;
301*724ba675SRob Herring			reg-shift = <2>;
302*724ba675SRob Herring			reg-io-width = <4>;
303*724ba675SRob Herring			clocks = <&ccu CLK_BUS_UART0>;
304*724ba675SRob Herring			resets = <&ccu RST_BUS_UART0>;
305*724ba675SRob Herring			status = "disabled";
306*724ba675SRob Herring		};
307*724ba675SRob Herring
308*724ba675SRob Herring		uart1: serial@1c25400 {
309*724ba675SRob Herring			compatible = "snps,dw-apb-uart";
310*724ba675SRob Herring			reg = <0x01c25400 0x400>;
311*724ba675SRob Herring			interrupts = <2>;
312*724ba675SRob Herring			reg-shift = <2>;
313*724ba675SRob Herring			reg-io-width = <4>;
314*724ba675SRob Herring			clocks = <&ccu CLK_BUS_UART1>;
315*724ba675SRob Herring			resets = <&ccu RST_BUS_UART1>;
316*724ba675SRob Herring			status = "disabled";
317*724ba675SRob Herring		};
318*724ba675SRob Herring
319*724ba675SRob Herring		uart2: serial@1c25800 {
320*724ba675SRob Herring			compatible = "snps,dw-apb-uart";
321*724ba675SRob Herring			reg = <0x01c25800 0x400>;
322*724ba675SRob Herring			interrupts = <3>;
323*724ba675SRob Herring			reg-shift = <2>;
324*724ba675SRob Herring			reg-io-width = <4>;
325*724ba675SRob Herring			clocks = <&ccu CLK_BUS_UART2>;
326*724ba675SRob Herring			resets = <&ccu RST_BUS_UART2>;
327*724ba675SRob Herring			status = "disabled";
328*724ba675SRob Herring		};
329*724ba675SRob Herring	};
330*724ba675SRob Herring};
331