15bd9c17dSSaurabh Gorecha /* 25bd9c17dSSaurabh Gorecha * Copyright (c) 2018, ARM Limited and Contributors. All rights reserved. 35bd9c17dSSaurabh Gorecha * Copyright (c) 2018-2020, The Linux Foundation. All rights reserved. 45bd9c17dSSaurabh Gorecha * 55bd9c17dSSaurabh Gorecha * SPDX-License-Identifier: BSD-3-Clause 65bd9c17dSSaurabh Gorecha */ 75bd9c17dSSaurabh Gorecha #ifndef PLATFORM_DEF_H 85bd9c17dSSaurabh Gorecha #define PLATFORM_DEF_H 95bd9c17dSSaurabh Gorecha 105bd9c17dSSaurabh Gorecha #include <common_def.h> 115bd9c17dSSaurabh Gorecha 125bd9c17dSSaurabh Gorecha #include <qti_board_def.h> 135bd9c17dSSaurabh Gorecha #include <qtiseclib_defs_plat.h> 145bd9c17dSSaurabh Gorecha 155bd9c17dSSaurabh Gorecha /*----------------------------------------------------------------------------*/ 165bd9c17dSSaurabh Gorecha 175bd9c17dSSaurabh Gorecha /*----------------------------------------------------------------------------*/ 185bd9c17dSSaurabh Gorecha /* 195bd9c17dSSaurabh Gorecha * MPIDR_PRIMARY_CPU 205bd9c17dSSaurabh Gorecha * You just need to have the correct core_affinity_val i.e. [7:0] 215bd9c17dSSaurabh Gorecha * and cluster_affinity_val i.e. [15:8] 225bd9c17dSSaurabh Gorecha * the other bits will be ignored 235bd9c17dSSaurabh Gorecha */ 245bd9c17dSSaurabh Gorecha /*----------------------------------------------------------------------------*/ 255bd9c17dSSaurabh Gorecha #define MPIDR_PRIMARY_CPU 0x0000 265bd9c17dSSaurabh Gorecha /*----------------------------------------------------------------------------*/ 275bd9c17dSSaurabh Gorecha 285bd9c17dSSaurabh Gorecha #define QTI_PWR_LVL0 MPIDR_AFFLVL0 295bd9c17dSSaurabh Gorecha #define QTI_PWR_LVL1 MPIDR_AFFLVL1 305bd9c17dSSaurabh Gorecha #define QTI_PWR_LVL2 MPIDR_AFFLVL2 315bd9c17dSSaurabh Gorecha #define QTI_PWR_LVL3 MPIDR_AFFLVL3 325bd9c17dSSaurabh Gorecha 335bd9c17dSSaurabh Gorecha /* 345bd9c17dSSaurabh Gorecha * Macros for local power states encoded by State-ID field 355bd9c17dSSaurabh Gorecha * within the power-state parameter. 365bd9c17dSSaurabh Gorecha */ 375bd9c17dSSaurabh Gorecha /* Local power state for power domains in Run state. */ 385bd9c17dSSaurabh Gorecha #define QTI_LOCAL_STATE_RUN 0 395bd9c17dSSaurabh Gorecha /* 405bd9c17dSSaurabh Gorecha * Local power state for clock-gating. Valid only for CPU and not cluster power 415bd9c17dSSaurabh Gorecha * domains 425bd9c17dSSaurabh Gorecha */ 435bd9c17dSSaurabh Gorecha #define QTI_LOCAL_STATE_STB 1 445bd9c17dSSaurabh Gorecha /* 455bd9c17dSSaurabh Gorecha * Local power state for retention. Valid for CPU and cluster power 465bd9c17dSSaurabh Gorecha * domains 475bd9c17dSSaurabh Gorecha */ 485bd9c17dSSaurabh Gorecha #define QTI_LOCAL_STATE_RET 2 495bd9c17dSSaurabh Gorecha /* 505bd9c17dSSaurabh Gorecha * Local power state for OFF/power down. Valid for CPU, cluster, RSC and PDC 515bd9c17dSSaurabh Gorecha * power domains 525bd9c17dSSaurabh Gorecha */ 535bd9c17dSSaurabh Gorecha #define QTI_LOCAL_STATE_OFF 3 545bd9c17dSSaurabh Gorecha /* 555bd9c17dSSaurabh Gorecha * Local power state for DEEPOFF/power rail down. Valid for CPU, cluster and RSC 565bd9c17dSSaurabh Gorecha * power domains 575bd9c17dSSaurabh Gorecha */ 585bd9c17dSSaurabh Gorecha #define QTI_LOCAL_STATE_DEEPOFF 4 595bd9c17dSSaurabh Gorecha 605bd9c17dSSaurabh Gorecha /* 615bd9c17dSSaurabh Gorecha * This macro defines the deepest retention state possible. A higher state 625bd9c17dSSaurabh Gorecha * id will represent an invalid or a power down state. 635bd9c17dSSaurabh Gorecha */ 645bd9c17dSSaurabh Gorecha #define PLAT_MAX_RET_STATE QTI_LOCAL_STATE_RET 655bd9c17dSSaurabh Gorecha 665bd9c17dSSaurabh Gorecha /* 675bd9c17dSSaurabh Gorecha * This macro defines the deepest power down states possible. Any state ID 685bd9c17dSSaurabh Gorecha * higher than this is invalid. 695bd9c17dSSaurabh Gorecha */ 705bd9c17dSSaurabh Gorecha #define PLAT_MAX_OFF_STATE QTI_LOCAL_STATE_DEEPOFF 715bd9c17dSSaurabh Gorecha 725bd9c17dSSaurabh Gorecha /****************************************************************************** 735bd9c17dSSaurabh Gorecha * Required platform porting definitions common to all ARM standard platforms 745bd9c17dSSaurabh Gorecha *****************************************************************************/ 755bd9c17dSSaurabh Gorecha 765bd9c17dSSaurabh Gorecha /* 775bd9c17dSSaurabh Gorecha * Platform specific page table and MMU setup constants. 785bd9c17dSSaurabh Gorecha */ 795bd9c17dSSaurabh Gorecha #define MAX_MMAP_REGIONS (PLAT_QTI_MMAP_ENTRIES) 805bd9c17dSSaurabh Gorecha 815bd9c17dSSaurabh Gorecha #define PLAT_PHY_ADDR_SPACE_SIZE (1ull << 36) 825bd9c17dSSaurabh Gorecha #define PLAT_VIRT_ADDR_SPACE_SIZE (1ull << 36) 835bd9c17dSSaurabh Gorecha 845bd9c17dSSaurabh Gorecha #define ARM_CACHE_WRITEBACK_SHIFT 6 855bd9c17dSSaurabh Gorecha 865bd9c17dSSaurabh Gorecha /* 875bd9c17dSSaurabh Gorecha * Some data must be aligned on the biggest cache line size in the platform. 885bd9c17dSSaurabh Gorecha * This is known only to the platform as it might have a combination of 895bd9c17dSSaurabh Gorecha * integrated and external caches. 905bd9c17dSSaurabh Gorecha */ 915bd9c17dSSaurabh Gorecha #define CACHE_WRITEBACK_GRANULE (1 << ARM_CACHE_WRITEBACK_SHIFT) 925bd9c17dSSaurabh Gorecha 935bd9c17dSSaurabh Gorecha /* 945bd9c17dSSaurabh Gorecha * One cache line needed for bakery locks on ARM platforms 955bd9c17dSSaurabh Gorecha */ 965bd9c17dSSaurabh Gorecha #define PLAT_PERCPU_BAKERY_LOCK_SIZE (1 * CACHE_WRITEBACK_GRANULE) 975bd9c17dSSaurabh Gorecha 985bd9c17dSSaurabh Gorecha /*----------------------------------------------------------------------------*/ 995bd9c17dSSaurabh Gorecha /* PSCI power domain topology definitions */ 1005bd9c17dSSaurabh Gorecha /*----------------------------------------------------------------------------*/ 1015bd9c17dSSaurabh Gorecha /* One domain each to represent RSC and PDC level */ 1025bd9c17dSSaurabh Gorecha #define PLAT_PDC_COUNT 1 1035bd9c17dSSaurabh Gorecha #define PLAT_RSC_COUNT 1 1045bd9c17dSSaurabh Gorecha 1055bd9c17dSSaurabh Gorecha /* There is one top-level FCM cluster */ 1065bd9c17dSSaurabh Gorecha #define PLAT_CLUSTER_COUNT 1 1075bd9c17dSSaurabh Gorecha 1085bd9c17dSSaurabh Gorecha /* No. of cores in the FCM cluster */ 1095bd9c17dSSaurabh Gorecha #define PLAT_CLUSTER0_CORE_COUNT 8 1105bd9c17dSSaurabh Gorecha 1115bd9c17dSSaurabh Gorecha #define PLATFORM_CORE_COUNT (PLAT_CLUSTER0_CORE_COUNT) 1125bd9c17dSSaurabh Gorecha 1135bd9c17dSSaurabh Gorecha #define PLAT_NUM_PWR_DOMAINS (PLAT_PDC_COUNT +\ 1145bd9c17dSSaurabh Gorecha PLAT_RSC_COUNT +\ 1155bd9c17dSSaurabh Gorecha PLAT_CLUSTER_COUNT +\ 1165bd9c17dSSaurabh Gorecha PLATFORM_CORE_COUNT) 1175bd9c17dSSaurabh Gorecha 1185bd9c17dSSaurabh Gorecha #define PLAT_MAX_PWR_LVL 3 1195bd9c17dSSaurabh Gorecha 1205bd9c17dSSaurabh Gorecha /*****************************************************************************/ 1215bd9c17dSSaurabh Gorecha /* Memory mapped Generic timer interfaces */ 1225bd9c17dSSaurabh Gorecha /*****************************************************************************/ 1235bd9c17dSSaurabh Gorecha 1245bd9c17dSSaurabh Gorecha /*----------------------------------------------------------------------------*/ 1255bd9c17dSSaurabh Gorecha /* GIC-600 constants */ 1265bd9c17dSSaurabh Gorecha /*----------------------------------------------------------------------------*/ 1275bd9c17dSSaurabh Gorecha #define BASE_GICD_BASE 0x17A00000 1285bd9c17dSSaurabh Gorecha #define BASE_GICR_BASE 0x17A60000 1295bd9c17dSSaurabh Gorecha #define BASE_GICC_BASE 0x0 1305bd9c17dSSaurabh Gorecha #define BASE_GICH_BASE 0x0 1315bd9c17dSSaurabh Gorecha #define BASE_GICV_BASE 0x0 1325bd9c17dSSaurabh Gorecha 1335bd9c17dSSaurabh Gorecha #define QTI_GICD_BASE BASE_GICD_BASE 1345bd9c17dSSaurabh Gorecha #define QTI_GICR_BASE BASE_GICR_BASE 1355bd9c17dSSaurabh Gorecha #define QTI_GICC_BASE BASE_GICC_BASE 1365bd9c17dSSaurabh Gorecha 1375bd9c17dSSaurabh Gorecha /*----------------------------------------------------------------------------*/ 1385bd9c17dSSaurabh Gorecha 1395bd9c17dSSaurabh Gorecha /*----------------------------------------------------------------------------*/ 1405bd9c17dSSaurabh Gorecha /* UART related constants. */ 1415bd9c17dSSaurabh Gorecha /*----------------------------------------------------------------------------*/ 142*5a122759SOlivier Deprez #define PLAT_QTI_UART_BASE 0xa88000 1435bd9c17dSSaurabh Gorecha /* BASE ADDRESS OF DIFFERENT REGISTER SPACES IN HW */ 1445bd9c17dSSaurabh Gorecha #define GENI4_CFG 0x0 1455bd9c17dSSaurabh Gorecha #define GENI4_IMAGE_REGS 0x100 1465bd9c17dSSaurabh Gorecha #define GENI4_DATA 0x600 1475bd9c17dSSaurabh Gorecha 1485bd9c17dSSaurabh Gorecha /* COMMON STATUS/CONFIGURATION REGISTERS AND MASKS */ 1495bd9c17dSSaurabh Gorecha #define GENI_STATUS_REG (GENI4_CFG + 0x00000040) 1505bd9c17dSSaurabh Gorecha #define GENI_STATUS_M_GENI_CMD_ACTIVE_MASK (0x1) 1515bd9c17dSSaurabh Gorecha #define UART_TX_TRANS_LEN_REG (GENI4_IMAGE_REGS + 0x00000170) 1525bd9c17dSSaurabh Gorecha /* MASTER/TX ENGINE REGISTERS */ 1535bd9c17dSSaurabh Gorecha #define GENI_M_CMD0_REG (GENI4_DATA + 0x00000000) 1545bd9c17dSSaurabh Gorecha /* FIFO, STATUS REGISTERS AND MASKS */ 1555bd9c17dSSaurabh Gorecha #define GENI_TX_FIFOn_REG (GENI4_DATA + 0x00000100) 1565bd9c17dSSaurabh Gorecha 1575bd9c17dSSaurabh Gorecha #define GENI_M_CMD_TX (0x08000000) 1585bd9c17dSSaurabh Gorecha 1595bd9c17dSSaurabh Gorecha /*----------------------------------------------------------------------------*/ 1601b9f8ec7SSumit Garg /* Peripherals base addresses */ 1611b9f8ec7SSumit Garg /*----------------------------------------------------------------------------*/ 1621b9f8ec7SSumit Garg #define QTI_SEC_PRNG_BASE 0x790000 1631b9f8ec7SSumit Garg 1641b9f8ec7SSumit Garg /*----------------------------------------------------------------------------*/ 1655bd9c17dSSaurabh Gorecha /* Device address space for mapping. Excluding starting 4K */ 1665bd9c17dSSaurabh Gorecha /*----------------------------------------------------------------------------*/ 1675bd9c17dSSaurabh Gorecha #define QTI_DEVICE_BASE 0x1000 1685bd9c17dSSaurabh Gorecha #define QTI_DEVICE_SIZE (0x80000000 - QTI_DEVICE_BASE) 1695bd9c17dSSaurabh Gorecha 1705bd9c17dSSaurabh Gorecha /******************************************************************************* 1715bd9c17dSSaurabh Gorecha * BL31 specific defines. 1725bd9c17dSSaurabh Gorecha ******************************************************************************/ 1735bd9c17dSSaurabh Gorecha /* 1745bd9c17dSSaurabh Gorecha * Put BL31 at DDR as per memory map. BL31_BASE is calculated using the 1755bd9c17dSSaurabh Gorecha * current BL31 debug size plus a little space for growth. 1765bd9c17dSSaurabh Gorecha */ 1775bd9c17dSSaurabh Gorecha #define BL31_LIMIT (BL31_BASE + BL31_SIZE) 1785bd9c17dSSaurabh Gorecha 179522a2277SJulius Werner /*----------------------------------------------------------------------------*/ 180522a2277SJulius Werner /* AOSS registers */ 181522a2277SJulius Werner /*----------------------------------------------------------------------------*/ 182522a2277SJulius Werner #define QTI_PS_HOLD_REG 0x0C264000 183522a2277SJulius Werner /*----------------------------------------------------------------------------*/ 1844b918452SSaurabh Gorecha /* AOP CMD DB address space for mapping */ 1854b918452SSaurabh Gorecha /*----------------------------------------------------------------------------*/ 1864b918452SSaurabh Gorecha #define QTI_AOP_CMD_DB_BASE 0x80820000 1874b918452SSaurabh Gorecha #define QTI_AOP_CMD_DB_SIZE 0x00020000 1884b918452SSaurabh Gorecha /*----------------------------------------------------------------------------*/ 1894b918452SSaurabh Gorecha /* SOC hw version register */ 1904b918452SSaurabh Gorecha /*----------------------------------------------------------------------------*/ 1914b918452SSaurabh Gorecha #define QTI_SOC_VERSION_MASK U(0xFFFF) 1924b918452SSaurabh Gorecha #define QTI_SOC_REVISION_REG 0x1FC8000 1934b918452SSaurabh Gorecha #define QTI_SOC_REVISION_MASK U(0xFFFF) 1944b918452SSaurabh Gorecha /*----------------------------------------------------------------------------*/ 195b8a05116SShelley Chen /* LC PON register offsets */ 196b8a05116SShelley Chen /*----------------------------------------------------------------------------*/ 197b8a05116SShelley Chen #define PON_PS_HOLD_RESET_CTL 0x85a 198b8a05116SShelley Chen #define PON_PS_HOLD_RESET_CTL2 0x85b 199b8a05116SShelley Chen /*----------------------------------------------------------------------------*/ 200522a2277SJulius Werner 2015bd9c17dSSaurabh Gorecha #endif /* PLATFORM_DEF_H */ 202