xref: /rk3399_ARM-atf/plat/intel/soc/agilex5/include/socfpga_plat_def.h (revision c6b2bb999944b065c3225a2ea61350598ee1a6a0)
17931d332SJit Loon Lim /*
27931d332SJit Loon Lim  * Copyright (c) 2019, ARM Limited and Contributors. All rights reserved.
37931d332SJit Loon Lim  * Copyright (c) 2019-2023, Intel Corporation. All rights reserved.
429d1e29dSJit Loon Lim  * Copyright (c) 2024-2025, Altera Corporation. All rights reserved.
57931d332SJit Loon Lim  *
67931d332SJit Loon Lim  * SPDX-License-Identifier: BSD-3-Clause
77931d332SJit Loon Lim  */
87931d332SJit Loon Lim 
97931d332SJit Loon Lim #ifndef PLAT_SOCFPGA_DEF_H
107931d332SJit Loon Lim #define PLAT_SOCFPGA_DEF_H
117931d332SJit Loon Lim 
127931d332SJit Loon Lim #include "agilex5_memory_controller.h"
137931d332SJit Loon Lim #include "agilex5_system_manager.h"
146875d823SGirisha Dengi 
157931d332SJit Loon Lim #include <platform_def.h>
167931d332SJit Loon Lim 
177931d332SJit Loon Lim /* Platform Setting */
187931d332SJit Loon Lim #define PLATFORM_MODEL						PLAT_SOCFPGA_AGILEX5
197ac7dadbSSieu Mun Tang /* 1 = Flush cache, 0 = No cache flush.
207ac7dadbSSieu Mun Tang  * Default for Agilex5 is Cache flush.
217ac7dadbSSieu Mun Tang  */
227ac7dadbSSieu Mun Tang #define CACHE_FLUSH							1
237931d332SJit Loon Lim #define MMC_DEVICE_TYPE						1  /* MMC = 0, SD = 1 */
247931d332SJit Loon Lim #define XLAT_TABLES_V2						U(1)
257931d332SJit Loon Lim #define PLAT_PRIMARY_CPU_A55					0x000
267931d332SJit Loon Lim #define PLAT_PRIMARY_CPU_A76					0x200
277931d332SJit Loon Lim #define PLAT_CLUSTER_ID_MPIDR_AFF_SHIFT				MPIDR_AFF2_SHIFT
287931d332SJit Loon Lim #define PLAT_CPU_ID_MPIDR_AFF_SHIFT				MPIDR_AFF1_SHIFT
297931d332SJit Loon Lim #define PLAT_L2_RESET_REQ					0xB007C0DE
301838a39aSSieu Mun Tang #define PLAT_HANDOFF_OFFSET					0x0007F000
31b3d28508SSieu Mun Tang #define PLAT_TIMER_BASE_ADDR					0x10D01000
3229d1e29dSJit Loon Lim #define SOCFPGA_DTB_BASE			0x80020000
3329d1e29dSJit Loon Lim #define DT_COMPATIBLE_STR			"arm,altera socfpga-agilex5"
347931d332SJit Loon Lim 
35460692afSJit Loon Lim /* System Counter */
36460692afSJit Loon Lim /* TODO: Update back to 400MHz.
37460692afSJit Loon Lim  * This shall be updated to read from L4 clock instead of hardcoded.
38460692afSJit Loon Lim  */
39b3d28508SSieu Mun Tang #define PLAT_SYS_COUNTER_FREQ_IN_TICKS				U(400000000)
40b3d28508SSieu Mun Tang #define PLAT_SYS_COUNTER_FREQ_IN_MHZ				U(400)
417931d332SJit Loon Lim 
427931d332SJit Loon Lim /* FPGA config helpers */
437c72dfacSJit Loon Lim #define INTEL_SIP_SMC_FPGA_CONFIG_ADDR				0x80400000
449978a3fdSSieu Mun Tang #define INTEL_SIP_SMC_FPGA_CONFIG_SIZE				0x82000000
457931d332SJit Loon Lim 
467931d332SJit Loon Lim /* QSPI Setting */
477931d332SJit Loon Lim #define CAD_QSPIDATA_OFST					0x10900000
487931d332SJit Loon Lim #define CAD_QSPI_OFFSET						0x108d2000
497931d332SJit Loon Lim 
50beba2040SSieu Mun Tang /* FIP Setting */
51beba2040SSieu Mun Tang #define PLAT_FIP_BASE						(0)
52beba2040SSieu Mun Tang #if ARM_LINUX_KERNEL_AS_BL33
53beba2040SSieu Mun Tang #define PLAT_FIP_MAX_SIZE					(0x8000000)
54beba2040SSieu Mun Tang #else
55beba2040SSieu Mun Tang #define PLAT_FIP_MAX_SIZE					(0x1000000)
56beba2040SSieu Mun Tang #endif
57beba2040SSieu Mun Tang 
58f29765fdSSieu Mun Tang /* SDMMC Setting */
59f29765fdSSieu Mun Tang #if ARM_LINUX_KERNEL_AS_BL33
60beba2040SSieu Mun Tang #define PLAT_MMC_DATA_BASE					(0x90000000)
61beba2040SSieu Mun Tang #define PLAT_MMC_DATA_SIZE					(0x100000)
62f29765fdSSieu Mun Tang #define SOCFPGA_MMC_BLOCK_SIZE					U(32768)
63f29765fdSSieu Mun Tang #else
64beba2040SSieu Mun Tang #define PLAT_MMC_DATA_BASE					(0x0007D000)
65beba2040SSieu Mun Tang #define PLAT_MMC_DATA_SIZE					(0x2000)
66f29765fdSSieu Mun Tang #define SOCFPGA_MMC_BLOCK_SIZE					U(8192)
67f29765fdSSieu Mun Tang #endif
68f29765fdSSieu Mun Tang 
69*6f7f8b18SGirisha Dengi #define PLAT_NAND_SCRATCH_BUFF					(0x96400000)
70*6f7f8b18SGirisha Dengi 
717931d332SJit Loon Lim /* Register Mapping */
727931d332SJit Loon Lim #define SOCFPGA_CCU_NOC_REG_BASE				0x1c000000
737931d332SJit Loon Lim #define SOCFPGA_F2SDRAMMGR_REG_BASE				0x18001000
747931d332SJit Loon Lim 
757931d332SJit Loon Lim #define SOCFPGA_MMC_REG_BASE					0x10808000
767931d332SJit Loon Lim #define SOCFPGA_MEMCTRL_REG_BASE				0x108CC000
777931d332SJit Loon Lim #define SOCFPGA_RSTMGR_REG_BASE					0x10d11000
787931d332SJit Loon Lim #define SOCFPGA_SYSMGR_REG_BASE					0x10d12000
797931d332SJit Loon Lim #define SOCFPGA_PINMUX_REG_BASE					0x10d13000
807931d332SJit Loon Lim #define SOCFPGA_NAND_REG_BASE					0x10B80000
814d122e5fSJit Loon Lim #define SOCFPGA_ECC_QSPI_REG_BASE				0x10A22000
827931d332SJit Loon Lim 
837931d332SJit Loon Lim #define SOCFPGA_L4_PER_SCR_REG_BASE				0x10d21000
847931d332SJit Loon Lim #define SOCFPGA_L4_SYS_SCR_REG_BASE				0x10d21100
857931d332SJit Loon Lim #define SOCFPGA_SOC2FPGA_SCR_REG_BASE				0x10d21200
867931d332SJit Loon Lim #define SOCFPGA_LWSOC2FPGA_SCR_REG_BASE				0x10d21300
87beba2040SSieu Mun Tang #define SOCFPGA_SDMMC_SECU_BIT					0x40
88beba2040SSieu Mun Tang #define SOCFPGA_LWSOC2FPGA_ENABLE				0xffe0301
89beba2040SSieu Mun Tang #define SOCFPGA_SDMMC_SECU_BIT_ENABLE				0x1010001
90beba2040SSieu Mun Tang 
917931d332SJit Loon Lim 
927931d332SJit Loon Lim /* Define maximum page size for NAND flash devices */
93a773f412SGirisha Dengi #define PLATFORM_MTD_MAX_PAGE_SIZE				U(0x2000)
947931d332SJit Loon Lim 
95beba2040SSieu Mun Tang /* OCRAM Register*/
96beba2040SSieu Mun Tang 
97beba2040SSieu Mun Tang #define OCRAM_REG_BASE						0x108CC400
98beba2040SSieu Mun Tang #define OCRAM_REGION_0_OFFSET					0x18
99beba2040SSieu Mun Tang #define OCRAM_REGION_0_REG_BASE					(OCRAM_REG_BASE + \
100beba2040SSieu Mun Tang 								OCRAM_REGION_0_OFFSET)
101beba2040SSieu Mun Tang #define OCRAM_NON_SECURE_ENABLE					0x0
102beba2040SSieu Mun Tang 
103646a9a16SJit Loon Lim 
104646a9a16SJit Loon Lim /*
105646a9a16SJit Loon Lim  * Magic key bits: 4 bits[5:2] from boot scratch register COLD3 are used to
106646a9a16SJit Loon Lim  * indicate the below requests/status
107646a9a16SJit Loon Lim  *     0x0       : Default value on reset, not used
108646a9a16SJit Loon Lim  *     0x1       : L2/warm reset is completed
109646a9a16SJit Loon Lim  *     0x2       : SMP secondary core boot requests
110646a9a16SJit Loon Lim  *     0x3 - 0xF : Reserved for future use
111646a9a16SJit Loon Lim  */
112646a9a16SJit Loon Lim #define BS_REG_MAGIC_KEYS_MASK			0x3C
113646a9a16SJit Loon Lim #define BS_REG_MAGIC_KEYS_POS			0x02
114646a9a16SJit Loon Lim #define L2_RESET_DONE_STATUS			(0x01 << BS_REG_MAGIC_KEYS_POS)
115646a9a16SJit Loon Lim #define SMP_SEC_CORE_BOOT_REQ			(0x02 << BS_REG_MAGIC_KEYS_POS)
116646a9a16SJit Loon Lim #define ALIGN_CHECK_64BIT_MASK			0x07
117646a9a16SJit Loon Lim 
1187931d332SJit Loon Lim /*******************************************************************************
1197931d332SJit Loon Lim  * Platform memory map related constants
1207931d332SJit Loon Lim  ******************************************************************************/
1217931d332SJit Loon Lim #define DRAM_BASE						(0x80000000)
1227931d332SJit Loon Lim #define DRAM_SIZE						(0x80000000)
1237931d332SJit Loon Lim 
1247931d332SJit Loon Lim #define OCRAM_BASE						(0x00000000)
1257931d332SJit Loon Lim #define OCRAM_SIZE						(0x00080000)
1267931d332SJit Loon Lim 
1277931d332SJit Loon Lim #define MEM64_BASE						(0x0080000000)
1287931d332SJit Loon Lim #define MEM64_SIZE						(0x0080000000)
1297931d332SJit Loon Lim 
1307931d332SJit Loon Lim //128MB PSS
1317931d332SJit Loon Lim #define PSS_BASE						(0x10000000)
1327931d332SJit Loon Lim #define PSS_SIZE						(0x08000000)
1337931d332SJit Loon Lim 
1347931d332SJit Loon Lim //64MB MPFE
1357931d332SJit Loon Lim #define MPFE_BASE						(0x18000000)
1367931d332SJit Loon Lim #define MPFE_SIZE						(0x04000000)
1377931d332SJit Loon Lim 
1387931d332SJit Loon Lim //16MB CCU
1397931d332SJit Loon Lim #define CCU_BASE						(0x1C000000)
1407931d332SJit Loon Lim #define CCU_SIZE						(0x01000000)
1417931d332SJit Loon Lim 
1427931d332SJit Loon Lim //1MB GIC
1437931d332SJit Loon Lim #define GIC_BASE						(0x1D000000)
1447931d332SJit Loon Lim #define GIC_SIZE						(0x00100000)
1457931d332SJit Loon Lim 
1467931d332SJit Loon Lim #define BL2_BASE						(0x00000000)
147b3d28508SSieu Mun Tang #define BL2_LIMIT						(0x0007E000)
1487931d332SJit Loon Lim 
1497931d332SJit Loon Lim #define BL31_BASE						(0x80000000)
1507931d332SJit Loon Lim #define BL31_LIMIT						(0x82000000)
1517931d332SJit Loon Lim /*******************************************************************************
1527931d332SJit Loon Lim  * UART related constants
1537931d332SJit Loon Lim  ******************************************************************************/
1547931d332SJit Loon Lim #define PLAT_UART0_BASE						(0x10C02000)
1557931d332SJit Loon Lim #define PLAT_UART1_BASE						(0x10C02100)
1567931d332SJit Loon Lim 
1577931d332SJit Loon Lim /*******************************************************************************
15847ca43bcSSieu Mun Tang  * WDT related constants
15947ca43bcSSieu Mun Tang  ******************************************************************************/
16047ca43bcSSieu Mun Tang #define WDT_BASE						(0x10D00200)
16147ca43bcSSieu Mun Tang 
16247ca43bcSSieu Mun Tang /*******************************************************************************
1637931d332SJit Loon Lim  * GIC related constants
1647931d332SJit Loon Lim  ******************************************************************************/
1657931d332SJit Loon Lim #define PLAT_GIC_BASE						(0x1D000000)
1667931d332SJit Loon Lim #define PLAT_GICC_BASE						(PLAT_GIC_BASE + 0x20000)
1677931d332SJit Loon Lim #define PLAT_GICD_BASE						(PLAT_GIC_BASE + 0x00000)
1687931d332SJit Loon Lim #define PLAT_GICR_BASE						(PLAT_GIC_BASE + 0x60000)
1697931d332SJit Loon Lim 
1707931d332SJit Loon Lim #define PLAT_INTEL_SOCFPGA_GICR_BASE				PLAT_GICR_BASE
1717931d332SJit Loon Lim 
1727931d332SJit Loon Lim /*******************************************************************************
1737931d332SJit Loon Lim  * SDMMC related pointer function
1747931d332SJit Loon Lim  ******************************************************************************/
1757931d332SJit Loon Lim #define SDMMC_READ_BLOCKS					sdmmc_read_blocks
1767931d332SJit Loon Lim #define SDMMC_WRITE_BLOCKS					sdmmc_write_blocks
1777931d332SJit Loon Lim 
1787931d332SJit Loon Lim /*******************************************************************************
179646a9a16SJit Loon Lim  * sysmgr.boot_scratch_cold3 bits[5:2] are used to indicate L2 reset
180646a9a16SJit Loon Lim  * is done, or SMP secondary cores boot request status.
1817931d332SJit Loon Lim  ******************************************************************************/
182646a9a16SJit Loon Lim #define L2_RESET_DONE_REG					SOCFPGA_SYSMGR(BOOT_SCRATCH_COLD_3)
1837931d332SJit Loon Lim 
1847931d332SJit Loon Lim #endif /* PLAT_SOCFPGA_DEF_H */
185