xref: /rk3399_ARM-atf/plat/intel/soc/n5x/include/socfpga_plat_def.h (revision 5cef096e4c7238b397ebd9661d61daecf6464283)
1325eb35dSSieu Mun Tang /*
2f571183bSSieu Mun Tang  * Copyright (c) 2020-2022, ARM Limited and Contributors. All rights reserved.
3b653f3caSJit Loon Lim  * Copyright (c) 2020-2023, Intel Corporation. All rights reserved.
4b3d28508SSieu Mun Tang  * Copyright (c) 2024, Altera Corporation. All rights reserved.
5325eb35dSSieu Mun Tang  *
6325eb35dSSieu Mun Tang  * SPDX-License-Identifier: BSD-3-Clause
7325eb35dSSieu Mun Tang  */
8325eb35dSSieu Mun Tang 
9325eb35dSSieu Mun Tang #ifndef PLAT_SOCFPGA_DEF_H
10325eb35dSSieu Mun Tang #define PLAT_SOCFPGA_DEF_H
11325eb35dSSieu Mun Tang 
12325eb35dSSieu Mun Tang #include <platform_def.h>
13a72f86acSSieu Mun Tang #include <lib/utils_def.h>
14150d2be0SJit Loon Lim #include "n5x_system_manager.h"
15325eb35dSSieu Mun Tang 
16325eb35dSSieu Mun Tang /* Platform Setting */
17325eb35dSSieu Mun Tang #define PLATFORM_MODEL				PLAT_SOCFPGA_N5X
18b653f3caSJit Loon Lim #define PLAT_PRIMARY_CPU			0
19b653f3caSJit Loon Lim #define PLAT_CLUSTER_ID_MPIDR_AFF_SHIFT		MPIDR_AFF1_SHIFT
20b653f3caSJit Loon Lim #define PLAT_CPU_ID_MPIDR_AFF_SHIFT		MPIDR_AFF0_SHIFT
211838a39aSSieu Mun Tang #define PLAT_HANDOFF_OFFSET			0xFFE3F000
22b3d28508SSieu Mun Tang #define PLAT_TIMER_BASE_ADDR			0xFFD01000
23325eb35dSSieu Mun Tang 
24f571183bSSieu Mun Tang /* FPGA config helpers */
25f571183bSSieu Mun Tang #define INTEL_SIP_SMC_FPGA_CONFIG_ADDR		0x400000
26f571183bSSieu Mun Tang #define INTEL_SIP_SMC_FPGA_CONFIG_SIZE		0x2000000
27f571183bSSieu Mun Tang 
28b653f3caSJit Loon Lim /* QSPI Setting */
29b653f3caSJit Loon Lim #define CAD_QSPIDATA_OFST			0xff900000
30b653f3caSJit Loon Lim #define CAD_QSPI_OFFSET				0xff8d2000
31b653f3caSJit Loon Lim 
32beba2040SSieu Mun Tang /* FIP Setting */
33beba2040SSieu Mun Tang #define PLAT_FIP_BASE				(0)
34beba2040SSieu Mun Tang #define PLAT_FIP_MAX_SIZE			(0x1000000)
35beba2040SSieu Mun Tang 
36f29765fdSSieu Mun Tang /* SDMMC Setting */
37beba2040SSieu Mun Tang #define PLAT_MMC_DATA_BASE			(0xffe3c000)
38beba2040SSieu Mun Tang #define PLAT_MMC_DATA_SIZE			(0x2000)
39f29765fdSSieu Mun Tang #define SOCFPGA_MMC_BLOCK_SIZE			U(8192)
40f29765fdSSieu Mun Tang 
41325eb35dSSieu Mun Tang /* Register Mapping */
4211f4f030SSieu Mun Tang #define SOCFPGA_CCU_NOC_REG_BASE		U(0xf7000000)
4311f4f030SSieu Mun Tang #define SOCFPGA_F2SDRAMMGR_REG_BASE		U(0xf8024000)
44325eb35dSSieu Mun Tang #define SOCFPGA_MMC_REG_BASE			U(0xff808000)
45325eb35dSSieu Mun Tang #define SOCFPGA_RSTMGR_REG_BASE			U(0xffd11000)
46325eb35dSSieu Mun Tang #define SOCFPGA_SYSMGR_REG_BASE			U(0xffd12000)
476cf16b36SJit Loon Lim #define SOCFPGA_ECC_QSPI_REG_BASE		U(0xffa22000)
48325eb35dSSieu Mun Tang 
49325eb35dSSieu Mun Tang #define SOCFPGA_L4_PER_SCR_REG_BASE		U(0xffd21000)
50325eb35dSSieu Mun Tang #define SOCFPGA_L4_SYS_SCR_REG_BASE		U(0xffd21100)
51325eb35dSSieu Mun Tang #define SOCFPGA_SOC2FPGA_SCR_REG_BASE		U(0xffd21200)
52325eb35dSSieu Mun Tang #define SOCFPGA_LWSOC2FPGA_SCR_REG_BASE		U(0xffd21300)
53325eb35dSSieu Mun Tang 
54b653f3caSJit Loon Lim 
55b653f3caSJit Loon Lim /*******************************************************************************
56b653f3caSJit Loon Lim  * Platform memory map related constants
57b653f3caSJit Loon Lim  ******************************************************************************/
58b653f3caSJit Loon Lim #define DRAM_BASE				(0x0)
59b653f3caSJit Loon Lim #define DRAM_SIZE				(0x80000000)
60b653f3caSJit Loon Lim 
61b653f3caSJit Loon Lim #define OCRAM_BASE				(0xFFE00000)
62b653f3caSJit Loon Lim #define OCRAM_SIZE				(0x00040000)
63b653f3caSJit Loon Lim 
64b653f3caSJit Loon Lim #define MEM64_BASE				(0x0100000000)
65b653f3caSJit Loon Lim #define MEM64_SIZE				(0x1F00000000)
66b653f3caSJit Loon Lim 
67b653f3caSJit Loon Lim #define DEVICE1_BASE				(0x80000000)
68b653f3caSJit Loon Lim #define DEVICE1_SIZE				(0x60000000)
69b653f3caSJit Loon Lim 
70b653f3caSJit Loon Lim #define DEVICE2_BASE				(0xF7000000)
71b653f3caSJit Loon Lim #define DEVICE2_SIZE				(0x08E00000)
72b653f3caSJit Loon Lim 
73b653f3caSJit Loon Lim #define DEVICE3_BASE				(0xFFFC0000)
74b653f3caSJit Loon Lim #define DEVICE3_SIZE				(0x00008000)
75b653f3caSJit Loon Lim 
76b653f3caSJit Loon Lim #define DEVICE4_BASE				(0x2000000000)
77b653f3caSJit Loon Lim #define DEVICE4_SIZE				(0x0100000000)
78b653f3caSJit Loon Lim 
79b653f3caSJit Loon Lim #define BL2_BASE				(0xffe00000)
80b653f3caSJit Loon Lim #define BL2_LIMIT				(0xffe1b000)
81b653f3caSJit Loon Lim 
82b653f3caSJit Loon Lim #define BL31_BASE				(0x1000)
83b653f3caSJit Loon Lim #define BL31_LIMIT				(0x81000)
84b653f3caSJit Loon Lim 
85b653f3caSJit Loon Lim /*******************************************************************************
86b653f3caSJit Loon Lim  * UART related constants
87b653f3caSJit Loon Lim  ******************************************************************************/
88b653f3caSJit Loon Lim #define PLAT_UART0_BASE				(0xFFC02000)
89b653f3caSJit Loon Lim #define PLAT_UART1_BASE				(0xFFC02100)
90b653f3caSJit Loon Lim 
91b653f3caSJit Loon Lim /*******************************************************************************
9247ca43bcSSieu Mun Tang  * WDT related constants
9347ca43bcSSieu Mun Tang  ******************************************************************************/
9447ca43bcSSieu Mun Tang #define WDT_BASE				(0xFFD00200)
9547ca43bcSSieu Mun Tang 
9647ca43bcSSieu Mun Tang /*******************************************************************************
97b653f3caSJit Loon Lim  * GIC related constants
98b653f3caSJit Loon Lim  ******************************************************************************/
99b653f3caSJit Loon Lim #define PLAT_GIC_BASE				(0xFFFC0000)
100b653f3caSJit Loon Lim #define PLAT_GICC_BASE				(PLAT_GIC_BASE + 0x2000)
101b653f3caSJit Loon Lim #define PLAT_GICD_BASE				(PLAT_GIC_BASE + 0x1000)
102b653f3caSJit Loon Lim #define PLAT_GICR_BASE				0
103b653f3caSJit Loon Lim 
104a72f86acSSieu Mun Tang #define PLAT_SYS_COUNTER_FREQ_IN_TICKS		(400000000)
105b653f3caSJit Loon Lim #define PLAT_HZ_CONVERT_TO_MHZ			(1000000)
106b653f3caSJit Loon Lim 
1077931d332SJit Loon Lim /*******************************************************************************
1087931d332SJit Loon Lim  * SDMMC related pointer function
1097931d332SJit Loon Lim  ******************************************************************************/
1107931d332SJit Loon Lim #define SDMMC_READ_BLOCKS			mmc_read_blocks
1117931d332SJit Loon Lim #define SDMMC_WRITE_BLOCKS			mmc_write_blocks
1127931d332SJit Loon Lim 
1137931d332SJit Loon Lim /*******************************************************************************
114*646a9a16SJit Loon Lim  * sysmgr.boot_scratch_cold6 Bits[3:0] is used to indicate L2 reset
1157931d332SJit Loon Lim  * is done and HPS should trigger warm reset via RMR_EL3.
1167931d332SJit Loon Lim  ******************************************************************************/
117*646a9a16SJit Loon Lim /*
118*646a9a16SJit Loon Lim  * Magic key bits: 4 bits[3:0] from boot scratch register COLD6 are used to
119*646a9a16SJit Loon Lim  * indicate the below requests/status
120*646a9a16SJit Loon Lim  *     0x0       : Default value on reset, not used
121*646a9a16SJit Loon Lim  *     0x1       : L2/warm reset is completed
122*646a9a16SJit Loon Lim  *     0x2 - 0xF : Reserved for future use
123*646a9a16SJit Loon Lim  */
124*646a9a16SJit Loon Lim #define BS_REG_MAGIC_KEYS_MASK			0x0F
125*646a9a16SJit Loon Lim #define BS_REG_MAGIC_KEYS_POS			0x00
126*646a9a16SJit Loon Lim #define L2_RESET_DONE_STATUS			(0x01 << BS_REG_MAGIC_KEYS_POS)
127*646a9a16SJit Loon Lim 
128*646a9a16SJit Loon Lim #define L2_RESET_DONE_REG			SOCFPGA_SYSMGR(BOOT_SCRATCH_COLD_6)
1297931d332SJit Loon Lim 
130b653f3caSJit Loon Lim /* Platform specific system counter */
131a72f86acSSieu Mun Tang #define PLAT_SYS_COUNTER_FREQ_IN_MHZ		U(400)
132f65bdf3aSBenjaminLimJL 
133325eb35dSSieu Mun Tang #endif /* PLAT_SOCFPGA_DEF_H */
134