// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Spreadtrum Whale2 platform peripherals
 *
 * Copyright (C) 2016, Spreadtrum Communications Inc.
 */

#include <dt-bindings/clock/sprd,sc9860-clk.h>

/ {
	interrupt-parent = <&gic>;
	#address-cells = <2>;
	#size-cells = <2>;

	soc: soc {
		compatible = "simple-bus";
		#address-cells = <2>;
		#size-cells = <2>;
		ranges;

		ap_ahb_regs: syscon@20210000 {
			compatible = "syscon";
			reg = <0 0x20210000 0 0x10000>;
		};

		pmu_regs: syscon@402b0000 {
			compatible = "syscon";
			reg = <0 0x402b0000 0 0x10000>;
		};

		aon_regs: syscon@402e0000 {
			compatible = "syscon";
			reg = <0 0x402e0000 0 0x10000>;
		};

		ana_regs: syscon@40400000 {
			compatible = "syscon";
			reg = <0 0x40400000 0 0x10000>;
		};

		agcp_regs: syscon@415e0000 {
			compatible = "syscon";
			reg = <0 0x415e0000 0 0x1000000>;
		};

		vsp_regs: syscon@61100000 {
			compatible = "syscon";
			reg = <0 0x61100000 0 0x10000>;
		};

		cam_regs: syscon@62100000 {
			compatible = "syscon";
			reg = <0 0x62100000 0 0x10000>;
		};

		disp_regs: syscon@63100000 {
			compatible = "syscon";
			reg = <0 0x63100000 0 0x10000>;
		};

		ap_apb_regs: syscon@70b00000 {
			compatible = "syscon";
			reg = <0 0x70b00000 0 0x40000>;
		};

		ap-apb@70000000 {
			compatible = "simple-bus";
			#address-cells = <1>;
			#size-cells = <1>;
			ranges = <0 0x0 0x70000000 0x10000000>;

			uart0: serial@0 {
				compatible = "sprd,sc9860-uart",
					     "sprd,sc9836-uart";
				reg = <0x0 0x100>;
				interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
				clocks = <&apapb_gate CLK_UART0_EB>,
					 <&ap_clk CLK_UART0>,
					 <&ext_26m>;
				clock-names = "enable", "uart", "source";
				status = "disabled";
			};

			uart1: serial@100000 {
				compatible = "sprd,sc9860-uart",
					     "sprd,sc9836-uart";
				reg = <0x100000 0x100>;
				interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
				clocks = <&apapb_gate CLK_UART1_EB>,
					 <&ap_clk CLK_UART1>,
					 <&ext_26m>;
				clock-names = "enable", "uart", "source";
				status = "disabled";
			};

			uart2: serial@200000 {
				compatible = "sprd,sc9860-uart",
					     "sprd,sc9836-uart";
				reg = <0x200000 0x100>;
				interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
				clocks = <&apapb_gate CLK_UART2_EB>,
					 <&ap_clk CLK_UART2>,
					 <&ext_26m>;
				clock-names = "enable", "uart", "source";
				status = "disabled";
			};

			uart3: serial@300000 {
				compatible = "sprd,sc9860-uart",
					     "sprd,sc9836-uart";
				reg = <0x300000 0x100>;
				interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
				clocks = <&apapb_gate CLK_UART3_EB>,
					 <&ap_clk CLK_UART3>,
					 <&ext_26m>;
				clock-names = "enable", "uart", "source";
				status = "disabled";
			};
		};

		ap-ahb {
			compatible = "simple-bus";
			#address-cells = <2>;
			#size-cells = <2>;
			ranges;

			ap_dma: dma-controller@20100000 {
				compatible = "sprd,sc9860-dma";
				reg = <0 0x20100000 0 0x4000>;
				interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
				#dma-cells = <1>;
				/* For backwards compatibility: */
				#dma-channels = <32>;
				dma-channels = <32>;
				clocks = <&apahb_gate CLK_DMA_EB>;
				clock-names = "enable";
			};

			sdio3: mmc@50430000 {
				compatible = "sprd,sdhci-r11";
				reg = <0 0x50430000 0 0x1000>;
				interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;

				clocks = <&aon_prediv CLK_EMMC_2X>,
					 <&apahb_gate CLK_EMMC_EB>,
					 <&aon_gate CLK_EMMC_2X_EN>;
				clock-names = "sdio", "enable", "2x_enable";
				assigned-clocks = <&aon_prediv CLK_EMMC_2X>;
				assigned-clock-parents = <&clk_l0_409m6>;

				sprd,phy-delay-mmc-hs400 = <0x44 0x7f 0x2e 0x2e>;
				sprd,phy-delay-mmc-hs200 = <0x0 0x8c 0x8c 0x8c>;
				sprd,phy-delay-mmc-ddr52 = <0x3f 0x75 0x14 0x14>;
				sprd,phy-delay-mmc-hs400es = <0x3f 0x3f 0x2e 0x2e>;
				vmmc-supply = <&vddemmccore>;
				bus-width = <8>;
				non-removable;
				no-sdio;
				no-sd;
				cap-mmc-hw-reset;
				mmc-hs400-enhanced-strobe;
				mmc-hs400-1_8v;
				mmc-hs200-1_8v;
				mmc-ddr-1_8v;
			};
		};

		aon {
			compatible = "simple-bus";
			#address-cells = <2>;
			#size-cells = <2>;
			ranges;

			adi_bus: spi@40030000 {
				compatible = "sprd,sc9860-adi";
				reg = <0 0x40030000 0 0x10000>;
				hwlocks = <&hwlock 0>;
				hwlock-names = "adi";
				#address-cells = <1>;
				#size-cells = <0>;
			};

			timer@40050000 {
				compatible = "sprd,sc9860-timer";
				reg = <0 0x40050000 0 0x20>;
				interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
				clocks = <&ext_32k>;
			};

			timer@40050020 {
				compatible = "sprd,sc9860-suspend-timer";
				reg = <0 0x40050020 0 0x20>;
				clocks = <&ext_32k>;
			};

			hwlock: hwspinlock@40500000 {
				compatible = "sprd,hwspinlock-r3p0";
				reg = <0 0x40500000 0 0x1000>;
				#hwlock-cells = <1>;
				clocks = <&aon_gate CLK_SPLK_EB>;
				clock-names = "enable";
			};

			eic_debounce: gpio@40210000 {
				compatible = "sprd,sc9860-eic-debounce";
				reg = <0 0x40210000 0 0x80>;
				gpio-controller;
				#gpio-cells = <2>;
				interrupt-controller;
				#interrupt-cells = <2>;
				interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
			};

			eic_latch: gpio@40210080 {
				compatible = "sprd,sc9860-eic-latch";
				reg = <0 0x40210080 0 0x20>;
				gpio-controller;
				#gpio-cells = <2>;
				interrupt-controller;
				#interrupt-cells = <2>;
				interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
			};

			eic_async: gpio@402100a0 {
				compatible = "sprd,sc9860-eic-async";
				reg = <0 0x402100a0 0 0x20>;
				gpio-controller;
				#gpio-cells = <2>;
				interrupt-controller;
				#interrupt-cells = <2>;
				interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
			};

			eic_sync: gpio@402100c0 {
				compatible = "sprd,sc9860-eic-sync";
				reg = <0 0x402100c0 0 0x20>;
				gpio-controller;
				#gpio-cells = <2>;
				interrupt-controller;
				#interrupt-cells = <2>;
				interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
			};

			ap_gpio: gpio@40280000 {
				compatible = "sprd,sc9860-gpio";
				reg = <0 0x40280000 0 0x1000>;
				gpio-controller;
				#gpio-cells = <2>;
				interrupt-controller;
				#interrupt-cells = <2>;
				interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
			};

			pin_controller: pinctrl@402a0000 {
				compatible = "sprd,sc9860-pinctrl";
				reg = <0 0x402a0000 0 0x10000>;
			};

			watchdog@40310000 {
				compatible = "sprd,sp9860-wdt";
				reg = <0 0x40310000 0 0x1000>;
				interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
				timeout-sec = <12>;
				clocks = <&aon_gate CLK_APCPU_WDG_EB>,
					 <&aon_gate CLK_AP_WDG_RTC_EB>;
				clock-names = "enable", "rtc_enable";
			};
		};

		agcp {
			compatible = "simple-bus";
			#address-cells = <2>;
			#size-cells = <2>;
			ranges;

			agcp_dma: dma-controller@41580000 {
				compatible = "sprd,sc9860-dma";
				reg = <0 0x41580000 0 0x4000>;
				#dma-cells = <1>;
				/* For backwards compatibility: */
				#dma-channels = <32>;
				dma-channels = <32>;
				clocks = <&agcp_gate CLK_AGCP_DMAAP_EB>,
					 <&agcp_gate CLK_AGCP_AP_ASHB_EB>;
				clock-names = "enable", "ashb_eb";
			};
		};
	};

	ext_32k: ext_32k {
		compatible = "fixed-clock";
		#clock-cells = <0>;
		clock-frequency = <32768>;
		clock-output-names = "ext-32k";
	};

	ext_26m: ext_26m {
		compatible = "fixed-clock";
		#clock-cells = <0>;
		clock-frequency = <26000000>;
		clock-output-names = "ext-26m";
	};

	ext_rco_100m: ext_rco_100m {
		compatible = "fixed-clock";
		#clock-cells = <0>;
		clock-frequency = <100000000>;
		clock-output-names = "ext-rco-100m";
	};

	clk_l0_409m6: clk_l0_409m6 {
		compatible = "fixed-clock";
		#clock-cells = <0>;
		clock-frequency = <409600000>;
		clock-output-names = "ext-409m6";
	};
};
