1*f60617d3Squic_assethi /* 2*f60617d3Squic_assethi * Copyright (c) 2024, Arm Limited and Contributors. All rights reserved. 3*f60617d3Squic_assethi * Copyright (c) 2024, The Linux Foundation. All rights reserved. 4*f60617d3Squic_assethi * 5*f60617d3Squic_assethi * SPDX-License-Identifier: BSD-3-Clause 6*f60617d3Squic_assethi */ 7*f60617d3Squic_assethi 8*f60617d3Squic_assethi #ifndef PLATFORM_DEF_H 9*f60617d3Squic_assethi #define PLATFORM_DEF_H 10*f60617d3Squic_assethi 11*f60617d3Squic_assethi /* Enable the dynamic translation tables library. */ 12*f60617d3Squic_assethi #define PLAT_XLAT_TABLES_DYNAMIC 1 13*f60617d3Squic_assethi 14*f60617d3Squic_assethi #include <common_def.h> 15*f60617d3Squic_assethi 16*f60617d3Squic_assethi #include <qti_board_def.h> 17*f60617d3Squic_assethi #include <qtiseclib_defs_plat.h> 18*f60617d3Squic_assethi 19*f60617d3Squic_assethi /*----------------------------------------------------------------------------*/ 20*f60617d3Squic_assethi 21*f60617d3Squic_assethi /*----------------------------------------------------------------------------*/ 22*f60617d3Squic_assethi /* 23*f60617d3Squic_assethi * MPIDR_PRIMARY_CPU 24*f60617d3Squic_assethi * You just need to have the correct core_affinity_val i.e. [7:0] 25*f60617d3Squic_assethi * and cluster_affinity_val i.e. [15:8] 26*f60617d3Squic_assethi * the other bits will be ignored 27*f60617d3Squic_assethi */ 28*f60617d3Squic_assethi /*----------------------------------------------------------------------------*/ 29*f60617d3Squic_assethi #define MPIDR_PRIMARY_CPU 0x0000 30*f60617d3Squic_assethi /*----------------------------------------------------------------------------*/ 31*f60617d3Squic_assethi 32*f60617d3Squic_assethi #define QTI_PWR_LVL0 MPIDR_AFFLVL0 33*f60617d3Squic_assethi #define QTI_PWR_LVL1 MPIDR_AFFLVL1 34*f60617d3Squic_assethi #define QTI_PWR_LVL2 MPIDR_AFFLVL2 35*f60617d3Squic_assethi #define QTI_PWR_LVL3 MPIDR_AFFLVL3 36*f60617d3Squic_assethi 37*f60617d3Squic_assethi /* 38*f60617d3Squic_assethi * Macros for local power states encoded by State-ID field 39*f60617d3Squic_assethi * within the power-state parameter. 40*f60617d3Squic_assethi */ 41*f60617d3Squic_assethi /* Local power state for power domains in Run state. */ 42*f60617d3Squic_assethi #define QTI_LOCAL_STATE_RUN 0 43*f60617d3Squic_assethi /* 44*f60617d3Squic_assethi * Local power state for clock-gating. Valid only for CPU and not cluster power 45*f60617d3Squic_assethi * domains 46*f60617d3Squic_assethi */ 47*f60617d3Squic_assethi #define QTI_LOCAL_STATE_STB 1 48*f60617d3Squic_assethi /* 49*f60617d3Squic_assethi * Local power state for retention. Valid for CPU and cluster power 50*f60617d3Squic_assethi * domains 51*f60617d3Squic_assethi */ 52*f60617d3Squic_assethi #define QTI_LOCAL_STATE_RET 2 53*f60617d3Squic_assethi /* 54*f60617d3Squic_assethi * Local power state for OFF/power down. Valid for CPU, cluster, RSC and PDC 55*f60617d3Squic_assethi * power domains 56*f60617d3Squic_assethi */ 57*f60617d3Squic_assethi #define QTI_LOCAL_STATE_OFF 3 58*f60617d3Squic_assethi /* 59*f60617d3Squic_assethi * Local power state for DEEPOFF/power rail down. Valid for CPU, cluster and RSC 60*f60617d3Squic_assethi * power domains 61*f60617d3Squic_assethi */ 62*f60617d3Squic_assethi #define QTI_LOCAL_STATE_DEEPOFF 4 63*f60617d3Squic_assethi 64*f60617d3Squic_assethi /* 65*f60617d3Squic_assethi * This macro defines the deepest retention state possible. A higher state 66*f60617d3Squic_assethi * id will represent an invalid or a power down state. 67*f60617d3Squic_assethi */ 68*f60617d3Squic_assethi #define PLAT_MAX_RET_STATE QTI_LOCAL_STATE_RET 69*f60617d3Squic_assethi 70*f60617d3Squic_assethi /* 71*f60617d3Squic_assethi * This macro defines the deepest power down states possible. Any state ID 72*f60617d3Squic_assethi * higher than this is invalid. 73*f60617d3Squic_assethi */ 74*f60617d3Squic_assethi #define PLAT_MAX_OFF_STATE QTI_LOCAL_STATE_DEEPOFF 75*f60617d3Squic_assethi 76*f60617d3Squic_assethi /****************************************************************************** 77*f60617d3Squic_assethi * Required platform porting definitions common to all ARM standard platforms 78*f60617d3Squic_assethi *****************************************************************************/ 79*f60617d3Squic_assethi 80*f60617d3Squic_assethi /* 81*f60617d3Squic_assethi * Platform specific page table and MMU setup constants. 82*f60617d3Squic_assethi */ 83*f60617d3Squic_assethi #define MAX_MMAP_REGIONS (PLAT_QTI_MMAP_ENTRIES) 84*f60617d3Squic_assethi 85*f60617d3Squic_assethi #define PLAT_PHY_ADDR_SPACE_SIZE (1ull << 36) 86*f60617d3Squic_assethi #define PLAT_VIRT_ADDR_SPACE_SIZE (1ull << 36) 87*f60617d3Squic_assethi 88*f60617d3Squic_assethi #define ARM_CACHE_WRITEBACK_SHIFT 6 89*f60617d3Squic_assethi 90*f60617d3Squic_assethi /* 91*f60617d3Squic_assethi * Some data must be aligned on the biggest cache line size in the platform. 92*f60617d3Squic_assethi * This is known only to the platform as it might have a combination of 93*f60617d3Squic_assethi * integrated and external caches. 94*f60617d3Squic_assethi */ 95*f60617d3Squic_assethi #define CACHE_WRITEBACK_GRANULE (1 << ARM_CACHE_WRITEBACK_SHIFT) 96*f60617d3Squic_assethi 97*f60617d3Squic_assethi /* 98*f60617d3Squic_assethi * One cache line needed for bakery locks on ARM platforms 99*f60617d3Squic_assethi */ 100*f60617d3Squic_assethi #define PLAT_PERCPU_BAKERY_LOCK_SIZE (1 * CACHE_WRITEBACK_GRANULE) 101*f60617d3Squic_assethi 102*f60617d3Squic_assethi /*----------------------------------------------------------------------------*/ 103*f60617d3Squic_assethi /* PSCI power domain topology definitions */ 104*f60617d3Squic_assethi /*----------------------------------------------------------------------------*/ 105*f60617d3Squic_assethi /* One domain each to represent RSC and PDC level */ 106*f60617d3Squic_assethi #define PLAT_PDC_COUNT 1 107*f60617d3Squic_assethi #define PLAT_RSC_COUNT 1 108*f60617d3Squic_assethi 109*f60617d3Squic_assethi /* There is one top-level FCM cluster */ 110*f60617d3Squic_assethi #define PLAT_CLUSTER_COUNT 1 111*f60617d3Squic_assethi 112*f60617d3Squic_assethi /* No. of cores in the FCM cluster */ 113*f60617d3Squic_assethi #define PLAT_CLUSTER0_CORE_COUNT 8 114*f60617d3Squic_assethi 115*f60617d3Squic_assethi #define PLATFORM_CORE_COUNT (PLAT_CLUSTER0_CORE_COUNT) 116*f60617d3Squic_assethi 117*f60617d3Squic_assethi #define PLAT_NUM_PWR_DOMAINS (PLAT_PDC_COUNT +\ 118*f60617d3Squic_assethi PLAT_RSC_COUNT +\ 119*f60617d3Squic_assethi PLAT_CLUSTER_COUNT +\ 120*f60617d3Squic_assethi PLATFORM_CORE_COUNT) 121*f60617d3Squic_assethi 122*f60617d3Squic_assethi #define PLAT_MAX_PWR_LVL 3 123*f60617d3Squic_assethi 124*f60617d3Squic_assethi /*****************************************************************************/ 125*f60617d3Squic_assethi /* Memory mapped Generic timer interfaces */ 126*f60617d3Squic_assethi /*****************************************************************************/ 127*f60617d3Squic_assethi 128*f60617d3Squic_assethi /*----------------------------------------------------------------------------*/ 129*f60617d3Squic_assethi /* GIC-600 constants */ 130*f60617d3Squic_assethi /*----------------------------------------------------------------------------*/ 131*f60617d3Squic_assethi #define BASE_GICD_BASE 0x17A00000 132*f60617d3Squic_assethi #define BASE_GICR_BASE 0x17A60000 133*f60617d3Squic_assethi #define BASE_GICC_BASE 0x0 134*f60617d3Squic_assethi #define BASE_GICH_BASE 0x0 135*f60617d3Squic_assethi #define BASE_GICV_BASE 0x0 136*f60617d3Squic_assethi 137*f60617d3Squic_assethi #define QTI_GICD_BASE BASE_GICD_BASE 138*f60617d3Squic_assethi #define QTI_GICR_BASE BASE_GICR_BASE 139*f60617d3Squic_assethi #define QTI_GICC_BASE BASE_GICC_BASE 140*f60617d3Squic_assethi 141*f60617d3Squic_assethi /*----------------------------------------------------------------------------*/ 142*f60617d3Squic_assethi 143*f60617d3Squic_assethi /*----------------------------------------------------------------------------*/ 144*f60617d3Squic_assethi /* UART related constants. */ 145*f60617d3Squic_assethi /*----------------------------------------------------------------------------*/ 146*f60617d3Squic_assethi /* BASE ADDRESS OF DIFFERENT REGISTER SPACES IN HW */ 147*f60617d3Squic_assethi #define GENI4_CFG 0x0 148*f60617d3Squic_assethi #define GENI4_IMAGE_REGS 0x100 149*f60617d3Squic_assethi #define GENI4_DATA 0x600 150*f60617d3Squic_assethi 151*f60617d3Squic_assethi /* COMMON STATUS/CONFIGURATION REGISTERS AND MASKS */ 152*f60617d3Squic_assethi #define GENI_STATUS_REG (GENI4_CFG + 0x00000040) 153*f60617d3Squic_assethi #define GENI_STATUS_M_GENI_CMD_ACTIVE_MASK (0x1) 154*f60617d3Squic_assethi #define UART_TX_TRANS_LEN_REG (GENI4_IMAGE_REGS + 0x00000170) 155*f60617d3Squic_assethi /* MASTER/TX ENGINE REGISTERS */ 156*f60617d3Squic_assethi #define GENI_M_CMD0_REG (GENI4_DATA + 0x00000000) 157*f60617d3Squic_assethi /* FIFO, STATUS REGISTERS AND MASKS */ 158*f60617d3Squic_assethi #define GENI_TX_FIFOn_REG (GENI4_DATA + 0x00000100) 159*f60617d3Squic_assethi 160*f60617d3Squic_assethi #define GENI_M_CMD_TX (0x08000000) 161*f60617d3Squic_assethi 162*f60617d3Squic_assethi /*----------------------------------------------------------------------------*/ 163*f60617d3Squic_assethi /* Device address space for mapping. Excluding starting 4K */ 164*f60617d3Squic_assethi /*----------------------------------------------------------------------------*/ 165*f60617d3Squic_assethi #define QTI_DEVICE_BASE 0x1000 166*f60617d3Squic_assethi #define QTI_DEVICE_SIZE (0x80000000 - QTI_DEVICE_BASE) 167*f60617d3Squic_assethi 168*f60617d3Squic_assethi /******************************************************************************* 169*f60617d3Squic_assethi * BL31 specific defines. 170*f60617d3Squic_assethi ******************************************************************************/ 171*f60617d3Squic_assethi /* 172*f60617d3Squic_assethi * Put BL31 at DDR as per memory map. BL31_BASE is calculated using the 173*f60617d3Squic_assethi * current BL31 debug size plus a little space for growth. 174*f60617d3Squic_assethi */ 175*f60617d3Squic_assethi #define BL31_LIMIT (BL31_BASE + BL31_SIZE) 176*f60617d3Squic_assethi 177*f60617d3Squic_assethi /*----------------------------------------------------------------------------*/ 178*f60617d3Squic_assethi /* AOSS registers */ 179*f60617d3Squic_assethi /*----------------------------------------------------------------------------*/ 180*f60617d3Squic_assethi #define QTI_PS_HOLD_REG 0x0C264000 181*f60617d3Squic_assethi /*----------------------------------------------------------------------------*/ 182*f60617d3Squic_assethi /* AOP CMD DB address space for mapping */ 183*f60617d3Squic_assethi /*----------------------------------------------------------------------------*/ 184*f60617d3Squic_assethi #define QTI_AOP_CMD_DB_BASE 0x85F20000 185*f60617d3Squic_assethi #define QTI_AOP_CMD_DB_SIZE 0x00020000 186*f60617d3Squic_assethi /*----------------------------------------------------------------------------*/ 187*f60617d3Squic_assethi /* SOC hw version register */ 188*f60617d3Squic_assethi /*----------------------------------------------------------------------------*/ 189*f60617d3Squic_assethi #define QTI_SOC_VERSION_MASK U(0xFFFF) 190*f60617d3Squic_assethi #define QTI_SOC_REVISION_REG 0x1FC8000 191*f60617d3Squic_assethi #define QTI_SOC_REVISION_MASK U(0xFFFF) 192*f60617d3Squic_assethi /*----------------------------------------------------------------------------*/ 193*f60617d3Squic_assethi /* LC PON register offsets */ 194*f60617d3Squic_assethi /*----------------------------------------------------------------------------*/ 195*f60617d3Squic_assethi #define PON_PS_HOLD_RESET_CTL 0x85a 196*f60617d3Squic_assethi #define PON_PS_HOLD_RESET_CTL2 0x85b 197*f60617d3Squic_assethi /*----------------------------------------------------------------------------*/ 198*f60617d3Squic_assethi 199*f60617d3Squic_assethi #endif /* PLATFORM_DEF_H */ 200