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 PLATFORM_DEF_H 9*91f16700Schasinglulu #define PLATFORM_DEF_H 10*91f16700Schasinglulu 11*91f16700Schasinglulu #ifndef __ASSEMBLER__ 12*91f16700Schasinglulu #include <stdio.h> 13*91f16700Schasinglulu #endif /* __ASSEMBLER__ */ 14*91f16700Schasinglulu 15*91f16700Schasinglulu #include <common/interrupt_props.h> 16*91f16700Schasinglulu #include <drivers/arm/gic_common.h> 17*91f16700Schasinglulu 18*91f16700Schasinglulu #include <board_marvell_def.h> 19*91f16700Schasinglulu #include <mvebu_def.h> 20*91f16700Schasinglulu 21*91f16700Schasinglulu /* 22*91f16700Schasinglulu * Most platform porting definitions provided by included headers 23*91f16700Schasinglulu */ 24*91f16700Schasinglulu 25*91f16700Schasinglulu /* 26*91f16700Schasinglulu * DRAM Memory layout: 27*91f16700Schasinglulu * +-----------------------+ 28*91f16700Schasinglulu * : : 29*91f16700Schasinglulu * : Linux : 30*91f16700Schasinglulu * 0x04X00000-->+-----------------------+ 31*91f16700Schasinglulu * | BL3-3(u-boot) |>>}>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 32*91f16700Schasinglulu * |-----------------------| } | 33*91f16700Schasinglulu * | BL3-[0,1, 2] | }---------------------------------> | 34*91f16700Schasinglulu * |-----------------------| } || | 35*91f16700Schasinglulu * | BL2 | }->FIP (loaded by || | 36*91f16700Schasinglulu * |-----------------------| } BootROM to DRAM) || | 37*91f16700Schasinglulu * | FIP_TOC | } || | 38*91f16700Schasinglulu * 0x04120000-->|-----------------------| || | 39*91f16700Schasinglulu * | BL1 (RO) | || | 40*91f16700Schasinglulu * 0x04100000-->+-----------------------+ || | 41*91f16700Schasinglulu * : : || | 42*91f16700Schasinglulu * : Trusted SRAM section : \/ | 43*91f16700Schasinglulu * 0x04040000-->+-----------------------+ Replaced by BL2 +----------------+ | 44*91f16700Schasinglulu * | BL1 (RW) | <<<<<<<<<<<<<<<< | BL3-1 NOBITS | | 45*91f16700Schasinglulu * 0x04037000-->|-----------------------| <<<<<<<<<<<<<<<< |----------------| | 46*91f16700Schasinglulu * | | <<<<<<<<<<<<<<<< | BL3-1 PROGBITS | | 47*91f16700Schasinglulu * 0x04023000-->|-----------------------| +----------------+ | 48*91f16700Schasinglulu * | BL2 | | 49*91f16700Schasinglulu * |-----------------------| | 50*91f16700Schasinglulu * | | | 51*91f16700Schasinglulu * 0x04001000-->|-----------------------| | 52*91f16700Schasinglulu * | Shared | | 53*91f16700Schasinglulu * 0x04000000-->+-----------------------+ | 54*91f16700Schasinglulu * : : | 55*91f16700Schasinglulu * : Linux : | 56*91f16700Schasinglulu * : : | 57*91f16700Schasinglulu * |-----------------------| | 58*91f16700Schasinglulu * | | U-Boot(BL3-3) Loaded by BL2 | 59*91f16700Schasinglulu * | U-Boot | <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60*91f16700Schasinglulu * 0x00000000-->+-----------------------+ 61*91f16700Schasinglulu * 62*91f16700Schasinglulu * Trusted SRAM section 0x4000000..0x4200000: 63*91f16700Schasinglulu * ---------------------------------------- 64*91f16700Schasinglulu * SRAM_BASE = 0x4001000 65*91f16700Schasinglulu * BL2_BASE = 0x4006000 66*91f16700Schasinglulu * BL2_LIMIT = BL31_BASE 67*91f16700Schasinglulu * BL31_BASE = 0x4023000 = (64MB + 256KB - 0x1D000) 68*91f16700Schasinglulu * BL31_PROGBITS_LIMIT = BL1_RW_BASE 69*91f16700Schasinglulu * BL1_RW_BASE = 0x4037000 = (64MB + 256KB - 0x9000) 70*91f16700Schasinglulu * BL1_RW_LIMIT = BL31_LIMIT = 0x4040000 71*91f16700Schasinglulu * 72*91f16700Schasinglulu * 73*91f16700Schasinglulu * PLAT_MARVELL_FIP_BASE = 0x4120000 74*91f16700Schasinglulu */ 75*91f16700Schasinglulu 76*91f16700Schasinglulu #define PLAT_MARVELL_SRAM_BASE 0xFFE1C048 77*91f16700Schasinglulu #define PLAT_MARVELL_SRAM_END 0xFFE78000 78*91f16700Schasinglulu 79*91f16700Schasinglulu #define PLAT_MARVELL_ATF_BASE 0x4000000 80*91f16700Schasinglulu #define PLAT_MARVELL_ATF_LOAD_ADDR (PLAT_MARVELL_ATF_BASE + \ 81*91f16700Schasinglulu 0x100000) 82*91f16700Schasinglulu 83*91f16700Schasinglulu #define PLAT_MARVELL_FIP_BASE (PLAT_MARVELL_ATF_LOAD_ADDR + \ 84*91f16700Schasinglulu 0x20000) 85*91f16700Schasinglulu #define PLAT_MARVELL_FIP_MAX_SIZE 0x4000000 86*91f16700Schasinglulu 87*91f16700Schasinglulu #define PLAT_MARVELL_NORTHB_COUNT 1 88*91f16700Schasinglulu 89*91f16700Schasinglulu #define PLAT_MARVELL_CLUSTER_COUNT U(2) 90*91f16700Schasinglulu #define PLAT_MARVELL_CLUSTER_CORE_COUNT U(2) 91*91f16700Schasinglulu 92*91f16700Schasinglulu #define PLAT_MARVELL_CORE_COUNT (PLAT_MARVELL_CLUSTER_COUNT * \ 93*91f16700Schasinglulu PLAT_MARVELL_CLUSTER_CORE_COUNT) 94*91f16700Schasinglulu 95*91f16700Schasinglulu #define PLAT_MAX_CPUS_PER_CLUSTER PLAT_MARVELL_CLUSTER_CORE_COUNT 96*91f16700Schasinglulu 97*91f16700Schasinglulu /* Part of DRAM that is used as Trusted ROM */ 98*91f16700Schasinglulu #define PLAT_MARVELL_TRUSTED_ROM_BASE PLAT_MARVELL_ATF_LOAD_ADDR 99*91f16700Schasinglulu /* 4 MB for FIP image */ 100*91f16700Schasinglulu #define PLAT_MARVELL_TRUSTED_ROM_SIZE 0x00400000 101*91f16700Schasinglulu /* Reserve 12MB for SCP (Secure PayLoad) Trusted RAM 102*91f16700Schasinglulu * OP-TEE 4MB SHMEM follows this region 103*91f16700Schasinglulu */ 104*91f16700Schasinglulu #define PLAT_MARVELL_TRUSTED_RAM_BASE 0x04400000 105*91f16700Schasinglulu #define PLAT_MARVELL_TRUSTED_RAM_SIZE 0x00C00000 /* 12 MB DRAM */ 106*91f16700Schasinglulu 107*91f16700Schasinglulu #define PLAT_MARVELL_LLC_SRAM_BASE 0x05400000 108*91f16700Schasinglulu #define PLAT_MARVELL_LLC_SRAM_SIZE 0x00100000 /* 1 MB SRAM */ 109*91f16700Schasinglulu 110*91f16700Schasinglulu /* 111*91f16700Schasinglulu * PLAT_ARM_MAX_BL1_RW_SIZE is calculated using the current BL1 RW debug size 112*91f16700Schasinglulu * plus a little space for growth. 113*91f16700Schasinglulu */ 114*91f16700Schasinglulu #define PLAT_MARVELL_MAX_BL1_RW_SIZE 0xA000 115*91f16700Schasinglulu 116*91f16700Schasinglulu /* 117*91f16700Schasinglulu * PLAT_ARM_MAX_BL2_SIZE is calculated using the current BL2 debug size plus a 118*91f16700Schasinglulu * little space for growth. 119*91f16700Schasinglulu */ 120*91f16700Schasinglulu #define PLAT_MARVELL_MAX_BL2_SIZE 0xF000 121*91f16700Schasinglulu 122*91f16700Schasinglulu /* 123*91f16700Schasinglulu * PLAT_ARM_MAX_BL31_SIZE is calculated using the current BL31 debug size plus a 124*91f16700Schasinglulu * little space for growth. 125*91f16700Schasinglulu */ 126*91f16700Schasinglulu #define PLAT_MARVEL_MAX_BL31_SIZE 0x5D000 127*91f16700Schasinglulu 128*91f16700Schasinglulu #define PLAT_MARVELL_CPU_ENTRY_ADDR BL1_RO_BASE 129*91f16700Schasinglulu 130*91f16700Schasinglulu /* GIC related definitions */ 131*91f16700Schasinglulu #define PLAT_MARVELL_GICD_BASE (MVEBU_REGS_BASE + MVEBU_GICD_BASE) 132*91f16700Schasinglulu #define PLAT_MARVELL_GICC_BASE (MVEBU_REGS_BASE + MVEBU_GICC_BASE) 133*91f16700Schasinglulu 134*91f16700Schasinglulu #define PLAT_MARVELL_G0_IRQ_PROPS(grp) \ 135*91f16700Schasinglulu INTR_PROP_DESC(MARVELL_IRQ_SEC_SGI_0, GIC_HIGHEST_SEC_PRIORITY, grp, \ 136*91f16700Schasinglulu GIC_INTR_CFG_LEVEL), \ 137*91f16700Schasinglulu INTR_PROP_DESC(MARVELL_IRQ_SEC_SGI_6, GIC_HIGHEST_SEC_PRIORITY, grp, \ 138*91f16700Schasinglulu GIC_INTR_CFG_LEVEL), \ 139*91f16700Schasinglulu INTR_PROP_DESC(MARVELL_IRQ_PIC0, GIC_HIGHEST_SEC_PRIORITY, grp, \ 140*91f16700Schasinglulu GIC_INTR_CFG_LEVEL) 141*91f16700Schasinglulu 142*91f16700Schasinglulu #define PLAT_MARVELL_G1S_IRQ_PROPS(grp) \ 143*91f16700Schasinglulu INTR_PROP_DESC(MARVELL_IRQ_SEC_PHY_TIMER, GIC_HIGHEST_SEC_PRIORITY, \ 144*91f16700Schasinglulu grp, GIC_INTR_CFG_LEVEL), \ 145*91f16700Schasinglulu INTR_PROP_DESC(MARVELL_IRQ_SEC_SGI_1, GIC_HIGHEST_SEC_PRIORITY, grp, \ 146*91f16700Schasinglulu GIC_INTR_CFG_LEVEL), \ 147*91f16700Schasinglulu INTR_PROP_DESC(MARVELL_IRQ_SEC_SGI_2, GIC_HIGHEST_SEC_PRIORITY, grp, \ 148*91f16700Schasinglulu GIC_INTR_CFG_LEVEL), \ 149*91f16700Schasinglulu INTR_PROP_DESC(MARVELL_IRQ_SEC_SGI_3, GIC_HIGHEST_SEC_PRIORITY, grp, \ 150*91f16700Schasinglulu GIC_INTR_CFG_LEVEL), \ 151*91f16700Schasinglulu INTR_PROP_DESC(MARVELL_IRQ_SEC_SGI_4, GIC_HIGHEST_SEC_PRIORITY, grp, \ 152*91f16700Schasinglulu GIC_INTR_CFG_LEVEL), \ 153*91f16700Schasinglulu INTR_PROP_DESC(MARVELL_IRQ_SEC_SGI_5, GIC_HIGHEST_SEC_PRIORITY, grp, \ 154*91f16700Schasinglulu GIC_INTR_CFG_LEVEL), \ 155*91f16700Schasinglulu INTR_PROP_DESC(MARVELL_IRQ_SEC_SGI_7, GIC_HIGHEST_SEC_PRIORITY, grp, \ 156*91f16700Schasinglulu GIC_INTR_CFG_LEVEL) 157*91f16700Schasinglulu 158*91f16700Schasinglulu #define PLAT_MARVELL_SHARED_RAM_CACHED 1 159*91f16700Schasinglulu 160*91f16700Schasinglulu /* 161*91f16700Schasinglulu * Load address of BL3-3 for this platform port 162*91f16700Schasinglulu */ 163*91f16700Schasinglulu #define PLAT_MARVELL_NS_IMAGE_OFFSET 0x0 164*91f16700Schasinglulu 165*91f16700Schasinglulu /* System Reference Clock*/ 166*91f16700Schasinglulu #define PLAT_REF_CLK_IN_HZ COUNTER_FREQUENCY 167*91f16700Schasinglulu 168*91f16700Schasinglulu /* 169*91f16700Schasinglulu * PL011 related constants 170*91f16700Schasinglulu */ 171*91f16700Schasinglulu #define PLAT_MARVELL_UART_BASE (MVEBU_REGS_BASE + 0x512000) 172*91f16700Schasinglulu #define PLAT_MARVELL_UART_CLK_IN_HZ 200000000 173*91f16700Schasinglulu 174*91f16700Schasinglulu /* Recovery image enable */ 175*91f16700Schasinglulu #define PLAT_RECOVERY_IMAGE_ENABLE 0 176*91f16700Schasinglulu 177*91f16700Schasinglulu /* Required platform porting definitions */ 178*91f16700Schasinglulu #define PLAT_MAX_PWR_LVL MPIDR_AFFLVL1 179*91f16700Schasinglulu 180*91f16700Schasinglulu /* System timer related constants */ 181*91f16700Schasinglulu #define PLAT_MARVELL_NSTIMER_FRAME_ID 1 182*91f16700Schasinglulu 183*91f16700Schasinglulu /* Mailbox base address (note the lower memory space 184*91f16700Schasinglulu * is reserved for BLE data) 185*91f16700Schasinglulu */ 186*91f16700Schasinglulu #define PLAT_MARVELL_MAILBOX_BASE (MARVELL_SHARED_RAM_BASE \ 187*91f16700Schasinglulu + 0x400) 188*91f16700Schasinglulu #define PLAT_MARVELL_MAILBOX_SIZE 0x100 189*91f16700Schasinglulu #define PLAT_MARVELL_MAILBOX_MAGIC_NUM 0x6D72766C /* mrvl */ 190*91f16700Schasinglulu 191*91f16700Schasinglulu /* Securities */ 192*91f16700Schasinglulu #define IRQ_SEC_OS_TICK_INT MARVELL_IRQ_SEC_PHY_TIMER 193*91f16700Schasinglulu 194*91f16700Schasinglulu #define MVEBU_PMU_IRQ_WA 195*91f16700Schasinglulu 196*91f16700Schasinglulu #endif /* PLATFORM_DEF_H */ 197