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

/dts-v1/;

#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <platform_def.h>

#define MHU_TX_ADDR			46040000 /* hex */
#define MHU_RX_ADDR			46140000 /* hex */

#define RSE_MHU_TX_ADDR			49010000 /* hex */
#define RSE_MHU_RX_ADDR			49110000 /* hex */

#define LIT_CPU_PMU_COMPATIBLE		"arm,cortex-a520-pmu"
#define MID_CPU_PMU_COMPATIBLE		"arm,cortex-a725-pmu"
#define BIG_CPU_PMU_COMPATIBLE		"arm,cortex-x925-pmu"

#define ETHERNET_ADDR			18000000
#define ETHERNET_INT			109

#define SYS_REGS_ADDR			1c010000

#define MMC_ADDR			1c050000
#define MMC_INT_0			107
#define MMC_INT_1			108

#define RTC_ADDR			1c170000
#define RTC_INT				100

#define KMI_0_ADDR			1c060000
#define KMI_0_INT			197
#define KMI_1_ADDR			1c070000
#define KMI_1_INT			103

#define VIRTIO_BLOCK_ADDR		1c130000
#define VIRTIO_BLOCK_INT		204

#if TARGET_FLAVOUR_FPGA
#define DPU_ADDR			2cc00000
#define DPU_IRQ				69
#endif

#include "tc-common.dtsi"
#if TARGET_FLAVOUR_FVP
#include "tc-fvp.dtsi"
#else
#include "tc-fpga.dtsi"
#endif /* TARGET_FLAVOUR_FVP */
#include "tc3-4-base.dtsi"

/ {
	/*
	 * The kaslr-seed node is a placeholder in DT. In the booting
	 * sequence, it will be initialized in U-Boot and then later
	 * used by Linux kernel.
	 */
	chosen {
		kaslr-seed = <0x0 0x0>;
	};

	spe-pmu-mid {
		status = "okay";
	};

	spe-pmu-big {
		status = "okay";
	};

	ni-pmu {
		compatible = "arm,ni-tower";
		reg = <0x0 0x4f000000 0x0 0x4000000>;
	};

#if TARGET_FLAVOUR_FVP
	smmu_700: iommu@3f000000 {
		status = "okay";
	};

	smmu_700_dpu: iommu@4002a00000 {
		status = "okay";
	};
#else
	smmu_600: smmu@2ce00000 {
		status = "okay";
	};
#endif

	dp0: display@DPU_ADDR {
#if TARGET_FLAVOUR_FVP
		iommus = <&smmu_700_dpu 0x000>, <&smmu_700_dpu 0x100>,
			 <&smmu_700_dpu 0x200>, <&smmu_700_dpu 0x600>;
#else /* TARGET_FLAVOUR_FPGA */
		iommus = <&smmu_600 0>, <&smmu_600 1>, <&smmu_600 2>, <&smmu_600 3>,
			 <&smmu_600 4>, <&smmu_600 5>, <&smmu_600 6>, <&smmu_600 7>,
			 <&smmu_600 8>, <&smmu_600 9>;
#endif
	};

	gpu: gpu@2d000000 {
		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";
#if TARGET_FLAVOUR_FVP
		iommus = <&smmu_700 0x200>;
#endif
	};
};
