1011a4c2fSBiju Das /* 2*ae4860b0STobias Rist * Copyright (c) 2015-2023, Renesas Electronics Corporation. All rights reserved. 3011a4c2fSBiju Das * 4011a4c2fSBiju Das * SPDX-License-Identifier: BSD-3-Clause 5011a4c2fSBiju Das */ 6011a4c2fSBiju Das 7011a4c2fSBiju Das #ifndef PLATFORM_DEF_H 8011a4c2fSBiju Das #define PLATFORM_DEF_H 9011a4c2fSBiju Das 10011a4c2fSBiju Das #ifndef __ASSEMBLER__ 11011a4c2fSBiju Das #include <stdlib.h> 12011a4c2fSBiju Das #endif 13011a4c2fSBiju Das 14011a4c2fSBiju Das #include <arch.h> 15011a4c2fSBiju Das 16011a4c2fSBiju Das #include "rcar_def.h" 17011a4c2fSBiju Das 18011a4c2fSBiju Das /******************************************************************************* 19011a4c2fSBiju Das * Platform binary types for linking 20011a4c2fSBiju Das ******************************************************************************/ 21011a4c2fSBiju Das #define PLATFORM_LINKER_FORMAT "elf64-littleaarch64" 22011a4c2fSBiju Das #define PLATFORM_LINKER_ARCH aarch64 23011a4c2fSBiju Das 24011a4c2fSBiju Das /******************************************************************************* 25011a4c2fSBiju Das * Generic platform constants 26011a4c2fSBiju Das ******************************************************************************/ 27011a4c2fSBiju Das #define FIRMWARE_WELCOME_STR "Booting Rcar-gen3 Trusted Firmware\n" 28011a4c2fSBiju Das 29011a4c2fSBiju Das /* Size of cacheable stacks */ 30011a4c2fSBiju Das #if IMAGE_BL1 31011a4c2fSBiju Das #if TRUSTED_BOARD_BOOT 32011a4c2fSBiju Das #define PLATFORM_STACK_SIZE U(0x1000) 33011a4c2fSBiju Das #else 34011a4c2fSBiju Das #define PLATFORM_STACK_SIZE U(0x440) 35011a4c2fSBiju Das #endif 36011a4c2fSBiju Das #elif IMAGE_BL2 37011a4c2fSBiju Das #if TRUSTED_BOARD_BOOT 38011a4c2fSBiju Das #define PLATFORM_STACK_SIZE U(0x1000) 39011a4c2fSBiju Das #else 40011a4c2fSBiju Das #define PLATFORM_STACK_SIZE U(0x400) 41011a4c2fSBiju Das #endif 42011a4c2fSBiju Das #elif IMAGE_BL31 43d544dfccSTakuya Sakata #define PLATFORM_STACK_SIZE U(0x800) 44011a4c2fSBiju Das #elif IMAGE_BL32 45011a4c2fSBiju Das #define PLATFORM_STACK_SIZE U(0x440) 46011a4c2fSBiju Das #endif 47011a4c2fSBiju Das 48011a4c2fSBiju Das #define BL332_IMAGE_ID (NS_BL2U_IMAGE_ID + 1) 49011a4c2fSBiju Das #define BL333_IMAGE_ID (NS_BL2U_IMAGE_ID + 2) 50011a4c2fSBiju Das #define BL334_IMAGE_ID (NS_BL2U_IMAGE_ID + 3) 51011a4c2fSBiju Das #define BL335_IMAGE_ID (NS_BL2U_IMAGE_ID + 4) 52011a4c2fSBiju Das #define BL336_IMAGE_ID (NS_BL2U_IMAGE_ID + 5) 53011a4c2fSBiju Das #define BL337_IMAGE_ID (NS_BL2U_IMAGE_ID + 6) 54011a4c2fSBiju Das #define BL338_IMAGE_ID (NS_BL2U_IMAGE_ID + 7) 55011a4c2fSBiju Das 56011a4c2fSBiju Das #define BL332_KEY_CERT_ID (NS_BL2U_IMAGE_ID + 8) 57011a4c2fSBiju Das #define BL333_KEY_CERT_ID (NS_BL2U_IMAGE_ID + 9) 58011a4c2fSBiju Das #define BL334_KEY_CERT_ID (NS_BL2U_IMAGE_ID + 10) 59011a4c2fSBiju Das #define BL335_KEY_CERT_ID (NS_BL2U_IMAGE_ID + 11) 60011a4c2fSBiju Das #define BL336_KEY_CERT_ID (NS_BL2U_IMAGE_ID + 12) 61011a4c2fSBiju Das #define BL337_KEY_CERT_ID (NS_BL2U_IMAGE_ID + 13) 62011a4c2fSBiju Das #define BL338_KEY_CERT_ID (NS_BL2U_IMAGE_ID + 14) 63011a4c2fSBiju Das 64011a4c2fSBiju Das #define BL332_CERT_ID (NS_BL2U_IMAGE_ID + 15) 65011a4c2fSBiju Das #define BL333_CERT_ID (NS_BL2U_IMAGE_ID + 16) 66011a4c2fSBiju Das #define BL334_CERT_ID (NS_BL2U_IMAGE_ID + 17) 67011a4c2fSBiju Das #define BL335_CERT_ID (NS_BL2U_IMAGE_ID + 18) 68011a4c2fSBiju Das #define BL336_CERT_ID (NS_BL2U_IMAGE_ID + 19) 69011a4c2fSBiju Das #define BL337_CERT_ID (NS_BL2U_IMAGE_ID + 20) 70011a4c2fSBiju Das #define BL338_CERT_ID (NS_BL2U_IMAGE_ID + 21) 71011a4c2fSBiju Das 72011a4c2fSBiju Das /* io drivers id */ 73011a4c2fSBiju Das #define FLASH_DEV_ID U(0) 74011a4c2fSBiju Das #define EMMC_DEV_ID U(1) 75011a4c2fSBiju Das 76011a4c2fSBiju Das /* 77011a4c2fSBiju Das * R-Car H3 Cortex-A57 78011a4c2fSBiju Das * L1:I/48KB(16KBx3way) D/32KB(16KBx2way) L2:2MB(128KBx16way) 79011a4c2fSBiju Das * Cortex-A53 80011a4c2fSBiju Das * L1:I/32KB(16KBx2way) D/32KB(8KBx4way) L2:512KB(32KBx16way) 81011a4c2fSBiju Das */ 82011a4c2fSBiju Das #define PLATFORM_CACHE_LINE_SIZE 64 83011a4c2fSBiju Das #define PLATFORM_CLUSTER_COUNT U(2) 84011a4c2fSBiju Das #define PLATFORM_CLUSTER0_CORE_COUNT U(4) 85011a4c2fSBiju Das #define PLATFORM_CLUSTER1_CORE_COUNT U(4) 86011a4c2fSBiju Das #define PLATFORM_CORE_COUNT (PLATFORM_CLUSTER1_CORE_COUNT + \ 87011a4c2fSBiju Das PLATFORM_CLUSTER0_CORE_COUNT) 88011a4c2fSBiju Das #define PLATFORM_MAX_CPUS_PER_CLUSTER U(4) 89011a4c2fSBiju Das 90011a4c2fSBiju Das #define PLAT_MAX_PWR_LVL MPIDR_AFFLVL2 91011a4c2fSBiju Das #define PLAT_NUM_PWR_DOMAINS (PLATFORM_CORE_COUNT + \ 92011a4c2fSBiju Das PLATFORM_CLUSTER_COUNT + 1) 93011a4c2fSBiju Das 94011a4c2fSBiju Das #define PLAT_MAX_RET_STATE U(1) 95011a4c2fSBiju Das #define PLAT_MAX_OFF_STATE U(2) 96011a4c2fSBiju Das 97011a4c2fSBiju Das #define MAX_IO_DEVICES U(3) 98011a4c2fSBiju Das #define MAX_IO_HANDLES U(4) 99011a4c2fSBiju Das 100011a4c2fSBiju Das /* 101011a4c2fSBiju Das ****************************************************************************** 102011a4c2fSBiju Das * BL2 specific defines. 103011a4c2fSBiju Das ****************************************************************************** 104011a4c2fSBiju Das * Put BL2 just below BL3-1. BL2_BASE is calculated using the current BL2 debug 105011a4c2fSBiju Das * size plus a little space for growth. 106011a4c2fSBiju Das */ 107011a4c2fSBiju Das #define RCAR_SYSRAM_BASE U(0xE6300000) 108011a4c2fSBiju Das #if (RCAR_LSI == RCAR_E3) || (RCAR_LSI == RCAR_D3) 109011a4c2fSBiju Das #define BL2_LIMIT U(0xE6320000) 110011a4c2fSBiju Das #else 111011a4c2fSBiju Das #define BL2_LIMIT U(0xE6360000) 112011a4c2fSBiju Das #endif 113011a4c2fSBiju Das 114011a4c2fSBiju Das #if (RCAR_LSI == RCAR_E3) || (RCAR_LSI == RCAR_D3) 115011a4c2fSBiju Das #define BL2_BASE U(0xE6304000) 116011a4c2fSBiju Das #define BL2_IMAGE_LIMIT U(0xE6318000) 117011a4c2fSBiju Das #elif (RCAR_LSI == RCAR_V3M) 118011a4c2fSBiju Das #define BL2_BASE U(0xE6344000) 119011a4c2fSBiju Das #define BL2_IMAGE_LIMIT U(0xE636E800) 120011a4c2fSBiju Das #else 121011a4c2fSBiju Das #define BL2_BASE U(0xE6304000) 122011a4c2fSBiju Das #define BL2_IMAGE_LIMIT U(0xE632E800) 123011a4c2fSBiju Das #endif 124011a4c2fSBiju Das #define RCAR_SYSRAM_SIZE (BL2_BASE - RCAR_SYSRAM_BASE) 125011a4c2fSBiju Das 126011a4c2fSBiju Das /* 127011a4c2fSBiju Das ****************************************************************************** 128011a4c2fSBiju Das * BL31 specific defines. 129011a4c2fSBiju Das ****************************************************************************** 130011a4c2fSBiju Das * Put BL3-1 at the top of the Trusted SRAM. BL31_BASE is calculated using the 131011a4c2fSBiju Das * current BL3-1 debug size plus a little space for growth. 132011a4c2fSBiju Das */ 133011a4c2fSBiju Das #define BL31_BASE (RCAR_TRUSTED_SRAM_BASE) 134011a4c2fSBiju Das #define BL31_LIMIT (RCAR_TRUSTED_SRAM_BASE + \ 135011a4c2fSBiju Das RCAR_TRUSTED_SRAM_SIZE) 136011a4c2fSBiju Das #define RCAR_BL31_LOG_BASE (0x44040000) 137011a4c2fSBiju Das #define RCAR_BL31_SDRAM_BTM (RCAR_BL31_LOG_BASE + 0x14000) 138011a4c2fSBiju Das #define RCAR_BL31_LOG_SIZE (RCAR_BL31_SDRAM_BTM - RCAR_BL31_LOG_BASE) 139011a4c2fSBiju Das #define BL31_SRAM_BASE (DEVICE_SRAM_BASE) 140011a4c2fSBiju Das #define BL31_SRAM_LIMIT (DEVICE_SRAM_BASE + DEVICE_SRAM_SIZE) 141011a4c2fSBiju Das 142011a4c2fSBiju Das /******************************************************************************* 143011a4c2fSBiju Das * BL32 specific defines. 144011a4c2fSBiju Das ******************************************************************************/ 145011a4c2fSBiju Das #ifndef SPD_NONE 146011a4c2fSBiju Das #define BL32_BASE U(0x44100000) 147*ae4860b0STobias Rist #define BL32_SIZE U(0x200000) 148*ae4860b0STobias Rist #define BL32_LIMIT (BL32_BASE + BL32_SIZE) 149011a4c2fSBiju Das #endif 150011a4c2fSBiju Das 151011a4c2fSBiju Das /******************************************************************************* 152011a4c2fSBiju Das * BL33 153011a4c2fSBiju Das ******************************************************************************/ 154011a4c2fSBiju Das #define BL33_BASE DRAM1_NS_BASE 155ddf2ca03SMarek Vasut #define BL33_COMP_SIZE U(0x200000) 156*ae4860b0STobias Rist #define BL33_DECOMP_SIZE (BL33_COMP_SIZE * 32) 157*ae4860b0STobias Rist #define BL33_COMP_BASE (BL33_BASE + BL33_DECOMP_SIZE) 158011a4c2fSBiju Das 159011a4c2fSBiju Das /******************************************************************************* 160011a4c2fSBiju Das * Platform specific page table and MMU setup constants 161011a4c2fSBiju Das ******************************************************************************/ 162011a4c2fSBiju Das #if IMAGE_BL1 163011a4c2fSBiju Das #define MAX_XLAT_TABLES U(2) 164011a4c2fSBiju Das #elif IMAGE_BL2 165011a4c2fSBiju Das #define MAX_XLAT_TABLES U(5) 166011a4c2fSBiju Das #elif IMAGE_BL31 167011a4c2fSBiju Das #define MAX_XLAT_TABLES U(4) 168011a4c2fSBiju Das #elif IMAGE_BL32 169011a4c2fSBiju Das #define MAX_XLAT_TABLES U(3) 170011a4c2fSBiju Das #endif 171011a4c2fSBiju Das 172011a4c2fSBiju Das #if IMAGE_BL2 173011a4c2fSBiju Das #define PLAT_PHY_ADDR_SPACE_SIZE (ULL(1) << 40) 174011a4c2fSBiju Das #define PLAT_VIRT_ADDR_SPACE_SIZE (ULL(1) << 40) 175011a4c2fSBiju Das #else 176011a4c2fSBiju Das #define PLAT_PHY_ADDR_SPACE_SIZE (ULL(1) << 32) 177011a4c2fSBiju Das #define PLAT_VIRT_ADDR_SPACE_SIZE (ULL(1) << 32) 178011a4c2fSBiju Das #endif 179011a4c2fSBiju Das 180011a4c2fSBiju Das #define MAX_MMAP_REGIONS (RCAR_MMAP_ENTRIES + RCAR_BL_REGIONS) 181011a4c2fSBiju Das 182011a4c2fSBiju Das /******************************************************************************* 183011a4c2fSBiju Das * Declarations and constants to access the mailboxes safely. Each mailbox is 184011a4c2fSBiju Das * aligned on the biggest cache line size in the platform. This is known only 185011a4c2fSBiju Das * to the platform as it might have a combination of integrated and external 186011a4c2fSBiju Das * caches. Such alignment ensures that two mailboxes do not sit on the same cache 187011a4c2fSBiju Das * line at any cache level. They could belong to different cpus/clusters & 188011a4c2fSBiju Das * get written while being protected by different locks causing corruption of 189011a4c2fSBiju Das * a valid mailbox address. 190011a4c2fSBiju Das ******************************************************************************/ 191011a4c2fSBiju Das #define CACHE_WRITEBACK_SHIFT (6) 192011a4c2fSBiju Das #define CACHE_WRITEBACK_GRANULE (1 << CACHE_WRITEBACK_SHIFT) 193011a4c2fSBiju Das #endif /* PLATFORM_DEF_H */ 194