100c7d5acSUsama Arif /* 2*df960bccSHarrison Mutai * Copyright (c) 2019-2024, Arm Limited. All rights reserved. 300c7d5acSUsama Arif * 400c7d5acSUsama Arif * SPDX-License-Identifier: BSD-3-Clause 500c7d5acSUsama Arif */ 600c7d5acSUsama Arif 700c7d5acSUsama Arif #ifndef PLATFORM_DEF_H 800c7d5acSUsama Arif #define PLATFORM_DEF_H 900c7d5acSUsama Arif 1000c7d5acSUsama Arif #include <common/tbbr/tbbr_img_def.h> 1100c7d5acSUsama Arif #include <lib/utils_def.h> 1200c7d5acSUsama Arif #include <lib/xlat_tables/xlat_tables_defs.h> 1300c7d5acSUsama Arif #include <plat/arm/board/common/v2m_def.h> 1453adebadSManish V Badarkhe #include <plat/arm/common/smccc_def.h> 1500c7d5acSUsama Arif #include <plat/common/common_def.h> 1600c7d5acSUsama Arif 1700c7d5acSUsama Arif /* Memory location options for TSP */ 1800c7d5acSUsama Arif #define ARM_DRAM_ID 2 1900c7d5acSUsama Arif 2000c7d5acSUsama Arif #define ARM_DRAM1_BASE UL(0x80000000) 2100c7d5acSUsama Arif #define ARM_DRAM1_SIZE UL(0x80000000) 2200c7d5acSUsama Arif #define ARM_DRAM1_END (ARM_DRAM1_BASE + \ 2300c7d5acSUsama Arif ARM_DRAM1_SIZE - 1) 2400c7d5acSUsama Arif 2500c7d5acSUsama Arif #define SRAM_BASE 0x2000000 2600c7d5acSUsama Arif #define SRAM_SIZE 0x200000 2700c7d5acSUsama Arif 2800c7d5acSUsama Arif /* The first 4KB of NS DRAM1 are used as shared memory */ 2900c7d5acSUsama Arif #define A5DS_SHARED_RAM_BASE SRAM_BASE 3000c7d5acSUsama Arif #define A5DS_SHARED_RAM_SIZE UL(0x00001000) /* 4 KB */ 3100c7d5acSUsama Arif 3200c7d5acSUsama Arif /* The next 252 kB of NS DRAM is used to load the BL images */ 3300c7d5acSUsama Arif #define ARM_BL_RAM_BASE (A5DS_SHARED_RAM_BASE + \ 3400c7d5acSUsama Arif A5DS_SHARED_RAM_SIZE) 3500c7d5acSUsama Arif #define ARM_BL_RAM_SIZE (PLAT_ARM_BL_PLUS_SHARED_RAM_SIZE - \ 3600c7d5acSUsama Arif A5DS_SHARED_RAM_SIZE) 3700c7d5acSUsama Arif 3800c7d5acSUsama Arif #define PERIPHBASE 0x1a000000 3900c7d5acSUsama Arif #define PERIPH_SIZE 0x00240000 4000c7d5acSUsama Arif #define A5_PERIPHERALS_BASE 0x1c000000 4100c7d5acSUsama Arif #define A5_PERIPHERALS_SIZE 0x10000 4200c7d5acSUsama Arif 43786890caSAvinash Mehta #define ARM_CACHE_WRITEBACK_SHIFT 5 4400c7d5acSUsama Arif 4500c7d5acSUsama Arif #define ARM_IRQ_SEC_PHY_TIMER 29 4600c7d5acSUsama Arif 4700c7d5acSUsama Arif #define ARM_IRQ_SEC_SGI_0 8 4800c7d5acSUsama Arif #define ARM_IRQ_SEC_SGI_1 9 4900c7d5acSUsama Arif #define ARM_IRQ_SEC_SGI_2 10 5000c7d5acSUsama Arif #define ARM_IRQ_SEC_SGI_3 11 5100c7d5acSUsama Arif #define ARM_IRQ_SEC_SGI_4 12 5200c7d5acSUsama Arif #define ARM_IRQ_SEC_SGI_5 13 5300c7d5acSUsama Arif #define ARM_IRQ_SEC_SGI_6 14 5400c7d5acSUsama Arif #define ARM_IRQ_SEC_SGI_7 15 5500c7d5acSUsama Arif 5600c7d5acSUsama Arif /* 5700c7d5acSUsama Arif * Define a list of Group 1 Secure and Group 0 interrupt properties as per GICv3 5800c7d5acSUsama Arif * terminology. On a GICv2 system or mode, the lists will be merged and treated 5900c7d5acSUsama Arif * as Group 0 interrupts. 6000c7d5acSUsama Arif */ 6100c7d5acSUsama Arif #define ARM_G1S_IRQ_PROPS(grp) \ 6200c7d5acSUsama Arif INTR_PROP_DESC(ARM_IRQ_SEC_PHY_TIMER, GIC_HIGHEST_SEC_PRIORITY, (grp), \ 6300c7d5acSUsama Arif GIC_INTR_CFG_LEVEL), \ 6400c7d5acSUsama Arif INTR_PROP_DESC(ARM_IRQ_SEC_SGI_1, GIC_HIGHEST_SEC_PRIORITY, (grp), \ 6500c7d5acSUsama Arif GIC_INTR_CFG_EDGE), \ 6600c7d5acSUsama Arif INTR_PROP_DESC(ARM_IRQ_SEC_SGI_2, GIC_HIGHEST_SEC_PRIORITY, (grp), \ 6700c7d5acSUsama Arif GIC_INTR_CFG_EDGE), \ 6800c7d5acSUsama Arif INTR_PROP_DESC(ARM_IRQ_SEC_SGI_3, GIC_HIGHEST_SEC_PRIORITY, (grp), \ 6900c7d5acSUsama Arif GIC_INTR_CFG_EDGE), \ 7000c7d5acSUsama Arif INTR_PROP_DESC(ARM_IRQ_SEC_SGI_4, GIC_HIGHEST_SEC_PRIORITY, (grp), \ 7100c7d5acSUsama Arif GIC_INTR_CFG_EDGE), \ 7200c7d5acSUsama Arif INTR_PROP_DESC(ARM_IRQ_SEC_SGI_5, GIC_HIGHEST_SEC_PRIORITY, (grp), \ 7300c7d5acSUsama Arif GIC_INTR_CFG_EDGE), \ 7400c7d5acSUsama Arif INTR_PROP_DESC(ARM_IRQ_SEC_SGI_7, GIC_HIGHEST_SEC_PRIORITY, (grp), \ 7500c7d5acSUsama Arif GIC_INTR_CFG_EDGE) 7600c7d5acSUsama Arif 7700c7d5acSUsama Arif #define ARM_G0_IRQ_PROPS(grp) \ 7800c7d5acSUsama Arif INTR_PROP_DESC(ARM_IRQ_SEC_SGI_6, GIC_HIGHEST_SEC_PRIORITY, (grp), \ 7900c7d5acSUsama Arif GIC_INTR_CFG_EDGE) 8000c7d5acSUsama Arif 8100c7d5acSUsama Arif #define A5DS_IRQ_TZ_WDOG 56 8200c7d5acSUsama Arif #define A5DS_IRQ_SEC_SYS_TIMER 57 8300c7d5acSUsama Arif 8400c7d5acSUsama Arif /* Default cluster count for A5DS */ 855b33ad17SDeepika Bhavnani #define A5DS_CLUSTER_COUNT U(1) 8600c7d5acSUsama Arif 8700c7d5acSUsama Arif /* Default number of CPUs per cluster on A5DS */ 885b33ad17SDeepika Bhavnani #define A5DS_MAX_CPUS_PER_CLUSTER U(4) 8900c7d5acSUsama Arif 9000c7d5acSUsama Arif /* Default number of threads per CPU on A5DS */ 915b33ad17SDeepika Bhavnani #define A5DS_MAX_PE_PER_CPU U(1) 9200c7d5acSUsama Arif 935b33ad17SDeepika Bhavnani #define A5DS_CORE_COUNT U(4) 9400c7d5acSUsama Arif 9500c7d5acSUsama Arif #define A5DS_PRIMARY_CPU 0x0 9600c7d5acSUsama Arif 97e343bf13SAvinash Mehta #define BOOT_BASE ARM_DRAM1_BASE 98e343bf13SAvinash Mehta #define BOOT_SIZE UL(0x2800000) 9900c7d5acSUsama Arif 100e343bf13SAvinash Mehta #define ARM_NS_DRAM1_BASE (ARM_DRAM1_BASE + BOOT_SIZE) 101e343bf13SAvinash Mehta /* 102e343bf13SAvinash Mehta * The last 2MB is meant to be NOLOAD and will not be zero 103e343bf13SAvinash Mehta * initialized. 104e343bf13SAvinash Mehta */ 105e343bf13SAvinash Mehta #define ARM_NS_DRAM1_SIZE (ARM_DRAM1_SIZE - \ 106e343bf13SAvinash Mehta BOOT_SIZE - \ 107e343bf13SAvinash Mehta 0x00200000) 108e343bf13SAvinash Mehta 109e343bf13SAvinash Mehta #define MAP_BOOT_RW MAP_REGION_FLAT( \ 110e343bf13SAvinash Mehta BOOT_BASE, \ 111e343bf13SAvinash Mehta BOOT_SIZE, \ 11200c7d5acSUsama Arif MT_DEVICE | MT_RW | MT_SECURE) 11300c7d5acSUsama Arif 11400c7d5acSUsama Arif #define ARM_MAP_SHARED_RAM MAP_REGION_FLAT( \ 11500c7d5acSUsama Arif A5DS_SHARED_RAM_BASE, \ 11600c7d5acSUsama Arif A5DS_SHARED_RAM_SIZE, \ 11700c7d5acSUsama Arif MT_MEMORY | MT_RW | MT_SECURE) 11800c7d5acSUsama Arif 11900c7d5acSUsama Arif #define ARM_MAP_NS_DRAM1 MAP_REGION_FLAT( \ 12000c7d5acSUsama Arif ARM_NS_DRAM1_BASE, \ 12100c7d5acSUsama Arif ARM_NS_DRAM1_SIZE, \ 12200c7d5acSUsama Arif MT_MEMORY | MT_RW | MT_NS) 12300c7d5acSUsama Arif 12400c7d5acSUsama Arif #define ARM_MAP_SRAM MAP_REGION_FLAT( \ 12500c7d5acSUsama Arif SRAM_BASE, \ 12600c7d5acSUsama Arif SRAM_SIZE, \ 12700c7d5acSUsama Arif MT_MEMORY | MT_RW | MT_NS) 12800c7d5acSUsama Arif 12900c7d5acSUsama Arif /* 13000c7d5acSUsama Arif * Mapping for the BL1 RW region. This mapping is needed by BL2 in order to 13100c7d5acSUsama Arif * share the Mbed TLS heap. Since the heap is allocated inside BL1, it resides 13200c7d5acSUsama Arif * in the BL1 RW region. Hence, BL2 needs access to the BL1 RW region in order 13300c7d5acSUsama Arif * to be able to access the heap. 13400c7d5acSUsama Arif */ 13500c7d5acSUsama Arif 13600c7d5acSUsama Arif #define ARM_MAP_BL_RO MAP_REGION_FLAT(\ 13700c7d5acSUsama Arif BL_CODE_BASE,\ 13800c7d5acSUsama Arif BL_CODE_END - BL_CODE_BASE,\ 13900c7d5acSUsama Arif MT_CODE | MT_SECURE),\ 14000c7d5acSUsama Arif MAP_REGION_FLAT(\ 14100c7d5acSUsama Arif BL_RO_DATA_BASE,\ 14200c7d5acSUsama Arif BL_RO_DATA_END\ 14300c7d5acSUsama Arif - BL_RO_DATA_BASE, \ 14400c7d5acSUsama Arif MT_RO_DATA | MT_SECURE) 14500c7d5acSUsama Arif 14600c7d5acSUsama Arif #if USE_COHERENT_MEM 14700c7d5acSUsama Arif #define ARM_MAP_BL_COHERENT_RAM MAP_REGION_FLAT(\ 14800c7d5acSUsama Arif BL_COHERENT_RAM_BASE,\ 14900c7d5acSUsama Arif BL_COHERENT_RAM_END \ 15000c7d5acSUsama Arif - BL_COHERENT_RAM_BASE, \ 15100c7d5acSUsama Arif MT_DEVICE | MT_RW | MT_SECURE) 15200c7d5acSUsama Arif #endif 15300c7d5acSUsama Arif 15400c7d5acSUsama Arif /* 155a07c101aSManish V Badarkhe * Map the region for device tree configuration with read and write permissions 156a07c101aSManish V Badarkhe */ 157a07c101aSManish V Badarkhe #define ARM_MAP_BL_CONFIG_REGION MAP_REGION_FLAT(ARM_BL_RAM_BASE, \ 158a07c101aSManish V Badarkhe (ARM_FW_CONFIGS_LIMIT \ 159a07c101aSManish V Badarkhe - ARM_BL_RAM_BASE), \ 160a07c101aSManish V Badarkhe MT_MEMORY | MT_RW | MT_SECURE) 161a07c101aSManish V Badarkhe 162a07c101aSManish V Badarkhe /* 16300c7d5acSUsama Arif * The max number of regions like RO(code), coherent and data required by 16400c7d5acSUsama Arif * different BL stages which need to be mapped in the MMU. 16500c7d5acSUsama Arif */ 166a07c101aSManish V Badarkhe #define ARM_BL_REGIONS 6 16700c7d5acSUsama Arif 16800c7d5acSUsama Arif #define MAX_MMAP_REGIONS (PLAT_ARM_MMAP_ENTRIES + \ 16900c7d5acSUsama Arif ARM_BL_REGIONS) 17000c7d5acSUsama Arif 17100c7d5acSUsama Arif /* Memory mapped Generic timer interfaces */ 172786890caSAvinash Mehta #define A5DS_TIMER_BASE_FREQUENCY UL(7500000) 17300c7d5acSUsama Arif 17400c7d5acSUsama Arif #define ARM_CONSOLE_BAUDRATE 115200 17500c7d5acSUsama Arif 17600c7d5acSUsama Arif #define PLAT_PHY_ADDR_SPACE_SIZE (1ULL << 32) 17700c7d5acSUsama Arif #define PLAT_VIRT_ADDR_SPACE_SIZE (1ULL << 32) 17800c7d5acSUsama Arif 17900c7d5acSUsama Arif /* 18000c7d5acSUsama Arif * This macro defines the deepest retention state possible. A higher state 18100c7d5acSUsama Arif * id will represent an invalid or a power down state. 18200c7d5acSUsama Arif */ 18300c7d5acSUsama Arif #define PLAT_MAX_RET_STATE 1 18400c7d5acSUsama Arif 18500c7d5acSUsama Arif /* 18600c7d5acSUsama Arif * This macro defines the deepest power down states possible. Any state ID 18700c7d5acSUsama Arif * higher than this is invalid. 18800c7d5acSUsama Arif */ 18900c7d5acSUsama Arif #define PLAT_MAX_OFF_STATE 2 19000c7d5acSUsama Arif 19100c7d5acSUsama Arif /* 19200c7d5acSUsama Arif * Some data must be aligned on the biggest cache line size in the platform. 19300c7d5acSUsama Arif * This is known only to the platform as it might have a combination of 19400c7d5acSUsama Arif * integrated and external caches. 19500c7d5acSUsama Arif */ 19600c7d5acSUsama Arif #define CACHE_WRITEBACK_GRANULE (U(1) << ARM_CACHE_WRITEBACK_SHIFT) 19700c7d5acSUsama Arif 19800c7d5acSUsama Arif /* 19904e06973SManish V Badarkhe * To enable FW_CONFIG to be loaded by BL1, define the corresponding base 20000c7d5acSUsama Arif * and limit. Leave enough space of BL2 meminfo. 20100c7d5acSUsama Arif */ 20204e06973SManish V Badarkhe #define ARM_FW_CONFIG_BASE (ARM_BL_RAM_BASE + sizeof(meminfo_t)) 20304e06973SManish V Badarkhe #define ARM_FW_CONFIG_LIMIT (ARM_BL_RAM_BASE + PAGE_SIZE) 20400c7d5acSUsama Arif 205a07c101aSManish V Badarkhe /* 206a07c101aSManish V Badarkhe * Define limit of firmware configuration memory: 207a07c101aSManish V Badarkhe * ARM_FW_CONFIG + ARM_BL2_MEM_DESC memory 208a07c101aSManish V Badarkhe */ 209a07c101aSManish V Badarkhe #define ARM_FW_CONFIGS_LIMIT (ARM_BL_RAM_BASE + (PAGE_SIZE * 2)) 210a07c101aSManish V Badarkhe 211*df960bccSHarrison Mutai /* Define memory configuration for device tree files. */ 212*df960bccSHarrison Mutai #define PLAT_ARM_HW_CONFIG_SIZE U(0x01000000) 213*df960bccSHarrison Mutai 21400c7d5acSUsama Arif /******************************************************************************* 21500c7d5acSUsama Arif * BL1 specific defines. 21600c7d5acSUsama Arif * BL1 RW data is relocated from ROM to RAM at runtime so we need 2 sets of 21700c7d5acSUsama Arif * addresses. 21800c7d5acSUsama Arif ******************************************************************************/ 21900c7d5acSUsama Arif #define BL1_RO_BASE 0x00000000 22000c7d5acSUsama Arif #define BL1_RO_LIMIT PLAT_ARM_TRUSTED_ROM_SIZE 22100c7d5acSUsama Arif /* 22200c7d5acSUsama Arif * Put BL1 RW at the top of the memory allocated for BL images in NS DRAM. 22300c7d5acSUsama Arif */ 22400c7d5acSUsama Arif #define BL1_RW_BASE (ARM_BL_RAM_BASE + \ 22500c7d5acSUsama Arif ARM_BL_RAM_SIZE - \ 22600c7d5acSUsama Arif (PLAT_ARM_MAX_BL1_RW_SIZE)) 22700c7d5acSUsama Arif #define BL1_RW_LIMIT (ARM_BL_RAM_BASE + \ 22800c7d5acSUsama Arif (ARM_BL_RAM_SIZE)) 22900c7d5acSUsama Arif /******************************************************************************* 23000c7d5acSUsama Arif * BL2 specific defines. 23100c7d5acSUsama Arif ******************************************************************************/ 23200c7d5acSUsama Arif 23300c7d5acSUsama Arif /* 23400c7d5acSUsama Arif * Put BL2 just below BL1. 23500c7d5acSUsama Arif */ 23600c7d5acSUsama Arif #define BL2_BASE (BL1_RW_BASE - A5DS_MAX_BL2_SIZE) 23700c7d5acSUsama Arif #define BL2_LIMIT BL1_RW_BASE 23800c7d5acSUsama Arif 23900c7d5acSUsama Arif /* Put BL32 below BL2 in NS DRAM.*/ 24004e06973SManish V Badarkhe #define ARM_BL2_MEM_DESC_BASE ARM_FW_CONFIG_LIMIT 241a07c101aSManish V Badarkhe #define ARM_BL2_MEM_DESC_LIMIT (ARM_BL2_MEM_DESC_BASE \ 242a07c101aSManish V Badarkhe + (PAGE_SIZE / 2U)) 24300c7d5acSUsama Arif 24400c7d5acSUsama Arif #define BL32_BASE ((ARM_BL_RAM_BASE + ARM_BL_RAM_SIZE)\ 24500c7d5acSUsama Arif - PLAT_ARM_MAX_BL32_SIZE) 24600c7d5acSUsama Arif #define BL32_PROGBITS_LIMIT BL2_BASE 24700c7d5acSUsama Arif #define BL32_LIMIT (ARM_BL_RAM_BASE + ARM_BL_RAM_SIZE) 24800c7d5acSUsama Arif 24900c7d5acSUsama Arif /* Required platform porting definitions */ 250ec885bacSUsama Arif #define PLATFORM_CORE_COUNT A5DS_CORE_COUNT 25100c7d5acSUsama Arif #define PLAT_NUM_PWR_DOMAINS (A5DS_CLUSTER_COUNT + \ 2525b33ad17SDeepika Bhavnani PLATFORM_CORE_COUNT) + U(1) 25300c7d5acSUsama Arif 25400c7d5acSUsama Arif #define PLAT_MAX_PWR_LVL 2 25500c7d5acSUsama Arif 25600c7d5acSUsama Arif /* 25700c7d5acSUsama Arif * Other platform porting definitions are provided by included headers 25800c7d5acSUsama Arif */ 25900c7d5acSUsama Arif 26000c7d5acSUsama Arif /* 26100c7d5acSUsama Arif * Required ARM standard platform porting definitions 26200c7d5acSUsama Arif */ 26300c7d5acSUsama Arif 26400c7d5acSUsama Arif #define PLAT_ARM_BL_PLUS_SHARED_RAM_SIZE 0x00040000 /* 256 KB */ 26500c7d5acSUsama Arif 26600c7d5acSUsama Arif #define PLAT_ARM_TRUSTED_ROM_BASE 0x00000000 26700c7d5acSUsama Arif #define PLAT_ARM_TRUSTED_ROM_SIZE 0x10000 /* 64KB */ 26800c7d5acSUsama Arif 26900c7d5acSUsama Arif #define PLAT_ARM_DRAM2_SIZE ULL(0x80000000) 27000c7d5acSUsama Arif 27100c7d5acSUsama Arif /* 27200c7d5acSUsama Arif * Load address of BL33 for this platform port 27300c7d5acSUsama Arif */ 27400c7d5acSUsama Arif #define PLAT_ARM_NS_IMAGE_BASE (ARM_DRAM1_BASE + U(0x8000000)) 27500c7d5acSUsama Arif 27600c7d5acSUsama Arif /* 27700c7d5acSUsama Arif * PLAT_ARM_MMAP_ENTRIES depends on the number of entries in the 27800c7d5acSUsama Arif * plat_arm_mmap array defined for each BL stage. 27900c7d5acSUsama Arif */ 28000c7d5acSUsama Arif #if defined(IMAGE_BL32) 28100c7d5acSUsama Arif # define PLAT_ARM_MMAP_ENTRIES 8 28200c7d5acSUsama Arif # define MAX_XLAT_TABLES 6 28300c7d5acSUsama Arif #else 28400c7d5acSUsama Arif # define PLAT_ARM_MMAP_ENTRIES 12 28500c7d5acSUsama Arif # define MAX_XLAT_TABLES 6 28600c7d5acSUsama Arif #endif 28700c7d5acSUsama Arif 28800c7d5acSUsama Arif /* 28900c7d5acSUsama Arif * PLAT_ARM_MAX_BL1_RW_SIZE is calculated using the current BL1 RW debug size 29000c7d5acSUsama Arif * plus a little space for growth. 29100c7d5acSUsama Arif */ 29200c7d5acSUsama Arif #define PLAT_ARM_MAX_BL1_RW_SIZE 0xB000 29300c7d5acSUsama Arif 29400c7d5acSUsama Arif /* 29500c7d5acSUsama Arif * A5DS_MAX_BL2_SIZE is calculated using the current BL2 debug size plus a 29600c7d5acSUsama Arif * little space for growth. 29700c7d5acSUsama Arif */ 29800c7d5acSUsama Arif #define A5DS_MAX_BL2_SIZE 0x11000 29900c7d5acSUsama Arif 30000c7d5acSUsama Arif /* 30100c7d5acSUsama Arif * Since BL32 NOBITS overlays BL2 and BL1-RW, PLAT_ARM_MAX_BL32_SIZE is 30200c7d5acSUsama Arif * calculated using the current SP_MIN PROGBITS debug size plus the sizes of 30300c7d5acSUsama Arif * BL2 and BL1-RW 30400c7d5acSUsama Arif */ 30500c7d5acSUsama Arif #define PLAT_ARM_MAX_BL32_SIZE 0x3B000 30600c7d5acSUsama Arif /* 30700c7d5acSUsama Arif * Size of cacheable stacks 30800c7d5acSUsama Arif */ 30900c7d5acSUsama Arif #if defined(IMAGE_BL1) 31000c7d5acSUsama Arif # define PLATFORM_STACK_SIZE 0x440 31100c7d5acSUsama Arif #elif defined(IMAGE_BL2) 31200c7d5acSUsama Arif # define PLATFORM_STACK_SIZE 0x400 31300c7d5acSUsama Arif #elif defined(IMAGE_BL32) 31400c7d5acSUsama Arif # define PLATFORM_STACK_SIZE 0x440 31500c7d5acSUsama Arif #endif 31600c7d5acSUsama Arif 31700c7d5acSUsama Arif #define MAX_IO_DEVICES 3 31800c7d5acSUsama Arif #define MAX_IO_HANDLES 4 31900c7d5acSUsama Arif 32000c7d5acSUsama Arif /* Reserve the last block of flash for PSCI MEM PROTECT flag */ 32149e9ac28SManish V Badarkhe #define PLAT_ARM_FLASH_IMAGE_BASE BOOT_BASE 32249e9ac28SManish V Badarkhe #define PLAT_ARM_FLASH_IMAGE_MAX_SIZE (BOOT_SIZE - V2M_FLASH_BLOCK_SIZE) 32300c7d5acSUsama Arif 324e343bf13SAvinash Mehta #define PLAT_ARM_NVM_BASE BOOT_BASE 325e343bf13SAvinash Mehta #define PLAT_ARM_NVM_SIZE (BOOT_SIZE - V2M_FLASH_BLOCK_SIZE) 32600c7d5acSUsama Arif 32700c7d5acSUsama Arif /* 32800c7d5acSUsama Arif * PL011 related constants 32900c7d5acSUsama Arif */ 33000c7d5acSUsama Arif #define PLAT_ARM_BOOT_UART_BASE 0x1A200000 331786890caSAvinash Mehta #define PLAT_ARM_BOOT_UART_CLK_IN_HZ UL(7500000) 33200c7d5acSUsama Arif 33300c7d5acSUsama Arif #define PLAT_ARM_RUN_UART_BASE 0x1A210000 334786890caSAvinash Mehta #define PLAT_ARM_RUN_UART_CLK_IN_HZ UL(7500000) 33500c7d5acSUsama Arif 33600c7d5acSUsama Arif #define PLAT_ARM_CRASH_UART_BASE PLAT_ARM_RUN_UART_BASE 33700c7d5acSUsama Arif #define PLAT_ARM_CRASH_UART_CLK_IN_HZ PLAT_ARM_RUN_UART_CLK_IN_HZ 33800c7d5acSUsama Arif 339786890caSAvinash Mehta #define A5DS_TIMER_BASE_FREQUENCY UL(7500000) 34000c7d5acSUsama Arif 34100c7d5acSUsama Arif /* System timer related constants */ 34200c7d5acSUsama Arif #define PLAT_ARM_NSTIMER_FRAME_ID 1 34300c7d5acSUsama Arif 34400c7d5acSUsama Arif /* Mailbox base address */ 34500c7d5acSUsama Arif #define A5DS_TRUSTED_MAILBOX_BASE A5DS_SHARED_RAM_BASE 346e231f3a5SUsama Arif #define A5DS_TRUSTED_MAILBOX_SIZE (8 + A5DS_HOLD_SIZE) 347e231f3a5SUsama Arif #define A5DS_HOLD_BASE (A5DS_TRUSTED_MAILBOX_BASE + 8) 348e231f3a5SUsama Arif #define A5DS_HOLD_SIZE (PLATFORM_CORE_COUNT * \ 349e231f3a5SUsama Arif A5DS_HOLD_ENTRY_SIZE) 350e231f3a5SUsama Arif #define A5DS_HOLD_ENTRY_SHIFT 3 351e231f3a5SUsama Arif #define A5DS_HOLD_ENTRY_SIZE (1 << A5DS_HOLD_ENTRY_SHIFT) 352e231f3a5SUsama Arif #define A5DS_HOLD_STATE_WAIT 0 353e231f3a5SUsama Arif #define A5DS_HOLD_STATE_GO 1 35400c7d5acSUsama Arif 355c20c0525SVishnu Banavath /* Snoop Control Unit base address */ 356c20c0525SVishnu Banavath #define A5DS_SCU_BASE 0x1C000000 357c20c0525SVishnu Banavath 35800c7d5acSUsama Arif /* 35900c7d5acSUsama Arif * GIC related constants to cater for GICv2 36000c7d5acSUsama Arif */ 36100c7d5acSUsama Arif #define PLAT_ARM_GICD_BASE 0x1C001000 36200c7d5acSUsama Arif #define PLAT_ARM_GICC_BASE 0x1C000100 36300c7d5acSUsama Arif 36400c7d5acSUsama Arif /* 36500c7d5acSUsama Arif * Define a list of Group 1 Secure and Group 0 interrupts as per GICv3 36600c7d5acSUsama Arif * terminology. On a GICv2 system or mode, the lists will be merged and treated 36700c7d5acSUsama Arif * as Group 0 interrupts. 36800c7d5acSUsama Arif */ 36900c7d5acSUsama Arif #define PLAT_ARM_G1S_IRQ_PROPS(grp) \ 37000c7d5acSUsama Arif ARM_G1S_IRQ_PROPS(grp), \ 37100c7d5acSUsama Arif INTR_PROP_DESC(A5DS_IRQ_TZ_WDOG, GIC_HIGHEST_SEC_PRIORITY, (grp), \ 37200c7d5acSUsama Arif GIC_INTR_CFG_LEVEL), \ 37300c7d5acSUsama Arif INTR_PROP_DESC(A5DS_IRQ_SEC_SYS_TIMER,\ 37400c7d5acSUsama Arif GIC_HIGHEST_SEC_PRIORITY, (grp), \ 37500c7d5acSUsama Arif GIC_INTR_CFG_LEVEL) 37600c7d5acSUsama Arif 37700c7d5acSUsama Arif #define PLAT_ARM_G0_IRQ_PROPS(grp) ARM_G0_IRQ_PROPS(grp) 37800c7d5acSUsama Arif 37900c7d5acSUsama Arif #endif /* PLATFORM_DEF_H */ 380