1*91f16700Schasinglulu /* 2*91f16700Schasinglulu * Copyright (C) 2018 Marvell International Ltd. 3*91f16700Schasinglulu * 4*91f16700Schasinglulu * SPDX-License-Identifier: BSD-3-Clause 5*91f16700Schasinglulu * https://spdx.org/licenses 6*91f16700Schasinglulu */ 7*91f16700Schasinglulu 8*91f16700Schasinglulu #ifndef MARVELL_DEF_H 9*91f16700Schasinglulu #define MARVELL_DEF_H 10*91f16700Schasinglulu 11*91f16700Schasinglulu #include <platform_def.h> 12*91f16700Schasinglulu 13*91f16700Schasinglulu #include <arch.h> 14*91f16700Schasinglulu #include <common/tbbr/tbbr_img_def.h> 15*91f16700Schasinglulu #include <lib/xlat_tables/xlat_tables_v2.h> 16*91f16700Schasinglulu #include <plat/common/common_def.h> 17*91f16700Schasinglulu 18*91f16700Schasinglulu /**************************************************************************** 19*91f16700Schasinglulu * Definitions common to all MARVELL standard platforms 20*91f16700Schasinglulu **************************************************************************** 21*91f16700Schasinglulu */ 22*91f16700Schasinglulu /* Special value used to verify platform parameters from BL2 to BL31 */ 23*91f16700Schasinglulu #define MARVELL_BL31_PLAT_PARAM_VAL 0x0f1e2d3c4b5a6978ULL 24*91f16700Schasinglulu 25*91f16700Schasinglulu #define PLAT_MARVELL_NORTHB_COUNT 1 26*91f16700Schasinglulu 27*91f16700Schasinglulu #define PLAT_MARVELL_CLUSTER_COUNT 1 28*91f16700Schasinglulu 29*91f16700Schasinglulu #define MARVELL_CACHE_WRITEBACK_SHIFT 6 30*91f16700Schasinglulu 31*91f16700Schasinglulu /* 32*91f16700Schasinglulu * Macros mapping the MPIDR Affinity levels to MARVELL Platform Power levels. 33*91f16700Schasinglulu * The power levels have a 1:1 mapping with the MPIDR affinity levels. 34*91f16700Schasinglulu */ 35*91f16700Schasinglulu #define MARVELL_PWR_LVL0 MPIDR_AFFLVL0 36*91f16700Schasinglulu #define MARVELL_PWR_LVL1 MPIDR_AFFLVL1 37*91f16700Schasinglulu #define MARVELL_PWR_LVL2 MPIDR_AFFLVL2 38*91f16700Schasinglulu 39*91f16700Schasinglulu /* 40*91f16700Schasinglulu * Macros for local power states in Marvell platforms encoded by State-ID field 41*91f16700Schasinglulu * within the power-state parameter. 42*91f16700Schasinglulu */ 43*91f16700Schasinglulu /* Local power state for power domains in Run state. */ 44*91f16700Schasinglulu #define MARVELL_LOCAL_STATE_RUN 0 45*91f16700Schasinglulu /* Local power state for retention. Valid only for CPU power domains */ 46*91f16700Schasinglulu #define MARVELL_LOCAL_STATE_RET 1 47*91f16700Schasinglulu /* Local power state for OFF/power-down. 48*91f16700Schasinglulu * Valid for CPU and cluster power domains 49*91f16700Schasinglulu */ 50*91f16700Schasinglulu #define MARVELL_LOCAL_STATE_OFF 2 51*91f16700Schasinglulu 52*91f16700Schasinglulu /* This leaves a gap between end of DRAM and start of ROM block */ 53*91f16700Schasinglulu #define MARVELL_TRUSTED_DRAM_SIZE 0x80000 /* 512 KB */ 54*91f16700Schasinglulu 55*91f16700Schasinglulu /* The first 4KB of Trusted SRAM are used as shared memory */ 56*91f16700Schasinglulu #define MARVELL_SHARED_RAM_BASE PLAT_MARVELL_ATF_BASE 57*91f16700Schasinglulu #define MARVELL_SHARED_RAM_SIZE 0x00001000 /* 4 KB */ 58*91f16700Schasinglulu 59*91f16700Schasinglulu /* The remaining Trusted SRAM is used to load the BL images */ 60*91f16700Schasinglulu #define MARVELL_BL_RAM_BASE (MARVELL_SHARED_RAM_BASE + \ 61*91f16700Schasinglulu MARVELL_SHARED_RAM_SIZE) 62*91f16700Schasinglulu #define MARVELL_BL_RAM_SIZE (MARVELL_TRUSTED_DRAM_SIZE - \ 63*91f16700Schasinglulu MARVELL_SHARED_RAM_SIZE) 64*91f16700Schasinglulu 65*91f16700Schasinglulu #define MARVELL_DRAM_BASE ULL(0x0) 66*91f16700Schasinglulu #define MARVELL_DRAM_SIZE ULL(0x20000000) 67*91f16700Schasinglulu #define MARVELL_DRAM_END (MARVELL_DRAM_BASE + \ 68*91f16700Schasinglulu MARVELL_DRAM_SIZE - 1) 69*91f16700Schasinglulu 70*91f16700Schasinglulu #define MARVELL_IRQ_SEC_PHY_TIMER 29 71*91f16700Schasinglulu 72*91f16700Schasinglulu #define MARVELL_IRQ_SEC_SGI_0 8 73*91f16700Schasinglulu #define MARVELL_IRQ_SEC_SGI_1 9 74*91f16700Schasinglulu #define MARVELL_IRQ_SEC_SGI_2 10 75*91f16700Schasinglulu #define MARVELL_IRQ_SEC_SGI_3 11 76*91f16700Schasinglulu #define MARVELL_IRQ_SEC_SGI_4 12 77*91f16700Schasinglulu #define MARVELL_IRQ_SEC_SGI_5 13 78*91f16700Schasinglulu #define MARVELL_IRQ_SEC_SGI_6 14 79*91f16700Schasinglulu #define MARVELL_IRQ_SEC_SGI_7 15 80*91f16700Schasinglulu 81*91f16700Schasinglulu #define MARVELL_MAP_SHARED_RAM MAP_REGION_FLAT( \ 82*91f16700Schasinglulu MARVELL_SHARED_RAM_BASE, \ 83*91f16700Schasinglulu MARVELL_SHARED_RAM_SIZE, \ 84*91f16700Schasinglulu MT_MEMORY | MT_RW | MT_SECURE) 85*91f16700Schasinglulu 86*91f16700Schasinglulu #define MARVELL_MAP_DRAM MAP_REGION_FLAT( \ 87*91f16700Schasinglulu MARVELL_DRAM_BASE, \ 88*91f16700Schasinglulu MARVELL_DRAM_SIZE, \ 89*91f16700Schasinglulu MT_MEMORY | MT_RW | MT_NS) 90*91f16700Schasinglulu 91*91f16700Schasinglulu /* 92*91f16700Schasinglulu * The number of regions like RO(code), coherent and data required by 93*91f16700Schasinglulu * different BL stages which need to be mapped in the MMU. 94*91f16700Schasinglulu */ 95*91f16700Schasinglulu #if USE_COHERENT_MEM 96*91f16700Schasinglulu #define MARVELL_BL_REGIONS 3 97*91f16700Schasinglulu #else 98*91f16700Schasinglulu #define MARVELL_BL_REGIONS 2 99*91f16700Schasinglulu #endif 100*91f16700Schasinglulu 101*91f16700Schasinglulu #define MAX_MMAP_REGIONS (PLAT_MARVELL_MMAP_ENTRIES + \ 102*91f16700Schasinglulu MARVELL_BL_REGIONS) 103*91f16700Schasinglulu 104*91f16700Schasinglulu #define MARVELL_CONSOLE_BAUDRATE 115200 105*91f16700Schasinglulu 106*91f16700Schasinglulu /**************************************************************************** 107*91f16700Schasinglulu * Required platform porting definitions common to all MARVELL std. platforms 108*91f16700Schasinglulu **************************************************************************** 109*91f16700Schasinglulu */ 110*91f16700Schasinglulu #define PLAT_PHY_ADDR_SPACE_SIZE (1ULL << 32) 111*91f16700Schasinglulu #define PLAT_VIRT_ADDR_SPACE_SIZE (1ULL << 32) 112*91f16700Schasinglulu 113*91f16700Schasinglulu /* 114*91f16700Schasinglulu * This macro defines the deepest retention state possible. A higher state 115*91f16700Schasinglulu * id will represent an invalid or a power down state. 116*91f16700Schasinglulu */ 117*91f16700Schasinglulu #define PLAT_MAX_RET_STATE MARVELL_LOCAL_STATE_RET 118*91f16700Schasinglulu 119*91f16700Schasinglulu /* 120*91f16700Schasinglulu * This macro defines the deepest power down states possible. Any state ID 121*91f16700Schasinglulu * higher than this is invalid. 122*91f16700Schasinglulu */ 123*91f16700Schasinglulu #define PLAT_MAX_OFF_STATE MARVELL_LOCAL_STATE_OFF 124*91f16700Schasinglulu 125*91f16700Schasinglulu 126*91f16700Schasinglulu #define PLATFORM_CORE_COUNT PLAT_MARVELL_CLUSTER_CORE_COUNT 127*91f16700Schasinglulu 128*91f16700Schasinglulu /* 129*91f16700Schasinglulu * Some data must be aligned on the biggest cache line size in the platform. 130*91f16700Schasinglulu * This is known only to the platform as it might have a combination of 131*91f16700Schasinglulu * integrated and external caches. 132*91f16700Schasinglulu */ 133*91f16700Schasinglulu #define CACHE_WRITEBACK_GRANULE (1 << MARVELL_CACHE_WRITEBACK_SHIFT) 134*91f16700Schasinglulu 135*91f16700Schasinglulu 136*91f16700Schasinglulu /***************************************************************************** 137*91f16700Schasinglulu * BL1 specific defines. 138*91f16700Schasinglulu * BL1 RW data is relocated from ROM to RAM at runtime so we need 2 sets of 139*91f16700Schasinglulu * addresses. 140*91f16700Schasinglulu ***************************************************************************** 141*91f16700Schasinglulu */ 142*91f16700Schasinglulu #define BL1_RO_BASE PLAT_MARVELL_TRUSTED_ROM_BASE 143*91f16700Schasinglulu #define BL1_RO_LIMIT (PLAT_MARVELL_TRUSTED_ROM_BASE \ 144*91f16700Schasinglulu + PLAT_MARVELL_TRUSTED_ROM_SIZE) 145*91f16700Schasinglulu /* 146*91f16700Schasinglulu * Put BL1 RW at the top of the Trusted SRAM. 147*91f16700Schasinglulu */ 148*91f16700Schasinglulu #define BL1_RW_BASE (MARVELL_BL_RAM_BASE + \ 149*91f16700Schasinglulu MARVELL_BL_RAM_SIZE - \ 150*91f16700Schasinglulu PLAT_MARVELL_MAX_BL1_RW_SIZE) 151*91f16700Schasinglulu #define BL1_RW_LIMIT (MARVELL_BL_RAM_BASE + MARVELL_BL_RAM_SIZE) 152*91f16700Schasinglulu 153*91f16700Schasinglulu /***************************************************************************** 154*91f16700Schasinglulu * BL2 specific defines. 155*91f16700Schasinglulu ***************************************************************************** 156*91f16700Schasinglulu */ 157*91f16700Schasinglulu /* 158*91f16700Schasinglulu * Put BL2 just below BL31. 159*91f16700Schasinglulu */ 160*91f16700Schasinglulu #define BL2_BASE (BL31_BASE - PLAT_MARVELL_MAX_BL2_SIZE) 161*91f16700Schasinglulu #define BL2_LIMIT BL31_BASE 162*91f16700Schasinglulu 163*91f16700Schasinglulu /***************************************************************************** 164*91f16700Schasinglulu * BL31 specific defines. 165*91f16700Schasinglulu ***************************************************************************** 166*91f16700Schasinglulu */ 167*91f16700Schasinglulu /* 168*91f16700Schasinglulu * Put BL31 at the top of the Trusted SRAM. 169*91f16700Schasinglulu */ 170*91f16700Schasinglulu #define BL31_BASE (MARVELL_BL_RAM_BASE + \ 171*91f16700Schasinglulu MARVELL_BL_RAM_SIZE - \ 172*91f16700Schasinglulu PLAT_MARVEL_MAX_BL31_SIZE) 173*91f16700Schasinglulu #define BL31_PROGBITS_LIMIT BL1_RW_BASE 174*91f16700Schasinglulu #define BL31_LIMIT (MARVELL_BL_RAM_BASE + \ 175*91f16700Schasinglulu MARVELL_BL_RAM_SIZE) 176*91f16700Schasinglulu 177*91f16700Schasinglulu /***************************************************************************** 178*91f16700Schasinglulu * BL32 specific defines. 179*91f16700Schasinglulu ***************************************************************************** 180*91f16700Schasinglulu */ 181*91f16700Schasinglulu #define BL32_BASE PLAT_MARVELL_TRUSTED_RAM_BASE 182*91f16700Schasinglulu #define BL32_LIMIT (BL32_BASE + PLAT_MARVELL_TRUSTED_RAM_SIZE) 183*91f16700Schasinglulu 184*91f16700Schasinglulu #ifdef SPD_none 185*91f16700Schasinglulu #undef BL32_BASE 186*91f16700Schasinglulu #endif /* SPD_none */ 187*91f16700Schasinglulu 188*91f16700Schasinglulu #endif /* MARVELL_DEF_H */ 189