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