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