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

#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/gpio/gpio.h>
#include "whale2.dtsi"

/ {
	cpus {
		#address-cells = <2>;
		#size-cells = <0>;

		cpu-map {
			cluster0 {
				core0 {
					cpu = <&CPU0>;
				};
				core1 {
					cpu = <&CPU1>;
				};
				core2 {
					cpu = <&CPU2>;
				};
				core3 {
					cpu = <&CPU3>;
				};
			};

			cluster1 {
				core0 {
					cpu = <&CPU4>;
				};
				core1 {
					cpu = <&CPU5>;
				};
				core2 {
					cpu = <&CPU6>;
				};
				core3 {
					cpu = <&CPU7>;
				};
			};
		};

		CPU0: cpu@530000 {
			device_type = "cpu";
			compatible = "arm,cortex-a53", "arm,armv8";
			reg = <0x0 0x530000>;
			enable-method = "psci";
			cpu-idle-states = <&CORE_PD &CLUSTER_PD>;
		};

		CPU1: cpu@530001 {
			device_type = "cpu";
			compatible = "arm,cortex-a53", "arm,armv8";
			reg = <0x0 0x530001>;
			enable-method = "psci";
			cpu-idle-states = <&CORE_PD &CLUSTER_PD>;
		};

		CPU2: cpu@530002 {
			device_type = "cpu";
			compatible = "arm,cortex-a53", "arm,armv8";
			reg = <0x0 0x530002>;
			enable-method = "psci";
			cpu-idle-states = <&CORE_PD &CLUSTER_PD>;
		};

		CPU3: cpu@530003 {
			device_type = "cpu";
			compatible = "arm,cortex-a53", "arm,armv8";
			reg = <0x0 0x530003>;
			enable-method = "psci";
			cpu-idle-states = <&CORE_PD &CLUSTER_PD>;
		};

		CPU4: cpu@530100 {
			device_type = "cpu";
			compatible = "arm,cortex-a53", "arm,armv8";
			reg = <0x0 0x530100>;
			enable-method = "psci";
			cpu-idle-states = <&CORE_PD &CLUSTER_PD>;
		};

		CPU5: cpu@530101 {
			device_type = "cpu";
			compatible = "arm,cortex-a53", "arm,armv8";
			reg = <0x0 0x530101>;
			enable-method = "psci";
			cpu-idle-states = <&CORE_PD &CLUSTER_PD>;
		};

		CPU6: cpu@530102 {
			device_type = "cpu";
			compatible = "arm,cortex-a53", "arm,armv8";
			reg = <0x0 0x530102>;
			enable-method = "psci";
			cpu-idle-states = <&CORE_PD &CLUSTER_PD>;
		};

		CPU7: cpu@530103 {
			device_type = "cpu";
			compatible = "arm,cortex-a53", "arm,armv8";
			reg = <0x0 0x530103>;
			enable-method = "psci";
			cpu-idle-states = <&CORE_PD &CLUSTER_PD>;
		};
	};

	idle-states{
		entry-method = "arm,psci";

		CORE_PD: core_pd {
			compatible = "arm,idle-state";
			entry-latency-us = <1000>;
			exit-latency-us = <700>;
			min-residency-us = <2500>;
			local-timer-stop;
			arm,psci-suspend-param = <0x00010002>;
		};

		CLUSTER_PD: cluster_pd {
			compatible = "arm,idle-state";
			entry-latency-us = <1000>;
			exit-latency-us = <1000>;
			min-residency-us = <3000>;
			local-timer-stop;
			arm,psci-suspend-param = <0x01010003>;
		};
	};

	gic: interrupt-controller@12001000 {
		compatible = "arm,gic-400";
		reg = <0 0x12001000 0 0x1000>,
		      <0 0x12002000 0 0x2000>,
		      <0 0x12004000 0 0x2000>,
		      <0 0x12006000 0 0x2000>;
		#interrupt-cells = <3>;
		interrupt-controller;
		interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(8)
					| IRQ_TYPE_LEVEL_HIGH)>;
	};

	psci {
		compatible = "arm,psci-0.2";
		method = "smc";
	};

	timer {
		compatible = "arm,armv8-timer";
		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(8)
					 | IRQ_TYPE_LEVEL_LOW)>,
			     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(8)
					 | IRQ_TYPE_LEVEL_LOW)>,
			     <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(8)
					 | IRQ_TYPE_LEVEL_LOW)>,
			     <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(8)
					 | IRQ_TYPE_LEVEL_LOW)>;
	};

	pmu {
		compatible = "arm,cortex-a53-pmu", "arm,armv8-pmuv3";
		interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 156 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>;
		interrupt-affinity = <&CPU0>,
				     <&CPU1>,
				     <&CPU2>,
				     <&CPU3>,
				     <&CPU4>,
				     <&CPU5>,
				     <&CPU6>,
				     <&CPU7>;
	};

	soc {
		pmu_gate: pmu-gate {
			compatible = "sprd,sc9860-pmu-gate";
			sprd,syscon = <&pmu_regs>; /* 0x402b0000 */
			clocks = <&ext_26m>;
			#clock-cells = <1>;
		};

		pll: pll {
			compatible = "sprd,sc9860-pll";
			sprd,syscon = <&ana_regs>; /* 0x40400000 */
			clocks = <&pmu_gate 0>;
			#clock-cells = <1>;
		};

		ap_clk: clock-controller@20000000 {
			compatible = "sprd,sc9860-ap-clk";
			reg = <0 0x20000000 0 0x400>;
			clocks = <&ext_26m>, <&pll 0>,
				 <&pmu_gate 0>;
			#clock-cells = <1>;
		};

		aon_prediv: aon-prediv {
			compatible = "sprd,sc9860-aon-prediv";
			reg = <0 0x402d0000 0 0x400>;
			clocks = <&ext_26m>, <&pll 0>,
				 <&pmu_gate 0>;
			#clock-cells = <1>;
		};

		apahb_gate: apahb-gate {
			compatible = "sprd,sc9860-apahb-gate";
			sprd,syscon = <&ap_ahb_regs>; /* 0x20210000 */
			clocks = <&aon_prediv 0>;
			#clock-cells = <1>;
		};

		aon_gate: aon-gate {
			compatible = "sprd,sc9860-aon-gate";
			sprd,syscon = <&aon_regs>; /* 0x402e0000 */
			clocks = <&aon_prediv 0>;
			#clock-cells = <1>;
		};

		aonsecure_clk: clock-controller@40880000 {
			compatible = "sprd,sc9860-aonsecure-clk";
			reg = <0 0x40880000 0 0x400>;
			clocks = <&ext_26m>, <&pll 0>;
			#clock-cells = <1>;
		};

		agcp_gate: agcp-gate {
			compatible = "sprd,sc9860-agcp-gate";
			sprd,syscon = <&agcp_regs>; /* 0x415e0000 */
			clocks = <&aon_prediv 0>;
			#clock-cells = <1>;
		};

		gpu_clk: clock-controller@60200000 {
			compatible = "sprd,sc9860-gpu-clk";
			reg = <0 0x60200000 0 0x400>;
			clocks = <&pll 0>;
			#clock-cells = <1>;
		};

		vsp_clk: clock-controller@61000000 {
			compatible = "sprd,sc9860-vsp-clk";
			reg = <0 0x61000000 0 0x400>;
			clocks = <&ext_26m>, <&pll 0>;
			#clock-cells = <1>;
		};

		vsp_gate: vsp-gate {
			compatible = "sprd,sc9860-vsp-gate";
			sprd,syscon = <&vsp_regs>; /* 0x61100000 */
			clocks = <&vsp_clk 0>;
			#clock-cells = <1>;
		};

		cam_clk: clock-controller@62000000 {
			compatible = "sprd,sc9860-cam-clk";
			reg = <0 0x62000000 0 0x4000>;
			clocks = <&ext_26m>, <&pll 0>;
			#clock-cells = <1>;
		};

		cam_gate: cam-gate {
			compatible = "sprd,sc9860-cam-gate";
			sprd,syscon = <&cam_regs>; /* 0x62100000 */
			clocks = <&cam_clk 0>;
			#clock-cells = <1>;
		};

		disp_clk: clock-controller@63000000 {
			compatible = "sprd,sc9860-disp-clk";
			reg = <0 0x63000000 0 0x400>;
			clocks = <&ext_26m>, <&pll 0>;
			#clock-cells = <1>;
		};

		disp_gate: disp-gate {
			compatible = "sprd,sc9860-disp-gate";
			sprd,syscon = <&disp_regs>; /* 0x63100000 */
			clocks = <&disp_clk 0>;
			#clock-cells = <1>;
		};

		apapb_gate: apapb-gate {
			compatible = "sprd,sc9860-apapb-gate";
			sprd,syscon = <&ap_apb_regs>; /* 0x70b00000 */
			clocks = <&ap_clk 0>;
			#clock-cells = <1>;
		};

		funnel@10001000 { /* SoC Funnel */
			compatible = "arm,coresight-funnel", "arm,primecell";
			reg = <0 0x10001000 0 0x1000>;
			clocks = <&ext_26m>;
			clock-names = "apb_pclk";
			ports {
				#address-cells = <1>;
				#size-cells = <0>;

				port@0 {
					reg = <0>;
					soc_funnel_out_port: endpoint {
						remote-endpoint = <&etb_in>;
					};
				};

				port@1 {
					reg = <0>;
					soc_funnel_in_port0: endpoint {
						slave-mode;
						remote-endpoint =
						<&main_funnel_out_port>;
					};
				};

				port@2 {
					reg = <4>;
					soc_funnel_in_port1: endpoint {
						slave-mode;
						remote-endpoint =
							<&stm_out_port>;
					};
				};
			};
		};

		etb@10003000 {
			compatible = "arm,coresight-tmc", "arm,primecell";
			reg = <0 0x10003000 0 0x1000>;
			clocks = <&ext_26m>;
			clock-names = "apb_pclk";
			port {
				etb_in: endpoint {
					slave-mode;
					remote-endpoint =
						<&soc_funnel_out_port>;
				};
			};
		};

		stm@10006000 {
			compatible = "arm,coresight-stm", "arm,primecell";
			reg = <0 0x10006000 0 0x1000>,
			      <0 0x01000000 0 0x180000>;
			reg-names = "stm-base", "stm-stimulus-base";
			clocks = <&ext_26m>;
			clock-names = "apb_pclk";
			port {
				stm_out_port: endpoint {
					remote-endpoint =
						<&soc_funnel_in_port1>;
				};
			};
		};

		funnel@11001000 { /* Cluster0 Funnel */
			compatible = "arm,coresight-funnel", "arm,primecell";
			reg = <0 0x11001000 0 0x1000>;
			clocks = <&ext_26m>;
			clock-names = "apb_pclk";
			ports {
				#address-cells = <1>;
				#size-cells = <0>;

				port@0 {
					reg = <0>;
					cluster0_funnel_out_port: endpoint {
						remote-endpoint =
							<&cluster0_etf_in>;
					};
				};

				port@1 {
					reg = <0>;
					cluster0_funnel_in_port0: endpoint {
						slave-mode;
						remote-endpoint = <&etm0_out>;
					};
				};

				port@2 {
					reg = <1>;
					cluster0_funnel_in_port1: endpoint {
						slave-mode;
						remote-endpoint = <&etm1_out>;
					};
				};

				port@3 {
					reg = <2>;
					cluster0_funnel_in_port2: endpoint {
						slave-mode;
						remote-endpoint = <&etm2_out>;
					};
				};

				port@4 {
					reg = <4>;
					cluster0_funnel_in_port3: endpoint {
						slave-mode;
						remote-endpoint = <&etm3_out>;
					};
				};
			};
		};

		funnel@11002000 { /* Cluster1 Funnel */
			compatible = "arm,coresight-funnel", "arm,primecell";
			reg = <0 0x11002000 0 0x1000>;
			clocks = <&ext_26m>;
			clock-names = "apb_pclk";
			ports {
				#address-cells = <1>;
				#size-cells = <0>;

				port@0 {
					reg = <0>;
					cluster1_funnel_out_port: endpoint {
						remote-endpoint =
							<&cluster1_etf_in>;
					};
				};

				port@1 {
					reg = <0>;
					cluster1_funnel_in_port0: endpoint {
						slave-mode;
						remote-endpoint = <&etm4_out>;
					};
				};

				port@2 {
					reg = <1>;
					cluster1_funnel_in_port1: endpoint {
						slave-mode;
						remote-endpoint = <&etm5_out>;
					};
				};

				port@3 {
					reg = <2>;
					cluster1_funnel_in_port2: endpoint {
						slave-mode;
						remote-endpoint = <&etm6_out>;
					};
				};

				port@4 {
					reg = <3>;
					cluster1_funnel_in_port3: endpoint {
						slave-mode;
						remote-endpoint = <&etm7_out>;
					};
				};
			};
		};

		etf@11003000 { /*  ETF on Cluster0 */
			compatible = "arm,coresight-tmc", "arm,primecell";
			reg = <0 0x11003000 0 0x1000>;
			clocks = <&ext_26m>;
			clock-names = "apb_pclk";

			ports {
				#address-cells = <1>;
				#size-cells = <0>;

				port@0 {
					reg = <0>;
					cluster0_etf_out: endpoint {
						remote-endpoint =
						<&main_funnel_in_port0>;
					};
				};

				port@1 {
					reg = <0>;
					cluster0_etf_in: endpoint {
						slave-mode;
						remote-endpoint =
						<&cluster0_funnel_out_port>;
					};
				};
			};
		};

		etf@11004000 { /* ETF on Cluster1 */
			compatible = "arm,coresight-tmc", "arm,primecell";
			reg = <0 0x11004000 0 0x1000>;
			clocks = <&ext_26m>;
			clock-names = "apb_pclk";

			ports {
				#address-cells = <1>;
				#size-cells = <0>;

				port@0 {
					reg = <0>;
					cluster1_etf_out: endpoint {
						remote-endpoint =
						<&main_funnel_in_port1>;
					};
				};

				port@1 {
					reg = <0>;
					cluster1_etf_in: endpoint {
						slave-mode;
						remote-endpoint =
						<&cluster1_funnel_out_port>;
					};
				};
			};
		};

		funnel@11005000 { /* Main Funnel */
			compatible = "arm,coresight-funnel", "arm,primecell";
			reg = <0 0x11005000 0 0x1000>;
			clocks = <&ext_26m>;
			clock-names = "apb_pclk";

			ports {
				#address-cells = <1>;
				#size-cells = <0>;

				port@0 {
					reg = <0>;
					main_funnel_out_port: endpoint {
						remote-endpoint =
							<&soc_funnel_in_port0>;
					};
				};

				port@1 {
					reg = <0>;
					main_funnel_in_port0: endpoint {
						slave-mode;
						remote-endpoint =
							<&cluster0_etf_out>;
					};
				};

				port@2 {
					reg = <1>;
					main_funnel_in_port1: endpoint {
						slave-mode;
						remote-endpoint =
							<&cluster1_etf_out>;
					};
				};
			};
		};

		etm@11440000 {
			compatible = "arm,coresight-etm4x", "arm,primecell";
			reg = <0 0x11440000 0 0x1000>;
			cpu = <&CPU0>;
			clocks = <&ext_26m>;
			clock-names = "apb_pclk";

			port {
				etm0_out: endpoint {
					remote-endpoint =
						<&cluster0_funnel_in_port0>;
				};
			};
		};

		etm@11540000 {
			compatible = "arm,coresight-etm4x", "arm,primecell";
			reg = <0 0x11540000 0 0x1000>;
			cpu = <&CPU1>;
			clocks = <&ext_26m>;
			clock-names = "apb_pclk";

			port {
				etm1_out: endpoint {
					remote-endpoint =
						<&cluster0_funnel_in_port1>;
				};
			};
		};

		etm@11640000 {
			compatible = "arm,coresight-etm4x", "arm,primecell";
			reg = <0 0x11640000 0 0x1000>;
			cpu = <&CPU2>;
			clocks = <&ext_26m>;
			clock-names = "apb_pclk";

			port {
				etm2_out: endpoint {
					remote-endpoint =
						<&cluster0_funnel_in_port2>;
				};
			};
		};

		etm@11740000 {
			compatible = "arm,coresight-etm4x", "arm,primecell";
			reg = <0 0x11740000 0 0x1000>;
			cpu = <&CPU3>;
			clocks = <&ext_26m>;
			clock-names = "apb_pclk";

			port {
				etm3_out: endpoint {
					remote-endpoint =
						<&cluster0_funnel_in_port3>;
				};
			};
		};

		etm@11840000 {
			compatible = "arm,coresight-etm4x", "arm,primecell";
			reg = <0 0x11840000 0 0x1000>;
			cpu = <&CPU4>;
			clocks = <&ext_26m>;
			clock-names = "apb_pclk";

			port {
				etm4_out: endpoint {
					remote-endpoint =
						<&cluster1_funnel_in_port0>;
				};
			};
		};

		etm@11940000 {
			compatible = "arm,coresight-etm4x", "arm,primecell";
			reg = <0 0x11940000 0 0x1000>;
			cpu = <&CPU5>;
			clocks = <&ext_26m>;
			clock-names = "apb_pclk";

			port {
				etm5_out: endpoint {
					remote-endpoint =
						<&cluster1_funnel_in_port1>;
				};
			};
		};

		etm@11a40000 {
			compatible = "arm,coresight-etm4x", "arm,primecell";
			reg = <0 0x11a40000 0 0x1000>;
			cpu = <&CPU6>;
			clocks = <&ext_26m>;
			clock-names = "apb_pclk";

			port {
				etm6_out: endpoint {
					remote-endpoint =
						<&cluster1_funnel_in_port2>;
				};
			};
		};

		etm@11b40000 {
			compatible = "arm,coresight-etm4x", "arm,primecell";
			reg = <0 0x11b40000 0 0x1000>;
			cpu = <&CPU7>;
			clocks = <&ext_26m>;
			clock-names = "apb_pclk";

			port {
				etm7_out: endpoint {
					remote-endpoint =
						<&cluster1_funnel_in_port3>;
				};
			};
		};

		gpio-keys {
			compatible = "gpio-keys";

			key-volumedown {
				label = "Volume Down Key";
				linux,code = <KEY_VOLUMEDOWN>;
				gpios = <&eic_debounce 2 GPIO_ACTIVE_LOW>;
				debounce-interval = <2>;
				wakeup-source;
			};

			key-volumeup {
				label = "Volume Up Key";
				linux,code = <KEY_VOLUMEUP>;
				gpios = <&pmic_eic 10 GPIO_ACTIVE_HIGH>;
				debounce-interval = <2>;
				wakeup-source;
			};

			key-power {
				label = "Power Key";
				linux,code = <KEY_POWER>;
				gpios = <&pmic_eic 1 GPIO_ACTIVE_HIGH>;
				debounce-interval = <2>;
				wakeup-source;
			};
		};
	};
};
