162306a36Sopenharmony_ci// SPDX-License-Identifier: (GPL-2.0+ OR X11)
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright 2018 Icenowy Zheng <icenowy@aosc.io>
462306a36Sopenharmony_ci * Copyright 2018 Mesih Kilinc <mesihkilinc@gmail.com>
562306a36Sopenharmony_ci */
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci#include <dt-bindings/clock/suniv-ccu-f1c100s.h>
862306a36Sopenharmony_ci#include <dt-bindings/reset/suniv-ccu-f1c100s.h>
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci/ {
1162306a36Sopenharmony_ci	#address-cells = <1>;
1262306a36Sopenharmony_ci	#size-cells = <1>;
1362306a36Sopenharmony_ci	interrupt-parent = <&intc>;
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci	clocks {
1662306a36Sopenharmony_ci		osc24M: clk-24M {
1762306a36Sopenharmony_ci			#clock-cells = <0>;
1862306a36Sopenharmony_ci			compatible = "fixed-clock";
1962306a36Sopenharmony_ci			clock-frequency = <24000000>;
2062306a36Sopenharmony_ci			clock-output-names = "osc24M";
2162306a36Sopenharmony_ci		};
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci		osc32k: clk-32k {
2462306a36Sopenharmony_ci			#clock-cells = <0>;
2562306a36Sopenharmony_ci			compatible = "fixed-clock";
2662306a36Sopenharmony_ci			clock-frequency = <32768>;
2762306a36Sopenharmony_ci			clock-output-names = "osc32k";
2862306a36Sopenharmony_ci		};
2962306a36Sopenharmony_ci	};
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci	cpus {
3262306a36Sopenharmony_ci		#address-cells = <1>;
3362306a36Sopenharmony_ci		#size-cells = <0>;
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci		cpu@0 {
3662306a36Sopenharmony_ci			compatible = "arm,arm926ej-s";
3762306a36Sopenharmony_ci			device_type = "cpu";
3862306a36Sopenharmony_ci			reg = <0x0>;
3962306a36Sopenharmony_ci		};
4062306a36Sopenharmony_ci	};
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci	soc {
4362306a36Sopenharmony_ci		compatible = "simple-bus";
4462306a36Sopenharmony_ci		#address-cells = <1>;
4562306a36Sopenharmony_ci		#size-cells = <1>;
4662306a36Sopenharmony_ci		ranges;
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci		sram-controller@1c00000 {
4962306a36Sopenharmony_ci			compatible = "allwinner,suniv-f1c100s-system-control",
5062306a36Sopenharmony_ci				     "allwinner,sun4i-a10-system-control";
5162306a36Sopenharmony_ci			reg = <0x01c00000 0x30>;
5262306a36Sopenharmony_ci			#address-cells = <1>;
5362306a36Sopenharmony_ci			#size-cells = <1>;
5462306a36Sopenharmony_ci			ranges;
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci			sram_d: sram@10000 {
5762306a36Sopenharmony_ci				compatible = "mmio-sram";
5862306a36Sopenharmony_ci				reg = <0x00010000 0x1000>;
5962306a36Sopenharmony_ci				#address-cells = <1>;
6062306a36Sopenharmony_ci				#size-cells = <1>;
6162306a36Sopenharmony_ci				ranges = <0 0x00010000 0x1000>;
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci				otg_sram: sram-section@0 {
6462306a36Sopenharmony_ci					compatible = "allwinner,suniv-f1c100s-sram-d",
6562306a36Sopenharmony_ci						     "allwinner,sun4i-a10-sram-d";
6662306a36Sopenharmony_ci					reg = <0x0000 0x1000>;
6762306a36Sopenharmony_ci					status = "disabled";
6862306a36Sopenharmony_ci				};
6962306a36Sopenharmony_ci			};
7062306a36Sopenharmony_ci		};
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci		spi0: spi@1c05000 {
7362306a36Sopenharmony_ci			compatible = "allwinner,suniv-f1c100s-spi",
7462306a36Sopenharmony_ci				     "allwinner,sun8i-h3-spi";
7562306a36Sopenharmony_ci			reg = <0x01c05000 0x1000>;
7662306a36Sopenharmony_ci			interrupts = <10>;
7762306a36Sopenharmony_ci			clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_BUS_SPI0>;
7862306a36Sopenharmony_ci			clock-names = "ahb", "mod";
7962306a36Sopenharmony_ci			resets = <&ccu RST_BUS_SPI0>;
8062306a36Sopenharmony_ci			status = "disabled";
8162306a36Sopenharmony_ci			num-cs = <1>;
8262306a36Sopenharmony_ci			#address-cells = <1>;
8362306a36Sopenharmony_ci			#size-cells = <0>;
8462306a36Sopenharmony_ci		};
8562306a36Sopenharmony_ci
8662306a36Sopenharmony_ci		spi1: spi@1c06000 {
8762306a36Sopenharmony_ci			compatible = "allwinner,suniv-f1c100s-spi",
8862306a36Sopenharmony_ci				     "allwinner,sun8i-h3-spi";
8962306a36Sopenharmony_ci			reg = <0x01c06000 0x1000>;
9062306a36Sopenharmony_ci			interrupts = <11>;
9162306a36Sopenharmony_ci			clocks = <&ccu CLK_BUS_SPI1>, <&ccu CLK_BUS_SPI1>;
9262306a36Sopenharmony_ci			clock-names = "ahb", "mod";
9362306a36Sopenharmony_ci			resets = <&ccu RST_BUS_SPI1>;
9462306a36Sopenharmony_ci			status = "disabled";
9562306a36Sopenharmony_ci			num-cs = <1>;
9662306a36Sopenharmony_ci			#address-cells = <1>;
9762306a36Sopenharmony_ci			#size-cells = <0>;
9862306a36Sopenharmony_ci		};
9962306a36Sopenharmony_ci
10062306a36Sopenharmony_ci		mmc0: mmc@1c0f000 {
10162306a36Sopenharmony_ci			compatible = "allwinner,suniv-f1c100s-mmc",
10262306a36Sopenharmony_ci				     "allwinner,sun7i-a20-mmc";
10362306a36Sopenharmony_ci			reg = <0x01c0f000 0x1000>;
10462306a36Sopenharmony_ci			clocks = <&ccu CLK_BUS_MMC0>,
10562306a36Sopenharmony_ci				 <&ccu CLK_MMC0>,
10662306a36Sopenharmony_ci				 <&ccu CLK_MMC0_OUTPUT>,
10762306a36Sopenharmony_ci				 <&ccu CLK_MMC0_SAMPLE>;
10862306a36Sopenharmony_ci			clock-names = "ahb", "mmc", "output", "sample";
10962306a36Sopenharmony_ci			resets = <&ccu RST_BUS_MMC0>;
11062306a36Sopenharmony_ci			reset-names = "ahb";
11162306a36Sopenharmony_ci			interrupts = <23>;
11262306a36Sopenharmony_ci			pinctrl-names = "default";
11362306a36Sopenharmony_ci			pinctrl-0 = <&mmc0_pins>;
11462306a36Sopenharmony_ci			status = "disabled";
11562306a36Sopenharmony_ci			#address-cells = <1>;
11662306a36Sopenharmony_ci			#size-cells = <0>;
11762306a36Sopenharmony_ci		};
11862306a36Sopenharmony_ci
11962306a36Sopenharmony_ci		mmc1: mmc@1c10000 {
12062306a36Sopenharmony_ci			compatible = "allwinner,suniv-f1c100s-mmc",
12162306a36Sopenharmony_ci				     "allwinner,sun7i-a20-mmc";
12262306a36Sopenharmony_ci			reg = <0x01c10000 0x1000>;
12362306a36Sopenharmony_ci			clocks = <&ccu CLK_BUS_MMC1>,
12462306a36Sopenharmony_ci				 <&ccu CLK_MMC1>,
12562306a36Sopenharmony_ci				 <&ccu CLK_MMC1_OUTPUT>,
12662306a36Sopenharmony_ci				 <&ccu CLK_MMC1_SAMPLE>;
12762306a36Sopenharmony_ci			clock-names = "ahb", "mmc", "output", "sample";
12862306a36Sopenharmony_ci			resets = <&ccu RST_BUS_MMC1>;
12962306a36Sopenharmony_ci			reset-names = "ahb";
13062306a36Sopenharmony_ci			interrupts = <24>;
13162306a36Sopenharmony_ci			status = "disabled";
13262306a36Sopenharmony_ci			#address-cells = <1>;
13362306a36Sopenharmony_ci			#size-cells = <0>;
13462306a36Sopenharmony_ci		};
13562306a36Sopenharmony_ci
13662306a36Sopenharmony_ci		usb_otg: usb@1c13000 {
13762306a36Sopenharmony_ci			compatible = "allwinner,suniv-f1c100s-musb";
13862306a36Sopenharmony_ci			reg = <0x01c13000 0x0400>;
13962306a36Sopenharmony_ci			clocks = <&ccu CLK_BUS_OTG>;
14062306a36Sopenharmony_ci			resets = <&ccu RST_BUS_OTG>;
14162306a36Sopenharmony_ci			interrupts = <26>;
14262306a36Sopenharmony_ci			interrupt-names = "mc";
14362306a36Sopenharmony_ci			phys = <&usbphy 0>;
14462306a36Sopenharmony_ci			phy-names = "usb";
14562306a36Sopenharmony_ci			extcon = <&usbphy 0>;
14662306a36Sopenharmony_ci			allwinner,sram = <&otg_sram 1>;
14762306a36Sopenharmony_ci			status = "disabled";
14862306a36Sopenharmony_ci		};
14962306a36Sopenharmony_ci
15062306a36Sopenharmony_ci		usbphy: phy@1c13400 {
15162306a36Sopenharmony_ci			compatible = "allwinner,suniv-f1c100s-usb-phy";
15262306a36Sopenharmony_ci			reg = <0x01c13400 0x10>;
15362306a36Sopenharmony_ci			reg-names = "phy_ctrl";
15462306a36Sopenharmony_ci			clocks = <&ccu CLK_USB_PHY0>;
15562306a36Sopenharmony_ci			clock-names = "usb0_phy";
15662306a36Sopenharmony_ci			resets = <&ccu RST_USB_PHY0>;
15762306a36Sopenharmony_ci			reset-names = "usb0_reset";
15862306a36Sopenharmony_ci			#phy-cells = <1>;
15962306a36Sopenharmony_ci			status = "disabled";
16062306a36Sopenharmony_ci		};
16162306a36Sopenharmony_ci
16262306a36Sopenharmony_ci		ccu: clock@1c20000 {
16362306a36Sopenharmony_ci			compatible = "allwinner,suniv-f1c100s-ccu";
16462306a36Sopenharmony_ci			reg = <0x01c20000 0x400>;
16562306a36Sopenharmony_ci			clocks = <&osc24M>, <&osc32k>;
16662306a36Sopenharmony_ci			clock-names = "hosc", "losc";
16762306a36Sopenharmony_ci			#clock-cells = <1>;
16862306a36Sopenharmony_ci			#reset-cells = <1>;
16962306a36Sopenharmony_ci		};
17062306a36Sopenharmony_ci
17162306a36Sopenharmony_ci		intc: interrupt-controller@1c20400 {
17262306a36Sopenharmony_ci			compatible = "allwinner,suniv-f1c100s-ic";
17362306a36Sopenharmony_ci			reg = <0x01c20400 0x400>;
17462306a36Sopenharmony_ci			interrupt-controller;
17562306a36Sopenharmony_ci			#interrupt-cells = <1>;
17662306a36Sopenharmony_ci		};
17762306a36Sopenharmony_ci
17862306a36Sopenharmony_ci		pio: pinctrl@1c20800 {
17962306a36Sopenharmony_ci			compatible = "allwinner,suniv-f1c100s-pinctrl";
18062306a36Sopenharmony_ci			reg = <0x01c20800 0x400>;
18162306a36Sopenharmony_ci			interrupts = <38>, <39>, <40>;
18262306a36Sopenharmony_ci			clocks = <&ccu CLK_BUS_PIO>, <&osc24M>, <&osc32k>;
18362306a36Sopenharmony_ci			clock-names = "apb", "hosc", "losc";
18462306a36Sopenharmony_ci			gpio-controller;
18562306a36Sopenharmony_ci			interrupt-controller;
18662306a36Sopenharmony_ci			#interrupt-cells = <3>;
18762306a36Sopenharmony_ci			#gpio-cells = <3>;
18862306a36Sopenharmony_ci
18962306a36Sopenharmony_ci			mmc0_pins: mmc0-pins {
19062306a36Sopenharmony_ci				pins = "PF0", "PF1", "PF2", "PF3", "PF4", "PF5";
19162306a36Sopenharmony_ci				function = "mmc0";
19262306a36Sopenharmony_ci				drive-strength = <30>;
19362306a36Sopenharmony_ci			};
19462306a36Sopenharmony_ci
19562306a36Sopenharmony_ci			/omit-if-no-ref/
19662306a36Sopenharmony_ci			i2c0_pd_pins: i2c0-pd-pins {
19762306a36Sopenharmony_ci				pins = "PD0", "PD12";
19862306a36Sopenharmony_ci				function = "i2c0";
19962306a36Sopenharmony_ci			};
20062306a36Sopenharmony_ci
20162306a36Sopenharmony_ci			spi0_pc_pins: spi0-pc-pins {
20262306a36Sopenharmony_ci				pins = "PC0", "PC1", "PC2", "PC3";
20362306a36Sopenharmony_ci				function = "spi0";
20462306a36Sopenharmony_ci			};
20562306a36Sopenharmony_ci
20662306a36Sopenharmony_ci			uart0_pe_pins: uart0-pe-pins {
20762306a36Sopenharmony_ci				pins = "PE0", "PE1";
20862306a36Sopenharmony_ci				function = "uart0";
20962306a36Sopenharmony_ci			};
21062306a36Sopenharmony_ci
21162306a36Sopenharmony_ci			/omit-if-no-ref/
21262306a36Sopenharmony_ci			uart1_pa_pins: uart1-pa-pins {
21362306a36Sopenharmony_ci				pins = "PA2", "PA3";
21462306a36Sopenharmony_ci				function = "uart1";
21562306a36Sopenharmony_ci			};
21662306a36Sopenharmony_ci		};
21762306a36Sopenharmony_ci
21862306a36Sopenharmony_ci		i2c0: i2c@1c27000 {
21962306a36Sopenharmony_ci			compatible = "allwinner,suniv-f1c100s-i2c",
22062306a36Sopenharmony_ci				     "allwinner,sun6i-a31-i2c";
22162306a36Sopenharmony_ci			reg = <0x01c27000 0x400>;
22262306a36Sopenharmony_ci			interrupts = <7>;
22362306a36Sopenharmony_ci			clocks = <&ccu CLK_BUS_I2C0>;
22462306a36Sopenharmony_ci			resets = <&ccu RST_BUS_I2C0>;
22562306a36Sopenharmony_ci			#address-cells = <1>;
22662306a36Sopenharmony_ci			#size-cells = <0>;
22762306a36Sopenharmony_ci			status = "disabled";
22862306a36Sopenharmony_ci		};
22962306a36Sopenharmony_ci
23062306a36Sopenharmony_ci		i2c1: i2c@1c27400 {
23162306a36Sopenharmony_ci			compatible = "allwinner,suniv-f1c100s-i2c",
23262306a36Sopenharmony_ci				     "allwinner,sun6i-a31-i2c";
23362306a36Sopenharmony_ci			reg = <0x01c27400 0x400>;
23462306a36Sopenharmony_ci			interrupts = <8>;
23562306a36Sopenharmony_ci			clocks = <&ccu CLK_BUS_I2C1>;
23662306a36Sopenharmony_ci			resets = <&ccu RST_BUS_I2C1>;
23762306a36Sopenharmony_ci			#address-cells = <1>;
23862306a36Sopenharmony_ci			#size-cells = <0>;
23962306a36Sopenharmony_ci			status = "disabled";
24062306a36Sopenharmony_ci		};
24162306a36Sopenharmony_ci
24262306a36Sopenharmony_ci		i2c2: i2c@1c27800 {
24362306a36Sopenharmony_ci			compatible = "allwinner,suniv-f1c100s-i2c",
24462306a36Sopenharmony_ci				     "allwinner,sun6i-a31-i2c";
24562306a36Sopenharmony_ci			reg = <0x01c27800 0x400>;
24662306a36Sopenharmony_ci			interrupts = <9>;
24762306a36Sopenharmony_ci			clocks = <&ccu CLK_BUS_I2C2>;
24862306a36Sopenharmony_ci			resets = <&ccu RST_BUS_I2C2>;
24962306a36Sopenharmony_ci			#address-cells = <1>;
25062306a36Sopenharmony_ci			#size-cells = <0>;
25162306a36Sopenharmony_ci			status = "disabled";
25262306a36Sopenharmony_ci		};
25362306a36Sopenharmony_ci
25462306a36Sopenharmony_ci		timer@1c20c00 {
25562306a36Sopenharmony_ci			compatible = "allwinner,suniv-f1c100s-timer";
25662306a36Sopenharmony_ci			reg = <0x01c20c00 0x90>;
25762306a36Sopenharmony_ci			interrupts = <13>, <14>, <15>;
25862306a36Sopenharmony_ci			clocks = <&osc24M>;
25962306a36Sopenharmony_ci		};
26062306a36Sopenharmony_ci
26162306a36Sopenharmony_ci		wdt: watchdog@1c20ca0 {
26262306a36Sopenharmony_ci			compatible = "allwinner,suniv-f1c100s-wdt",
26362306a36Sopenharmony_ci				     "allwinner,sun6i-a31-wdt";
26462306a36Sopenharmony_ci			reg = <0x01c20ca0 0x20>;
26562306a36Sopenharmony_ci			interrupts = <16>;
26662306a36Sopenharmony_ci			clocks = <&osc32k>;
26762306a36Sopenharmony_ci		};
26862306a36Sopenharmony_ci
26962306a36Sopenharmony_ci		pwm: pwm@1c21000 {
27062306a36Sopenharmony_ci			compatible = "allwinner,suniv-f1c100s-pwm",
27162306a36Sopenharmony_ci				     "allwinner,sun7i-a20-pwm";
27262306a36Sopenharmony_ci			reg = <0x01c21000 0x400>;
27362306a36Sopenharmony_ci			clocks = <&osc24M>;
27462306a36Sopenharmony_ci			#pwm-cells = <3>;
27562306a36Sopenharmony_ci			status = "disabled";
27662306a36Sopenharmony_ci		};
27762306a36Sopenharmony_ci
27862306a36Sopenharmony_ci		ir: ir@1c22c00 {
27962306a36Sopenharmony_ci			compatible = "allwinner,suniv-f1c100s-ir",
28062306a36Sopenharmony_ci				     "allwinner,sun6i-a31-ir";
28162306a36Sopenharmony_ci			reg = <0x01c22c00 0x400>;
28262306a36Sopenharmony_ci			clocks = <&ccu CLK_BUS_IR>, <&ccu CLK_IR>;
28362306a36Sopenharmony_ci			clock-names = "apb", "ir";
28462306a36Sopenharmony_ci			resets = <&ccu RST_BUS_IR>;
28562306a36Sopenharmony_ci			interrupts = <6>;
28662306a36Sopenharmony_ci			status = "disabled";
28762306a36Sopenharmony_ci		};
28862306a36Sopenharmony_ci
28962306a36Sopenharmony_ci		lradc: lradc@1c23400 {
29062306a36Sopenharmony_ci			compatible = "allwinner,suniv-f1c100s-lradc",
29162306a36Sopenharmony_ci				     "allwinner,sun8i-a83t-r-lradc";
29262306a36Sopenharmony_ci			reg = <0x01c23400 0x400>;
29362306a36Sopenharmony_ci			interrupts = <22>;
29462306a36Sopenharmony_ci			status = "disabled";
29562306a36Sopenharmony_ci		};
29662306a36Sopenharmony_ci
29762306a36Sopenharmony_ci		uart0: serial@1c25000 {
29862306a36Sopenharmony_ci			compatible = "snps,dw-apb-uart";
29962306a36Sopenharmony_ci			reg = <0x01c25000 0x400>;
30062306a36Sopenharmony_ci			interrupts = <1>;
30162306a36Sopenharmony_ci			reg-shift = <2>;
30262306a36Sopenharmony_ci			reg-io-width = <4>;
30362306a36Sopenharmony_ci			clocks = <&ccu CLK_BUS_UART0>;
30462306a36Sopenharmony_ci			resets = <&ccu RST_BUS_UART0>;
30562306a36Sopenharmony_ci			status = "disabled";
30662306a36Sopenharmony_ci		};
30762306a36Sopenharmony_ci
30862306a36Sopenharmony_ci		uart1: serial@1c25400 {
30962306a36Sopenharmony_ci			compatible = "snps,dw-apb-uart";
31062306a36Sopenharmony_ci			reg = <0x01c25400 0x400>;
31162306a36Sopenharmony_ci			interrupts = <2>;
31262306a36Sopenharmony_ci			reg-shift = <2>;
31362306a36Sopenharmony_ci			reg-io-width = <4>;
31462306a36Sopenharmony_ci			clocks = <&ccu CLK_BUS_UART1>;
31562306a36Sopenharmony_ci			resets = <&ccu RST_BUS_UART1>;
31662306a36Sopenharmony_ci			status = "disabled";
31762306a36Sopenharmony_ci		};
31862306a36Sopenharmony_ci
31962306a36Sopenharmony_ci		uart2: serial@1c25800 {
32062306a36Sopenharmony_ci			compatible = "snps,dw-apb-uart";
32162306a36Sopenharmony_ci			reg = <0x01c25800 0x400>;
32262306a36Sopenharmony_ci			interrupts = <3>;
32362306a36Sopenharmony_ci			reg-shift = <2>;
32462306a36Sopenharmony_ci			reg-io-width = <4>;
32562306a36Sopenharmony_ci			clocks = <&ccu CLK_BUS_UART2>;
32662306a36Sopenharmony_ci			resets = <&ccu RST_BUS_UART2>;
32762306a36Sopenharmony_ci			status = "disabled";
32862306a36Sopenharmony_ci		};
32962306a36Sopenharmony_ci	};
33062306a36Sopenharmony_ci};
331