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