/*
 * Copyright (c) 2020-2024, Arm Limited. All rights reserved.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */

/* If SCMI power domain control is enabled */
#if TC_SCMI_PD_CTRL_EN
#define GPU_SCMI_PD_IDX		(PLAT_MAX_CPUS_PER_CLUSTER + 1)
#define DPU_SCMI_PD_IDX		(PLAT_MAX_CPUS_PER_CLUSTER + 2)
#endif /* TC_SCMI_PD_CTRL_EN */

/* Use SCMI controlled clocks */
#if TC_DPU_USE_SCMI_CLK
#define DPU_CLK_ATTR1								\
	clocks = <&scmi_clk 0>;							\
	clock-names = "aclk"

#define DPU_CLK_ATTR2								\
	clocks = <&scmi_clk 1>;							\
	clock-names = "pxclk"

#define DPU_CLK_ATTR3								\
	clocks = <&scmi_clk 2>;							\
	clock-names = "pxclk"							\
/* Use fixed clocks */
#else /* !TC_DPU_USE_SCMI_CLK */
#define DPU_CLK_ATTR1								\
	clocks = <&dpu_aclk>;							\
	clock-names = "aclk"

#define DPU_CLK_ATTR2								\
	clocks = <&dpu_pixel_clk>, <&dpu_aclk>;					\
	clock-names = "pxclk", "aclk"

#define DPU_CLK_ATTR3 DPU_CLK_ATTR2
#endif /* !TC_DPU_USE_SCMI_CLK */

