xref: /rk3399_ARM-atf/plat/intel/soc/agilex/include/socfpga_plat_def.h (revision e3fc8a0f328c456e8c1aceacfd14e7fd1385ebc6)
1328718f2SHadi Asyrafi /*
2f571183bSSieu Mun Tang  * Copyright (c) 2019-2022, ARM Limited and Contributors. All rights reserved.
36197dc98SJit Loon Lim  * Copyright (c) 2019-2023, Intel Corporation. All rights reserved.
46e6efe8cSJit Loon Lim  * Copyright (c) 2024-2025, Altera Corporation. All rights reserved.
5328718f2SHadi Asyrafi  *
6328718f2SHadi Asyrafi  * SPDX-License-Identifier: BSD-3-Clause
7328718f2SHadi Asyrafi  */
8328718f2SHadi Asyrafi 
9328718f2SHadi Asyrafi #ifndef PLAT_SOCFPGA_DEF_H
10328718f2SHadi Asyrafi #define PLAT_SOCFPGA_DEF_H
11328718f2SHadi Asyrafi 
126197dc98SJit Loon Lim #include "agilex_system_manager.h"
13a72f86acSSieu Mun Tang #include <lib/utils_def.h>
14328718f2SHadi Asyrafi #include <platform_def.h>
15328718f2SHadi Asyrafi 
16328718f2SHadi Asyrafi /* Platform Setting */
17328718f2SHadi Asyrafi #define PLATFORM_MODEL				PLAT_SOCFPGA_AGILEX
187ac7dadbSSieu Mun Tang /* 1 = Flush cache, 0 = No cache flush.
197ac7dadbSSieu Mun Tang  * Default for Agilex is No cache flush.
207ac7dadbSSieu Mun Tang  * For Agilex FP8, set to Flush cache.
217ac7dadbSSieu Mun Tang  */
227ac7dadbSSieu Mun Tang #define CACHE_FLUSH				0
236197dc98SJit Loon Lim #define PLAT_PRIMARY_CPU			0
246197dc98SJit Loon Lim #define PLAT_CLUSTER_ID_MPIDR_AFF_SHIFT		MPIDR_AFF1_SHIFT
256197dc98SJit Loon Lim #define PLAT_CPU_ID_MPIDR_AFF_SHIFT		MPIDR_AFF0_SHIFT
261838a39aSSieu Mun Tang #define PLAT_HANDOFF_OFFSET			0xFFE3F000
27b3d28508SSieu Mun Tang #define PLAT_TIMER_BASE_ADDR			0xFFD01000
28328718f2SHadi Asyrafi 
29f571183bSSieu Mun Tang /* FPGA config helpers */
30f571183bSSieu Mun Tang #define INTEL_SIP_SMC_FPGA_CONFIG_ADDR		0x400000
31f571183bSSieu Mun Tang #define INTEL_SIP_SMC_FPGA_CONFIG_SIZE		0x2000000
32f571183bSSieu Mun Tang 
336197dc98SJit Loon Lim /* QSPI Setting */
346197dc98SJit Loon Lim #define CAD_QSPIDATA_OFST			0xff900000
356197dc98SJit Loon Lim #define CAD_QSPI_OFFSET				0xff8d2000
366197dc98SJit Loon Lim 
37beba2040SSieu Mun Tang /* FIP Setting */
38beba2040SSieu Mun Tang #define PLAT_FIP_BASE				(0)
39beba2040SSieu Mun Tang #if ARM_LINUX_KERNEL_AS_BL33
40beba2040SSieu Mun Tang #define PLAT_FIP_MAX_SIZE			(0x8000000)
41beba2040SSieu Mun Tang #else
42beba2040SSieu Mun Tang #define PLAT_FIP_MAX_SIZE			(0x1000000)
43beba2040SSieu Mun Tang #endif
44beba2040SSieu Mun Tang 
45f29765fdSSieu Mun Tang /* SDMMC Setting */
46f29765fdSSieu Mun Tang #if ARM_LINUX_KERNEL_AS_BL33
47beba2040SSieu Mun Tang #define PLAT_MMC_DATA_BASE			(0x10000000)
48beba2040SSieu Mun Tang #define PLAT_MMC_DATA_SIZE			(0x100000)
49f29765fdSSieu Mun Tang #define SOCFPGA_MMC_BLOCK_SIZE			U(32768)
50f29765fdSSieu Mun Tang #else
51beba2040SSieu Mun Tang #define PLAT_MMC_DATA_BASE			(0xffe3c000)
52beba2040SSieu Mun Tang #define PLAT_MMC_DATA_SIZE			(0x2000
53f29765fdSSieu Mun Tang #define SOCFPGA_MMC_BLOCK_SIZE			U(8192)
54f29765fdSSieu Mun Tang #endif
55f29765fdSSieu Mun Tang 
56328718f2SHadi Asyrafi /* Register Mapping */
57bc1a573dSAbdul Halim, Muhammad Hadi Asyrafi #define SOCFPGA_CCU_NOC_REG_BASE		0xf7000000
5811f4f030SSieu Mun Tang #define SOCFPGA_F2SDRAMMGR_REG_BASE		U(0xf8024000)
59bc1a573dSAbdul Halim, Muhammad Hadi Asyrafi 
60328718f2SHadi Asyrafi #define SOCFPGA_MMC_REG_BASE			0xff808000
616197dc98SJit Loon Lim #define SOCFPGA_MEMCTRL_REG_BASE		0xf8011100
62391eeeefSHadi Asyrafi #define SOCFPGA_RSTMGR_REG_BASE			0xffd11000
6320335ca8SHadi Asyrafi #define SOCFPGA_SYSMGR_REG_BASE			0xffd12000
64d6ae69c8SSieu Mun Tang #define SOCFPGA_ECC_QSPI_REG_BASE		0xffa22000
6520335ca8SHadi Asyrafi 
6620335ca8SHadi Asyrafi #define SOCFPGA_L4_PER_SCR_REG_BASE             0xffd21000
6720335ca8SHadi Asyrafi #define SOCFPGA_L4_SYS_SCR_REG_BASE             0xffd21100
6820335ca8SHadi Asyrafi #define SOCFPGA_SOC2FPGA_SCR_REG_BASE           0xffd21200
6920335ca8SHadi Asyrafi #define SOCFPGA_LWSOC2FPGA_SCR_REG_BASE         0xffd21300
70328718f2SHadi Asyrafi 
716197dc98SJit Loon Lim /*******************************************************************************
726197dc98SJit Loon Lim  * Platform memory map related constants
736197dc98SJit Loon Lim  ******************************************************************************/
746197dc98SJit Loon Lim #define DRAM_BASE				(0x0)
756197dc98SJit Loon Lim #define DRAM_SIZE				(0x80000000)
766197dc98SJit Loon Lim 
776197dc98SJit Loon Lim #define OCRAM_BASE				(0xFFE00000)
786197dc98SJit Loon Lim #define OCRAM_SIZE				(0x00040000)
796197dc98SJit Loon Lim 
806197dc98SJit Loon Lim #define MEM64_BASE				(0x0100000000)
816197dc98SJit Loon Lim #define MEM64_SIZE				(0x1F00000000)
826197dc98SJit Loon Lim 
836197dc98SJit Loon Lim #define DEVICE1_BASE				(0x80000000)
846197dc98SJit Loon Lim #define DEVICE1_SIZE				(0x60000000)
856197dc98SJit Loon Lim 
866197dc98SJit Loon Lim #define DEVICE2_BASE				(0xF7000000)
876197dc98SJit Loon Lim #define DEVICE2_SIZE				(0x08E00000)
886197dc98SJit Loon Lim 
896197dc98SJit Loon Lim #define DEVICE3_BASE				(0xFFFC0000)
906197dc98SJit Loon Lim #define DEVICE3_SIZE				(0x00008000)
916197dc98SJit Loon Lim 
926197dc98SJit Loon Lim #define DEVICE4_BASE				(0x2000000000)
936197dc98SJit Loon Lim #define DEVICE4_SIZE				(0x0100000000)
946197dc98SJit Loon Lim 
956197dc98SJit Loon Lim #define BL2_BASE				(0xffe00000)
962d46b2e4SJit Loon Lim #define BL2_LIMIT				(0xffe2b000)
976197dc98SJit Loon Lim 
986197dc98SJit Loon Lim #define BL31_BASE				(0x1000)
996197dc98SJit Loon Lim #define BL31_LIMIT				(0x81000)
1006197dc98SJit Loon Lim 
1016197dc98SJit Loon Lim /*******************************************************************************
1026197dc98SJit Loon Lim  * UART related constants
1036197dc98SJit Loon Lim  ******************************************************************************/
1046197dc98SJit Loon Lim #define PLAT_UART0_BASE				(0xFFC02000)
1056197dc98SJit Loon Lim #define PLAT_UART1_BASE				(0xFFC02100)
1066197dc98SJit Loon Lim 
1076197dc98SJit Loon Lim /*******************************************************************************
10847ca43bcSSieu Mun Tang  * WDT related constants
10947ca43bcSSieu Mun Tang  ******************************************************************************/
11047ca43bcSSieu Mun Tang #define WDT_BASE				(0xFFD00200)
11147ca43bcSSieu Mun Tang 
11247ca43bcSSieu Mun Tang /*******************************************************************************
1136197dc98SJit Loon Lim  * GIC related constants
1146197dc98SJit Loon Lim  ******************************************************************************/
1156197dc98SJit Loon Lim #define PLAT_GIC_BASE				(0xFFFC0000)
1166197dc98SJit Loon Lim #define PLAT_GICC_BASE				(PLAT_GIC_BASE + 0x2000)
1176197dc98SJit Loon Lim #define PLAT_GICD_BASE				(PLAT_GIC_BASE + 0x1000)
1186197dc98SJit Loon Lim #define PLAT_GICR_BASE				0
1196197dc98SJit Loon Lim 
120a72f86acSSieu Mun Tang #define PLAT_SYS_COUNTER_FREQ_IN_TICKS		(400000000)
1216197dc98SJit Loon Lim #define PLAT_HZ_CONVERT_TO_MHZ			(1000000)
1226197dc98SJit Loon Lim 
1237931d332SJit Loon Lim /*******************************************************************************
1246e6efe8cSJit Loon Lim  * SMMU related constants
1256e6efe8cSJit Loon Lim  ******************************************************************************/
1266e6efe8cSJit Loon Lim #define SMMU_SACR_CACHE_LOCK			BIT(26)
1276e6efe8cSJit Loon Lim #define SMMU_IDR7				0x03C
1286e6efe8cSJit Loon Lim #define SMMU_SACR				0x010
1296e6efe8cSJit Loon Lim #define SMMU_IDR7_MINOR(val)			(((val) >> 0) & 0xF)
1306e6efe8cSJit Loon Lim #define SMMU_IDR7_MAJOR(val)			(((val) >> 4) & 0xF)
1316e6efe8cSJit Loon Lim #define SMMU_REG_BASE				0xFA000000
1326e6efe8cSJit Loon Lim 
1336e6efe8cSJit Loon Lim /*******************************************************************************
1347931d332SJit Loon Lim  * SDMMC related pointer function
1357931d332SJit Loon Lim  ******************************************************************************/
136beba2040SSieu Mun Tang #define SDMMC_READ_BLOCKS			sdmmc_read_blocks
1377931d332SJit Loon Lim #define SDMMC_WRITE_BLOCKS			mmc_write_blocks
1387931d332SJit Loon Lim 
1397931d332SJit Loon Lim /*******************************************************************************
140646a9a16SJit Loon Lim  * sysmgr.boot_scratch_cold6 Bits[3:0] is used to indicate L2 reset
1417931d332SJit Loon Lim  * is done and HPS should trigger warm reset via RMR_EL3.
1427931d332SJit Loon Lim  ******************************************************************************/
143646a9a16SJit Loon Lim /*
144646a9a16SJit Loon Lim  * Magic key bits: 4 bits[3:0] from boot scratch register COLD6 are used to
145646a9a16SJit Loon Lim  * indicate the below requests/status
146646a9a16SJit Loon Lim  *     0x0       : Default value on reset, not used
147646a9a16SJit Loon Lim  *     0x1       : L2/warm reset is completed
148646a9a16SJit Loon Lim  *     0x2 - 0xF : Reserved for future use
149646a9a16SJit Loon Lim  */
150*2c03c2c0SJit Loon Lim #define BS_REG_MAGIC_KEYS_MASK			0xFFFFFFFF
151*2c03c2c0SJit Loon Lim #define L2_RESET_DONE_STATUS			0x1228E5E7
152646a9a16SJit Loon Lim 
153646a9a16SJit Loon Lim #define L2_RESET_DONE_REG			SOCFPGA_SYSMGR(BOOT_SCRATCH_COLD_6)
1547931d332SJit Loon Lim 
155f65bdf3aSBenjaminLimJL /* Platform specific system counter */
156a72f86acSSieu Mun Tang #define PLAT_SYS_COUNTER_FREQ_IN_MHZ		U(400)
157328718f2SHadi Asyrafi 
158f65bdf3aSBenjaminLimJL #endif /* PLAT_SOCFPGA_DEF_H */
159