1*cc708597SJiafei Pan /* 2*cc708597SJiafei Pan * Copyright 2018-2022 NXP 3*cc708597SJiafei Pan * 4*cc708597SJiafei Pan * SPDX-License-Identifier: BSD-3-Clause 5*cc708597SJiafei Pan * 6*cc708597SJiafei Pan */ 7*cc708597SJiafei Pan 8*cc708597SJiafei Pan #ifndef SOC_H 9*cc708597SJiafei Pan #define SOC_H 10*cc708597SJiafei Pan 11*cc708597SJiafei Pan /* Chassis specific defines - common across SoC's of a particular platform */ 12*cc708597SJiafei Pan #include <dcfg_lsch2.h> 13*cc708597SJiafei Pan 14*cc708597SJiafei Pan #include <soc_default_base_addr.h> 15*cc708597SJiafei Pan #include <soc_default_helper_macros.h> 16*cc708597SJiafei Pan 17*cc708597SJiafei Pan /* DDR Regions Info */ 18*cc708597SJiafei Pan #define NUM_DRAM_REGIONS U(3) 19*cc708597SJiafei Pan #define NXP_DRAM0_ADDR ULL(0x80000000) 20*cc708597SJiafei Pan #define NXP_DRAM0_MAX_SIZE ULL(0x80000000) /* 2 GB */ 21*cc708597SJiafei Pan 22*cc708597SJiafei Pan #define NXP_DRAM1_ADDR ULL(0x880000000) 23*cc708597SJiafei Pan #define NXP_DRAM1_MAX_SIZE ULL(0x780000000) /* 30 GB */ 24*cc708597SJiafei Pan 25*cc708597SJiafei Pan #define NXP_DRAM2_ADDR ULL(0x8800000000) 26*cc708597SJiafei Pan #define NXP_DRAM2_MAX_SIZE ULL(0x7800000000) /* 480 GB */ 27*cc708597SJiafei Pan 28*cc708597SJiafei Pan /*DRAM0 Size defined in platform_def.h */ 29*cc708597SJiafei Pan #define NXP_DRAM0_SIZE PLAT_DEF_DRAM0_SIZE 30*cc708597SJiafei Pan 31*cc708597SJiafei Pan /* 32*cc708597SJiafei Pan * SVR Definition (not include major and minor rev) 33*cc708597SJiafei Pan * A: without security 34*cc708597SJiafei Pan * AE: with security 35*cc708597SJiafei Pan */ 36*cc708597SJiafei Pan #define SVR_LS1026A 0x870709 37*cc708597SJiafei Pan #define SVR_LS1026AE 0x870708 38*cc708597SJiafei Pan #define SVR_LS1046A 0x870701 39*cc708597SJiafei Pan #define SVR_LS1046AE 0x870700 40*cc708597SJiafei Pan 41*cc708597SJiafei Pan /* Number of cores in platform */ 42*cc708597SJiafei Pan /* Used by common code for array initialization */ 43*cc708597SJiafei Pan #define NUMBER_OF_CLUSTERS U(1) 44*cc708597SJiafei Pan #define CORES_PER_CLUSTER U(4) 45*cc708597SJiafei Pan #define PLATFORM_CORE_COUNT (NUMBER_OF_CLUSTERS * CORES_PER_CLUSTER) 46*cc708597SJiafei Pan 47*cc708597SJiafei Pan /* 48*cc708597SJiafei Pan * Required LS standard platform porting definitions 49*cc708597SJiafei Pan * for CCI-400 50*cc708597SJiafei Pan */ 51*cc708597SJiafei Pan #define NXP_CCI_CLUSTER0_SL_IFACE_IX 4 52*cc708597SJiafei Pan 53*cc708597SJiafei Pan 54*cc708597SJiafei Pan /* Defines required for using XLAT tables from ARM common code */ 55*cc708597SJiafei Pan #define PLAT_PHY_ADDR_SPACE_SIZE (1ULL << 40) 56*cc708597SJiafei Pan #define PLAT_VIRT_ADDR_SPACE_SIZE (1ULL << 40) 57*cc708597SJiafei Pan 58*cc708597SJiafei Pan /* Clock Divisors */ 59*cc708597SJiafei Pan #define NXP_PLATFORM_CLK_DIVIDER U(1) 60*cc708597SJiafei Pan #define NXP_UART_CLK_DIVIDER U(2) 61*cc708597SJiafei Pan 62*cc708597SJiafei Pan /* set to 0 if the clusters are not symmetrical */ 63*cc708597SJiafei Pan #define SYMMETRICAL_CLUSTERS U(1) 64*cc708597SJiafei Pan 65*cc708597SJiafei Pan /* 66*cc708597SJiafei Pan * set this switch to 1 if you need to keep the debug block 67*cc708597SJiafei Pan * clocked during system power-down 68*cc708597SJiafei Pan */ 69*cc708597SJiafei Pan #define DEBUG_ACTIVE 0 70*cc708597SJiafei Pan 71*cc708597SJiafei Pan /* 72*cc708597SJiafei Pan * pwr mgmt features supported in the soc-specific code: 73*cc708597SJiafei Pan * value == 0x0 the soc code does not support this feature 74*cc708597SJiafei Pan * value != 0x0 the soc code supports this feature 75*cc708597SJiafei Pan */ 76*cc708597SJiafei Pan #define SOC_CORE_RELEASE 0x1 77*cc708597SJiafei Pan #define SOC_CORE_RESTART 0x1 78*cc708597SJiafei Pan #define SOC_CORE_OFF 0x1 79*cc708597SJiafei Pan #define SOC_CORE_STANDBY 0x1 80*cc708597SJiafei Pan #define SOC_CORE_PWR_DWN 0x1 81*cc708597SJiafei Pan #define SOC_CLUSTER_STANDBY 0x1 82*cc708597SJiafei Pan #define SOC_CLUSTER_PWR_DWN 0x1 83*cc708597SJiafei Pan #define SOC_SYSTEM_STANDBY 0x1 84*cc708597SJiafei Pan #define SOC_SYSTEM_PWR_DWN 0x1 85*cc708597SJiafei Pan #define SOC_SYSTEM_OFF 0x1 86*cc708597SJiafei Pan #define SOC_SYSTEM_RESET 0x1 87*cc708597SJiafei Pan 88*cc708597SJiafei Pan /* Start: Macros used by lib/psci files */ 89*cc708597SJiafei Pan #define SYSTEM_PWR_DOMAINS 1 90*cc708597SJiafei Pan #define PLAT_NUM_PWR_DOMAINS (PLATFORM_CORE_COUNT + \ 91*cc708597SJiafei Pan NUMBER_OF_CLUSTERS + \ 92*cc708597SJiafei Pan SYSTEM_PWR_DOMAINS) 93*cc708597SJiafei Pan 94*cc708597SJiafei Pan /* Power state coordination occurs at the system level */ 95*cc708597SJiafei Pan #define PLAT_MAX_PWR_LVL MPIDR_AFFLVL2 96*cc708597SJiafei Pan 97*cc708597SJiafei Pan /* define retention state */ 98*cc708597SJiafei Pan #define PLAT_MAX_RET_STATE (PSCI_LOCAL_STATE_RUN + 1) 99*cc708597SJiafei Pan 100*cc708597SJiafei Pan /* define power-down state */ 101*cc708597SJiafei Pan #define PLAT_MAX_OFF_STATE (PLAT_MAX_RET_STATE + 1) 102*cc708597SJiafei Pan 103*cc708597SJiafei Pan /* 104*cc708597SJiafei Pan * Some data must be aligned on the biggest cache line size in the platform. 105*cc708597SJiafei Pan * This is known only to the platform as it might have a combination of 106*cc708597SJiafei Pan * integrated and external caches. 107*cc708597SJiafei Pan * 108*cc708597SJiafei Pan * CACHE_WRITEBACK_GRANULE is defined in soc.def 109*cc708597SJiafei Pan */ 110*cc708597SJiafei Pan 111*cc708597SJiafei Pan /* One cache line needed for bakery locks on ARM platforms */ 112*cc708597SJiafei Pan #define PLAT_PERCPU_BAKERY_LOCK_SIZE (1 * CACHE_WRITEBACK_GRANULE) 113*cc708597SJiafei Pan 114*cc708597SJiafei Pan #ifndef __ASSEMBLER__ 115*cc708597SJiafei Pan /* CCI slave interfaces */ 116*cc708597SJiafei Pan static const int cci_map[] = { 117*cc708597SJiafei Pan NXP_CCI_CLUSTER0_SL_IFACE_IX, 118*cc708597SJiafei Pan }; 119*cc708597SJiafei Pan 120*cc708597SJiafei Pan void soc_init_lowlevel(void); 121*cc708597SJiafei Pan void soc_init_percpu(void); 122*cc708597SJiafei Pan void _soc_set_start_addr(unsigned long addr); 123*cc708597SJiafei Pan #endif 124*cc708597SJiafei Pan 125*cc708597SJiafei Pan #endif /* SOC_H */ 126