/ {
	compatible = "arm,tc";
	interrupt-parent = <&gic>;
	#address-cells = <2>;
	#size-cells = <2>;

	aliases {
		serial0 = &os_uart;
	};

	chosen {
		/*
		 * Add some dummy entropy for Linux so it
		 * doesn't delay the boot waiting for it.
		 */
		rng-seed = <0x01 0x02 0x04 0x05 0x06 0x07 0x08 \
			    0x01 0x02 0x04 0x05 0x06 0x07 0x08 \
			    0x01 0x02 0x04 0x05 0x06 0x07 0x08 \
			    0x01 0x02 0x04 0x05 0x06 0x07 0x08 \
			    0x01 0x02 0x04 0x05 0x06 0x07 0x08 \
			    0x01 0x02 0x04 0x05 0x06 0x07 0x08 \
			    0x01 0x02 0x04 0x05 0x06 0x07 0x08 \
			    0x01 0x02 0x04 0x05 0x06 0x07 0x08 >;
	};

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

		cpu-map {
			cluster0 {
				core0 {
					cpu = <&CPU0>;
				};
				core1 {
					cpu = <&CPU1>;
				};
				core2 {
					cpu = <&CPU2>;
				};
				core3 {
					cpu = <&CPU3>;
				};
				core4 {
					cpu = <&CPU4>;
				};
				core5 {
					cpu = <&CPU5>;
				};
				core6 {
					cpu = <&CPU6>;
				};
				core7 {
					cpu = <&CPU7>;
				};
			};
		};

		/*
		 * The timings below are just to demonstrate working cpuidle.
		 * These values may be inaccurate.
		 */
		idle-states {
			entry-method = "psci";

			CPU_SLEEP_0: cpu-sleep-0 {
				compatible = "arm,idle-state";
				arm,psci-suspend-param = <0x0010000>;
				local-timer-stop;
				entry-latency-us = <300>;
				exit-latency-us = <1200>;
				min-residency-us = <2000>;
			};
			CLUSTER_SLEEP_0: cluster-sleep-0 {
				compatible = "arm,idle-state";
				arm,psci-suspend-param = <0x1010000>;
				local-timer-stop;
				entry-latency-us = <400>;
				exit-latency-us = <1200>;
				min-residency-us = <2500>;
			};
		};

		amus {
			amu: amu-0 {
				#address-cells = <1>;
				#size-cells = <0>;

				mpmm_gear0: counter@0 {
					reg = <0>;
					enable-at-el3;
				};

				mpmm_gear1: counter@1 {
					reg = <1>;
					enable-at-el3;
				};

				mpmm_gear2: counter@2 {
					reg = <2>;
					enable-at-el3;
				};
			};
		};

		CPU0:cpu@0 {
			device_type = "cpu";
			compatible = "arm,armv8";
			reg = <0x0>;
			enable-method = "psci";
			clocks = <&scmi_dvfs 0>;
			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
			capacity-dmips-mhz = <LIT_CAPACITY>;
			amu = <&amu>;
			supports-mpmm;
		};

		CPU1:cpu@100 {
			device_type = "cpu";
			compatible = "arm,armv8";
			reg = <0x100>;
			enable-method = "psci";
			clocks = <&scmi_dvfs 0>;
			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
			capacity-dmips-mhz = <LIT_CAPACITY>;
			amu = <&amu>;
			supports-mpmm;
		};

		CPU2:cpu@200 {
			device_type = "cpu";
			compatible = "arm,armv8";
			reg = <0x200>;
			enable-method = "psci";
			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
			amu = <&amu>;
			supports-mpmm;
		};

		CPU3:cpu@300 {
			device_type = "cpu";
			compatible = "arm,armv8";
			reg = <0x300>;
			enable-method = "psci";
			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
			amu = <&amu>;
			supports-mpmm;
		};

		CPU4:cpu@400 {
			device_type = "cpu";
			compatible = "arm,armv8";
			reg = <0x400>;
			enable-method = "psci";
			clocks = <&scmi_dvfs 1>;
			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
			capacity-dmips-mhz = <MID_CAPACITY>;
			amu = <&amu>;
			supports-mpmm;
		};

		CPU5:cpu@500 {
			device_type = "cpu";
			compatible = "arm,armv8";
			reg = <0x500>;
			enable-method = "psci";
			clocks = <&scmi_dvfs 1>;
			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
			capacity-dmips-mhz = <MID_CAPACITY>;
			amu = <&amu>;
			supports-mpmm;
		};

		CPU6:cpu@600 {
			device_type = "cpu";
			compatible = "arm,armv8";
			reg = <0x600>;
			enable-method = "psci";
			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
			amu = <&amu>;
			supports-mpmm;
		};

		CPU7:cpu@700 {
			device_type = "cpu";
			compatible = "arm,armv8";
			reg = <0x700>;
			enable-method = "psci";
			cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
			amu = <&amu>;
			supports-mpmm;
		};
	};

	reserved-memory {
		#address-cells = <2>;
		#size-cells = <2>;
		ranges;

		linux,cma {
			compatible = "shared-dma-pool";
			reusable;
			size = <0x0 0x8000000>;
			linux,cma-default;
		};

		optee {
			compatible = "restricted-dma-pool";
			reg = <0x0 TC_NS_OPTEE_BASE 0x0 TC_NS_OPTEE_SIZE>;
		};

		fwu_mm {
			reg = <0x0 TC_NS_FWU_BASE 0x0 TC_NS_FWU_SIZE>;
			no-map;
		};
	};

	memory {
		device_type = "memory";
		reg = <0x0 TC_NS_DRAM1_BASE 0x0 TC_NS_DRAM1_SIZE>,
		      <HI(PLAT_ARM_DRAM2_BASE) LO(PLAT_ARM_DRAM2_BASE)
		       HI(TC_NS_DRAM2_SIZE) LO(TC_NS_DRAM2_SIZE)>;
	};

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

	cpu-pmu-little {
		compatible = LIT_CPU_PMU_COMPATIBLE;
		interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH &ppi_partition_little>;
		status = "okay";
	};

	cpu-pmu-mid {
		compatible = MID_CPU_PMU_COMPATIBLE;
		interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH &ppi_partition_mid>;
		status = "okay";
	};

	cpu-pmu-big {
		compatible = BIG_CPU_PMU_COMPATIBLE;
		interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH &ppi_partition_big>;
		status = "okay";
	};

	sram: sram@6000000 {
		compatible = "mmio-sram";
		reg = <0x0 PLAT_ARM_NSRAM_BASE 0x0 PLAT_ARM_NSRAM_SIZE>;

		#address-cells = <1>;
		#size-cells = <1>;
		ranges = <0 0x0 PLAT_ARM_NSRAM_BASE PLAT_ARM_NSRAM_SIZE>;

		cpu_scp_scmi_a2p: scp-shmem@0 {
			compatible = "arm,scmi-shmem";
			reg = <0x0 0x80>;
		};
	};

	mbox_db_rx: mhu@MHU_RX_ADDR {
		compatible = MHU_RX_COMPAT;
		reg = <0x0 ADDRESSIFY(MHU_RX_ADDR) 0x0 MHU_OFFSET>;
		clocks = <&soc_refclk>;
		clock-names = "apb_pclk";
		#mbox-cells = <MHU_MBOX_CELLS>;
		interrupts = <GIC_SPI MHU_RX_INT_NUM IRQ_TYPE_LEVEL_HIGH 0>;
		interrupt-names = MHU_RX_INT_NAME;
	};

	mbox_db_tx: mhu@MHU_TX_ADDR {
		compatible = MHU_TX_COMPAT;
		reg = <0x0 ADDRESSIFY(MHU_TX_ADDR) 0x0 MHU_OFFSET>;
		clocks = <&soc_refclk>;
		clock-names = "apb_pclk";
		#mbox-cells = <MHU_MBOX_CELLS>;
		interrupt-names = MHU_TX_INT_NAME;
	};

	firmware {
		scmi {
			compatible = "arm,scmi";
			mbox-names = "tx", "rx";
			#address-cells = <1>;
			#size-cells = <0>;

#if TC_SCMI_PD_CTRL_EN
			scmi_devpd: protocol@11 {
				reg = <0x11>;
				#power-domain-cells = <1>;
			};
#endif /* TC_SCMI_PD_CTRL_EN */

			scmi_dvfs: protocol@13 {
				reg = <0x13>;
				#clock-cells = <1>;
			};

			scmi_clk: protocol@14 {
				reg = <0x14>;
				#clock-cells = <1>;
			};
		};
	};

	gic: interrupt-controller@GIC_CTRL_ADDR {
		compatible = "arm,gic-v3";
		#address-cells = <2>;
		#interrupt-cells = <4>;
		#size-cells = <2>;
		ranges;
		interrupt-controller;
		reg = <0x0 0x30000000 0 0x10000>, /* GICD */
		      <0x0 0x30080000 0 GIC_GICR_OFFSET>; /* GICR */
		interrupts = <GIC_PPI 0x9 IRQ_TYPE_LEVEL_LOW 0>;
	};

	timer {
		compatible = "arm,armv8-timer";
		interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW 0>,
			     <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW 0>,
			     <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW 0>,
			     <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW 0>;
	};

	spe-pmu-mid {
		compatible = "arm,statistical-profiling-extension-v1";
		interrupts = <GIC_PPI 1 IRQ_TYPE_LEVEL_HIGH &ppi_partition_mid>;
		status = "disabled";
	};

	spe-pmu-big {
		compatible = "arm,statistical-profiling-extension-v1";
		interrupts = <GIC_PPI 1 IRQ_TYPE_LEVEL_HIGH &ppi_partition_big>;
		status = "disabled";
	};

	soc_refclk: refclk {
		compatible = "fixed-clock";
		#clock-cells = <0>;
		clock-frequency = <1000000000>;
		clock-output-names = "apb_pclk";
	};

	soc_refclk60mhz: refclk60mhz {
		compatible = "fixed-clock";
		#clock-cells = <0>;
		clock-frequency = <60000000>;
		clock-output-names = "iofpga_clk";
	};

	soc_uartclk: uartclk {
		compatible = "fixed-clock";
		#clock-cells = <0>;
		clock-frequency = <UARTCLK_FREQ>;
		clock-output-names = "uartclk";
	};

	/* soc_uart0 on FPGA, ap_ns_uart on FVP */
	os_uart: serial@2a400000 {
		compatible = "arm,pl011", "arm,primecell";
		reg = <0x0 0x2A400000 0x0 UART_OFFSET>;
		interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH 0>;
		clocks = <&soc_uartclk>, <&soc_refclk>;
		clock-names = "uartclk", "apb_pclk";
		status = "okay";
	};

