/*
 * 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

#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
	};
};
