1*91f16700Schasinglulu /* SPDX-License-Identifier: BSD-3-Clause */ 2*91f16700Schasinglulu /* 3*91f16700Schasinglulu * Copyright (C) 2024, Charleye <wangkart@aliyun.com> 4*91f16700Schasinglulu * All rights reserved. 5*91f16700Schasinglulu */ 6*91f16700Schasinglulu 7*91f16700Schasinglulu #ifndef PLATFORM_DEF_H 8*91f16700Schasinglulu #define PLATFORM_DEF_H 9*91f16700Schasinglulu 10*91f16700Schasinglulu #include <lib/utils_def.h> 11*91f16700Schasinglulu #include <plat/common/common_def.h> 12*91f16700Schasinglulu 13*91f16700Schasinglulu /* CPU topology */ 14*91f16700Schasinglulu #define PLAT_MAX_CORES_PER_CLUSTER U(4) 15*91f16700Schasinglulu #define PLAT_CLUSTER_COUNT U(2) 16*91f16700Schasinglulu #define PLATFORM_CORE_COUNT (PLAT_CLUSTER_COUNT * PLAT_MAX_CORES_PER_CLUSTER) 17*91f16700Schasinglulu 18*91f16700Schasinglulu #define PLAT_MAX_PWR_LVL U(1) 19*91f16700Schasinglulu #define PLAT_MAX_RET_STATE U(1) 20*91f16700Schasinglulu #define PLAT_MAX_OFF_STATE U(2) 21*91f16700Schasinglulu 22*91f16700Schasinglulu /* Local power state for power domains in Run state. */ 23*91f16700Schasinglulu #define LMT_LOCAL_STATE_RUN U(0) 24*91f16700Schasinglulu /* Local power state for retention. Valid only for CPU power domains */ 25*91f16700Schasinglulu #define LMT_LOCAL_STATE_RET U(1) 26*91f16700Schasinglulu /* 27*91f16700Schasinglulu * Local power state for OFF/power-down. Valid for CPU and cluster power 28*91f16700Schasinglulu * domains. 29*91f16700Schasinglulu */ 30*91f16700Schasinglulu #define LMT_LOCAL_STATE_OFF U(2) 31*91f16700Schasinglulu 32*91f16700Schasinglulu /* 33*91f16700Schasinglulu * Macros used to parse state information from State-ID if it is using the 34*91f16700Schasinglulu * recommended encoding for State-ID. 35*91f16700Schasinglulu */ 36*91f16700Schasinglulu #define LMT_LOCAL_PSTATE_WIDTH U(4) 37*91f16700Schasinglulu #define LMT_LOCAL_PSTATE_MASK ((1 << LMT_LOCAL_PSTATE_WIDTH) - 1) 38*91f16700Schasinglulu 39*91f16700Schasinglulu #define CACHE_WRITEBACK_SHIFT U(6) 40*91f16700Schasinglulu #define CACHE_WRITEBACK_GRANULE (1 << CACHE_WRITEBACK_SHIFT) 41*91f16700Schasinglulu 42*91f16700Schasinglulu /* xlat table v2 related to contants */ 43*91f16700Schasinglulu #define PLAT_PHY_ADDR_SPACE_SIZE (1ULL << 40) 44*91f16700Schasinglulu #define PLAT_VIRT_ADDR_SPACE_SIZE (1ULL << 40) 45*91f16700Schasinglulu #define MAX_XLAT_TABLES U(8) 46*91f16700Schasinglulu #define MAX_MMAP_REGIONS U(8) 47*91f16700Schasinglulu 48*91f16700Schasinglulu #define PLATFORM_STACK_SIZE (1UL << 12) 49*91f16700Schasinglulu 50*91f16700Schasinglulu /* physical memory related constants */ 51*91f16700Schasinglulu #define LMT_DRAM_BASE ULL(0x400000000) 52*91f16700Schasinglulu #define LMT_NS_DDR_SIZE (ULL(0x10) * SZ_1G) 53*91f16700Schasinglulu #define LMT_BL31_IMG_OFFSET 0x00104000 54*91f16700Schasinglulu #define LMT_BL32_IMG_OFFSET 0x04000000 55*91f16700Schasinglulu #define LMT_BL33_IMG_OFFSET 0x00200000 56*91f16700Schasinglulu 57*91f16700Schasinglulu #define LMT_IRAM_BASE 0x00000000 58*91f16700Schasinglulu #define LMT_IRAM_SIZE SZ_128K 59*91f16700Schasinglulu 60*91f16700Schasinglulu #define SHARED_RAM_BASE (LMT_IRAM_BASE + LMT_IRAM_SIZE - SZ_4K) 61*91f16700Schasinglulu #define SHARED_RAM_SIZE SZ_4K 62*91f16700Schasinglulu 63*91f16700Schasinglulu #define PLAT_LMT_TRUSTED_MAILBOX_BASE SHARED_RAM_BASE 64*91f16700Schasinglulu #define PLAT_LMT_TRUSTED_MAILBOX_SIZE (8 + PLAT_LMT_HOLD_SIZE) 65*91f16700Schasinglulu #define PLAT_LMT_HOLD_BASE (PLAT_LMT_TRUSTED_MAILBOX_BASE + 8) 66*91f16700Schasinglulu #define PLAT_LMT_HOLD_SIZE (PLATFORM_CORE_COUNT * PLAT_LMT_HOLD_ENTRY_SIZE) 67*91f16700Schasinglulu #define PLAT_LMT_HOLD_ENTRY_SHIFT U(3) 68*91f16700Schasinglulu #define PLAT_LMT_HOLD_ENTRY_SIZE (1 << PLAT_LMT_HOLD_ENTRY_SHIFT) 69*91f16700Schasinglulu #define PLAT_LMT_HOLD_STATE_WAIT U(0) 70*91f16700Schasinglulu #define PLAT_LMT_HOLD_STATE_GO U(1) 71*91f16700Schasinglulu 72*91f16700Schasinglulu /* 73*91f16700Schasinglulu * BL3-1 specific defines. 74*91f16700Schasinglulu * 75*91f16700Schasinglulu * Put BL3-1 at the top of the Trusted SRAM. BL31_BASE is calculated using the 76*91f16700Schasinglulu * current BL3-1 debug size plus a little space for growth. 77*91f16700Schasinglulu */ 78*91f16700Schasinglulu #define BL31_BASE (LMT_DRAM_BASE + LMT_BL31_IMG_OFFSET) 79*91f16700Schasinglulu #define BL31_SIZE SZ_256K 80*91f16700Schasinglulu #define BL31_LIMIT (BL31_BASE + BL31_SIZE) 81*91f16700Schasinglulu 82*91f16700Schasinglulu #define BL32_BASE (LMT_DRAM_BASE + LMT_BL32_IMG_OFFSET) 83*91f16700Schasinglulu #define BL32_SIZE SZ_32M 84*91f16700Schasinglulu #define BL32_LIMIT (BL32_BASE + BL32_SIZE) 85*91f16700Schasinglulu 86*91f16700Schasinglulu /******************************************************************************* 87*91f16700Schasinglulu * BL33 specific defines. 88*91f16700Schasinglulu ******************************************************************************/ 89*91f16700Schasinglulu #ifndef PRELOADED_BL33_BASE 90*91f16700Schasinglulu # define PLAT_ARM_NS_IMAGE_BASE U(LMT_DRAM_BASE + LMT_BL33_IMG_OFFSET) 91*91f16700Schasinglulu #else 92*91f16700Schasinglulu # define PLAT_ARM_NS_IMAGE_BASE U(PRELOADED_BL33_BASE) 93*91f16700Schasinglulu #endif 94*91f16700Schasinglulu 95*91f16700Schasinglulu /* 96*91f16700Schasinglulu * UART related constants 97*91f16700Schasinglulu */ 98*91f16700Schasinglulu #define PLAT_LMT_BOOT_UART_BASE 0x1068a000 99*91f16700Schasinglulu #define PLAT_LMT_BOOT_UART_CLK_IN_HZ LMT_UART0_CLK_IN_HZ 100*91f16700Schasinglulu #define PLAT_LMT_CONSOLE_BAUDRATE LMT_UART0_BAUDRATE 101*91f16700Schasinglulu 102*91f16700Schasinglulu #define PLAT_LMT_UART1_BASE PLAT_LMT_BOOT_UART_BASE 103*91f16700Schasinglulu #define PLAT_LMT_UART1_SIZE ULL(0x1000) 104*91f16700Schasinglulu #define PLAT_LMT_UART1_MMAP MAP_REGION_FLAT(PLAT_LMT_UART1_BASE, \ 105*91f16700Schasinglulu PLAT_LMT_UART1_SIZE, \ 106*91f16700Schasinglulu MT_DEVICE | MT_RW | \ 107*91f16700Schasinglulu MT_NS | MT_PRIVILEGED) 108*91f16700Schasinglulu 109*91f16700Schasinglulu #define DEVICE0_BASE 0x10000000 110*91f16700Schasinglulu #define DEVICE0_SIZE SZ_1G 111*91f16700Schasinglulu 112*91f16700Schasinglulu /* 113*91f16700Schasinglulu * GIC related constants 114*91f16700Schasinglulu */ 115*91f16700Schasinglulu #define GICD_BASE 0x00449000 116*91f16700Schasinglulu #define GICC_BASE 0x0044a000 117*91f16700Schasinglulu 118*91f16700Schasinglulu #define LMT_IRQ_SEC_SGI_0 8 119*91f16700Schasinglulu #define LMT_IRQ_SEC_SGI_1 9 120*91f16700Schasinglulu #define LMT_IRQ_SEC_SGI_2 10 121*91f16700Schasinglulu #define LMT_IRQ_SEC_SGI_3 11 122*91f16700Schasinglulu #define LMT_IRQ_SEC_SGI_4 12 123*91f16700Schasinglulu #define LMT_IRQ_SEC_SGI_5 13 124*91f16700Schasinglulu #define LMT_IRQ_SEC_SGI_6 14 125*91f16700Schasinglulu #define LMT_IRQ_SEC_SGI_7 15 126*91f16700Schasinglulu 127*91f16700Schasinglulu #define PLATFORM_G1S_PROPS(grp) \ 128*91f16700Schasinglulu INTR_PROP_DESC(LMT_IRQ_SEC_SGI_0, GIC_HIGHEST_SEC_PRIORITY, \ 129*91f16700Schasinglulu grp, GIC_INTR_CFG_EDGE), \ 130*91f16700Schasinglulu INTR_PROP_DESC(LMT_IRQ_SEC_SGI_1, GIC_HIGHEST_SEC_PRIORITY, \ 131*91f16700Schasinglulu grp, GIC_INTR_CFG_EDGE), \ 132*91f16700Schasinglulu INTR_PROP_DESC(LMT_IRQ_SEC_SGI_2, GIC_HIGHEST_SEC_PRIORITY, \ 133*91f16700Schasinglulu grp, GIC_INTR_CFG_EDGE), \ 134*91f16700Schasinglulu INTR_PROP_DESC(LMT_IRQ_SEC_SGI_3, GIC_HIGHEST_SEC_PRIORITY, \ 135*91f16700Schasinglulu grp, GIC_INTR_CFG_EDGE), \ 136*91f16700Schasinglulu INTR_PROP_DESC(LMT_IRQ_SEC_SGI_4, GIC_HIGHEST_SEC_PRIORITY, \ 137*91f16700Schasinglulu grp, GIC_INTR_CFG_EDGE), \ 138*91f16700Schasinglulu INTR_PROP_DESC(LMT_IRQ_SEC_SGI_5, GIC_HIGHEST_SEC_PRIORITY, \ 139*91f16700Schasinglulu grp, GIC_INTR_CFG_EDGE), \ 140*91f16700Schasinglulu INTR_PROP_DESC(LMT_IRQ_SEC_SGI_6, GIC_HIGHEST_SEC_PRIORITY, \ 141*91f16700Schasinglulu grp, GIC_INTR_CFG_EDGE), \ 142*91f16700Schasinglulu INTR_PROP_DESC(LMT_IRQ_SEC_SGI_7, GIC_HIGHEST_SEC_PRIORITY, \ 143*91f16700Schasinglulu grp, GIC_INTR_CFG_EDGE) 144*91f16700Schasinglulu 145*91f16700Schasinglulu #define PLATFORM_G0_PROPS(grp) 146*91f16700Schasinglulu 147*91f16700Schasinglulu #define PLAT_LMT_PRIMARY_CPU 0x0 148*91f16700Schasinglulu #define PLAT_LMT_PRIMARY_CPU_SHIFT 8 149*91f16700Schasinglulu #define PLAT_LMT_PRIMARY_CPU_BIT_WIDTH 6 150*91f16700Schasinglulu 151*91f16700Schasinglulu #endif /* PLATFORM_DEF_H */ 152