#if !TC_DPU_USE_SCMI_CLK
	dpu_aclk: dpu_aclk {
		compatible = "fixed-clock";
		#clock-cells = <0>;
		clock-frequency = <VENCODER_TIMING_CLK>;
		clock-output-names = "fpga:dpu_aclk";
	};

	dpu_pixel_clk: dpu-pixel-clk {
		compatible = "fixed-clock";
		#clock-cells = <0>;
		clock-frequency = <VENCODER_TIMING_CLK>;
		clock-output-names = "pxclk";
	};
#endif /* !TC_DPU_USE_SCMI_CLK */

	vencoder {
		compatible = "drm,virtual-encoder";
		port {
			vencoder_in: endpoint {
				remote-endpoint = <&dp_pl0_out0>;
			};
		};

		display-timings {
			timing-panel {
				VENCODER_TIMING;
			};
		};

	};

	ethernet: ethernet@18000000 {
		reg = <0x0 0x18000000 0x0 0x10000>;
		interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH 0>;

		reg-io-width = <2>;
		smsc,irq-push-pull;
	};

	bp_clock24mhz: clock24mhz {
		compatible = "fixed-clock";
		#clock-cells = <0>;
		clock-frequency = <24000000>;
		clock-output-names = "bp:clock24mhz";
	};


	sysreg: sysreg@1c010000 {
		compatible = "arm,vexpress-sysreg";
		reg = <0x0 0x001c010000 0x0 0x1000>;
		gpio-controller;
		#gpio-cells = <2>;
	};

	fixed_3v3: v2m-3v3 {
		compatible = "regulator-fixed";
		regulator-name = "3V3";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-always-on;
	};

	mmci: mmci@1c050000 {
		compatible = "arm,pl180", "arm,primecell";
		reg = <0x0 0x001c050000 0x0 0x1000>;
		interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH 0>,
			     <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH 0>;
		wp-gpios = <&sysreg 1 0>;
		bus-width = <4>;
		max-frequency = <25000000>;
		vmmc-supply = <&fixed_3v3>;
		clocks = <&bp_clock24mhz>, <&bp_clock24mhz>;
		clock-names = "mclk", "apb_pclk";
	};

	gpu_clk: gpu_clk {
		compatible = "fixed-clock";
		#clock-cells = <0>;
		clock-frequency = <1000000000>;
	};

	gpu_core_clk: gpu_core_clk {
		compatible = "fixed-clock";
		#clock-cells = <0>;
		clock-frequency = <1000000000>;
	};

	gpu: gpu@2d000000 {
		compatible = "arm,mali-midgard";
		reg = <0x0 0x2d000000 0x0 0x200000>;
		interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH 0>,
			     <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH 0>,
			     <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH 0>;
		interrupt-names = "JOB", "MMU", "GPU";
		clocks = <&gpu_core_clk>;
		clock-names = "shadercores";
#if TC_SCMI_PD_CTRL_EN
		power-domains = <&scmi_devpd GPU_SCMI_PD_IDX>;
		scmi-perf-domain = <3>;
#endif /* TC_SCMI_PD_CTRL_EN */

		pbha {
			int-id-override = <0 0x22>, <2 0x23>, <4 0x23>, <7 0x22>,
					  <8 0x22>, <9 0x22>, <10 0x22>, <11 0x22>,
					  <12 0x22>, <13 0x22>, <16 0x22>, <17 0x32>,
					  <18 0x32>, <19 0x22>, <20 0x22>, <21 0x32>,
					  <22 0x32>, <24 0x22>, <28 0x32>;
			propagate-bits = <0x0f>;
		};
	};

	power_model_simple {
		/*
		 * Numbers used are irrelevant to Titan,
		 * it helps suppressing the kernel warnings.
		 */
		compatible = "arm,mali-simple-power-model";
		static-coefficient = <2427750>;
		dynamic-coefficient = <4687>;
		ts = <20000 2000 (-20) 2>;
		thermal-zone = "";
	};

	smmu_600: smmu@2ce00000 {
		compatible = "arm,smmu-v3";
		reg = <0 0x2ce00000 0 0x20000>;
		interrupts = <GIC_SPI 75 IRQ_TYPE_EDGE_RISING 0>,
			     <GIC_SPI 74 IRQ_TYPE_EDGE_RISING 0>,
			     <GIC_SPI 76 IRQ_TYPE_EDGE_RISING 0>,
			     <GIC_SPI 77 IRQ_TYPE_EDGE_RISING 0>;
		interrupt-names = "eventq", "priq", "cmdq-sync", "gerror";
		#iommu-cells = <1>;
		status = "disabled";
	};

	smmu_700: iommu@3f000000 {
		#iommu-cells = <1>;
		compatible = "arm,smmu-v3";
		reg = <0x0 0x3f000000 0x0 0x5000000>;
		interrupts = <GIC_SPI 228 IRQ_TYPE_EDGE_RISING 0>,
			     <GIC_SPI 229 IRQ_TYPE_EDGE_RISING 0>,
			     <GIC_SPI 230 IRQ_TYPE_EDGE_RISING 0>;
		interrupt-names = "eventq", "cmdq-sync", "gerror";
		dma-coherent;
		status = "disabled";
	};

	smmu_700_dpu: iommu@4002a00000 {
		#iommu-cells = <1>;
		compatible = "arm,smmu-v3";
		reg = <HI(0x4002a00000) LO(0x4002a00000) 0x0 0x5000000>;
		interrupts = <GIC_SPI 481 IRQ_TYPE_EDGE_RISING 0>,
			     <GIC_SPI 482 IRQ_TYPE_EDGE_RISING 0>,
			     <GIC_SPI 483 IRQ_TYPE_EDGE_RISING 0>;
		interrupt-names = "eventq", "cmdq-sync", "gerror";
		dma-coherent;
		status = "disabled";
	};

	dp0: display@DPU_ADDR {
		#address-cells = <1>;
		#size-cells = <0>;
		compatible = "arm,mali-d71";
		reg = <HI(ADDRESSIFY(DPU_ADDR)) LO(ADDRESSIFY(DPU_ADDR)) 0 0x20000>;
		interrupts = <GIC_SPI DPU_IRQ IRQ_TYPE_LEVEL_HIGH 0>;
		interrupt-names = "DPU";
		DPU_CLK_ATTR1;

		pl0: pipeline@0 {
			reg = <0>;
			DPU_CLK_ATTR2;
			pl_id = <0>;
			ports {
				#address-cells = <1>;
				#size-cells = <0>;
				port@0 {
					reg = <0>;
					dp_pl0_out0: endpoint {
						remote-endpoint = <&vencoder_in>;
					};
				};
			};
		};

		pl1: pipeline@1 {
			reg = <1>;
			DPU_CLK_ATTR3;
			pl_id = <1>;
			ports {
				#address-cells = <1>;
				#size-cells = <0>;
				port@0 {
					reg = <0>;
				};
			};
		};
	};

	/*
	 * L3 cache in the DSU is the Memory System Component (MSC)
	 * The MPAM registers are accessed through utility bus in the DSU
	 */
	msc0 {
		compatible = "arm,mpam-msc";
		reg = <MPAM_ADDR 0x0 0x2000>;
	};

	ete0 {
		compatible = "arm,embedded-trace-extension";
		cpu = <&CPU0>;
	};

	ete1 {
		compatible = "arm,embedded-trace-extension";
		cpu = <&CPU1>;
	};

	ete2 {
		compatible = "arm,embedded-trace-extension";
		cpu = <&CPU2>;
	};

	ete3 {
		compatible = "arm,embedded-trace-extension";
		cpu = <&CPU3>;
	};

	ete4 {
		compatible = "arm,embedded-trace-extension";
		cpu = <&CPU4>;
	};

	ete5 {
		compatible = "arm,embedded-trace-extension";
		cpu = <&CPU5>;
	};

	ete6 {
		compatible = "arm,embedded-trace-extension";
		cpu = <&CPU6>;
	};

	ete7 {
		compatible = "arm,embedded-trace-extension";
		cpu = <&CPU7>;
	};

	trbe {
		compatible = "arm,trace-buffer-extension";
		interrupts = <GIC_PPI 2 IRQ_TYPE_LEVEL_LOW 0>;
	};

	trusty {
		#size-cells = <0x02>;
		#address-cells = <0x02>;
		ranges = <0x00>;
		compatible = "android,trusty-v1";

		virtio {
			compatible = "android,trusty-virtio-v1";
		};

		test {
			compatible = "android,trusty-test-v1";
		};

		log {
			compatible = "android,trusty-log-v1";
		};

		irq {
			ipi-range = <0x08 0x0f 0x08>;
			interrupt-ranges = <0x00 0x0f 0x00 0x10 0x1f 0x01 0x20 0x3f 0x02>;
			interrupt-templates = <0x01 0x00 0x8001 0x01 0x01 0x04 0x8001 0x01 0x00 0x04>;
			compatible = "android,trusty-irq-v1";
		};
	};

	/* used in U-boot, Linux doesn't care */
	arm_ffa {
		compatible = "arm,ffa";
		method = "smc";
	};
};
