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