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