// SPDX-License-Identifier: GPL-2.0-only
/*
 * Unisoc Sharkl3 platform DTS file
 *
 * Copyright (C) 2019, Unisoc Inc.
 */

/ {
	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@20e00000 {
			compatible = "sprd,sc9863a-glbregs", "syscon",
				     "simple-mfd";
			reg = <0 0x20e00000 0 0x4000>;
			#address-cells = <1>;
			#size-cells = <1>;
			ranges = <0 0 0x20e00000 0x4000>;

			apahb_gate: apahb-gate {
				compatible = "sprd,sc9863a-apahb-gate";
				reg = <0x0 0x1020>;
				#clock-cells = <1>;
			};
		};

		pmu_regs: syscon@402b0000 {
			compatible = "sprd,sc9863a-glbregs", "syscon",
				     "simple-mfd";
			reg = <0 0x402b0000 0 0x4000>;
			#address-cells = <1>;
			#size-cells = <1>;
			ranges = <0 0 0x402b0000 0x4000>;

			pmu_gate: pmu-gate {
				compatible = "sprd,sc9863a-pmu-gate";
				reg = <0 0x1200>;
				clocks = <&ext_26m>;
				clock-names = "ext-26m";
				#clock-cells = <1>;
			};
		};

		aon_apb_regs: syscon@402e0000 {
			compatible = "sprd,sc9863a-glbregs", "syscon",
				     "simple-mfd";
			reg = <0 0x402e0000 0 0x4000>;
			#address-cells = <1>;
			#size-cells = <1>;
			ranges = <0 0 0x402e0000 0x4000>;

			aonapb_gate: aonapb-gate {
				compatible = "sprd,sc9863a-aonapb-gate";
				reg = <0 0x1100>;
				#clock-cells = <1>;
			};
		};

		anlg_phy_g2_regs: syscon@40353000 {
			compatible = "sprd,sc9863a-glbregs", "syscon",
				     "simple-mfd";
			reg = <0 0x40353000 0 0x3000>;
			#address-cells = <1>;
			#size-cells = <1>;
			ranges = <0 0 0x40353000 0x3000>;

			pll: pll {
				compatible = "sprd,sc9863a-pll";
				reg = <0 0x100>;
				clocks = <&ext_26m>;
				clock-names = "ext-26m";
				#clock-cells = <1>;
			};
		};

		anlg_phy_g4_regs: syscon@40359000 {
			compatible = "sprd,sc9863a-glbregs", "syscon",
				     "simple-mfd";
			reg = <0 0x40359000 0 0x3000>;
			#address-cells = <1>;
			#size-cells = <1>;
			ranges = <0 0 0x40359000 0x3000>;

			mpll: mpll {
				compatible = "sprd,sc9863a-mpll";
				reg = <0 0x100>;
				#clock-cells = <1>;
			};
		};

		anlg_phy_g5_regs: syscon@4035c000 {
			compatible = "sprd,sc9863a-glbregs", "syscon",
				     "simple-mfd";
			reg = <0 0x4035c000 0 0x3000>;
			#address-cells = <1>;
			#size-cells = <1>;
			ranges = <0 0 0x4035c000 0x3000>;

			rpll: rpll {
				compatible = "sprd,sc9863a-rpll";
				reg = <0 0x100>;
				clocks = <&ext_26m>;
				clock-names = "ext-26m";
				#clock-cells = <1>;
			};
		};

		anlg_phy_g7_regs: syscon@40363000 {
			compatible = "sprd,sc9863a-glbregs", "syscon",
				     "simple-mfd";
			reg = <0 0x40363000 0 0x3000>;
			#address-cells = <1>;
			#size-cells = <1>;
			ranges = <0 0 0x40363000 0x3000>;

			dpll: dpll {
				compatible = "sprd,sc9863a-dpll";
				reg = <0 0x100>;
				#clock-cells = <1>;
			};
		};

		mm_ahb_regs: syscon@60800000 {
			compatible = "sprd,sc9863a-glbregs", "syscon",
				     "simple-mfd";
			reg = <0 0x60800000 0 0x1000>;
			#address-cells = <1>;
			#size-cells = <1>;
			ranges = <0 0 0x60800000 0x3000>;

			mm_gate: mm-gate {
				compatible = "sprd,sc9863a-mm-gate";
				reg = <0 0x1100>;
				#clock-cells = <1>;
			};
		};

		ap_apb_regs: syscon@71300000 {
			compatible = "sprd,sc9863a-glbregs", "syscon",
				     "simple-mfd";
			reg = <0 0x71300000 0 0x4000>;
			#address-cells = <1>;
			#size-cells = <1>;
			ranges = <0 0 0x71300000 0x4000>;

			apapb_gate: apapb-gate {
				compatible = "sprd,sc9863a-apapb-gate";
				reg = <0 0x1000>;
				clocks = <&ext_26m>;
				clock-names = "ext-26m";
				#clock-cells = <1>;
			};
		};

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

			uart0: serial@0 {
				compatible = "sprd,sc9863a-uart",
					     "sprd,sc9836-uart";
				reg = <0x0 0x100>;
				interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
				clocks = <&ext_26m>;
				status = "disabled";
			};

			uart1: serial@100000 {
				compatible = "sprd,sc9863a-uart",
					     "sprd,sc9836-uart";
				reg = <0x100000 0x100>;
				interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
				clocks = <&ext_26m>;
				status = "disabled";
			};

			uart2: serial@200000 {
				compatible = "sprd,sc9863a-uart",
					     "sprd,sc9836-uart";
				reg = <0x200000 0x100>;
				interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
				clocks = <&ext_26m>;
				status = "disabled";
			};

			uart3: serial@300000 {
				compatible = "sprd,sc9863a-uart",
					     "sprd,sc9836-uart";
				reg = <0x300000 0x100>;
				interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
				clocks = <&ext_26m>;
				status = "disabled";
			};

			uart4: serial@400000 {
				compatible = "sprd,sc9863a-uart",
					     "sprd,sc9836-uart";
				reg = <0x400000 0x100>;
				interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
				clocks = <&ext_26m>;
				status = "disabled";
			};
		};
	};

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

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

	ext_4m: ext-4m {
		compatible = "fixed-clock";
		#clock-cells = <0>;
		clock-frequency = <4000000>;
		clock-output-names = "ext-4m";
	};

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