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