1*9d250f03SJiafei Pan /* 2*9d250f03SJiafei Pan * Copyright 2018-2021 NXP 3*9d250f03SJiafei Pan * 4*9d250f03SJiafei Pan * SPDX-License-Identifier: BSD-3-Clause 5*9d250f03SJiafei Pan */ 6*9d250f03SJiafei Pan 7*9d250f03SJiafei Pan #ifndef SOC_H 8*9d250f03SJiafei Pan #define SOC_H 9*9d250f03SJiafei Pan 10*9d250f03SJiafei Pan /* Chassis specific defines - common across SoC's of a particular platform */ 11*9d250f03SJiafei Pan #include <dcfg_lsch3.h> 12*9d250f03SJiafei Pan #include <soc_default_base_addr.h> 13*9d250f03SJiafei Pan #include <soc_default_helper_macros.h> 14*9d250f03SJiafei Pan 15*9d250f03SJiafei Pan /* 16*9d250f03SJiafei Pan * SVR Definition of LS1028A 17*9d250f03SJiafei Pan * (not include major and minor rev) 18*9d250f03SJiafei Pan * These info is listed in Table B-6. DCFG differences 19*9d250f03SJiafei Pan * between LS1028A and LS1027A of LS1028ARM(Reference Manual) 20*9d250f03SJiafei Pan */ 21*9d250f03SJiafei Pan #define SVR_LS1017AN 0x870B25 22*9d250f03SJiafei Pan #define SVR_LS1017AE 0x870B24 23*9d250f03SJiafei Pan #define SVR_LS1018AN 0x870B21 24*9d250f03SJiafei Pan #define SVR_LS1018AE 0x870B20 25*9d250f03SJiafei Pan #define SVR_LS1027AN 0x870B05 26*9d250f03SJiafei Pan #define SVR_LS1027AE 0x870B04 27*9d250f03SJiafei Pan #define SVR_LS1028AN 0x870B01 28*9d250f03SJiafei Pan #define SVR_LS1028AE 0x870B00 29*9d250f03SJiafei Pan 30*9d250f03SJiafei Pan /* Number of cores in platform */ 31*9d250f03SJiafei Pan #define PLATFORM_CORE_COUNT 2 32*9d250f03SJiafei Pan #define NUMBER_OF_CLUSTERS 1 33*9d250f03SJiafei Pan #define CORES_PER_CLUSTER 2 34*9d250f03SJiafei Pan 35*9d250f03SJiafei Pan /* Set to 0 if the clusters are not symmetrical */ 36*9d250f03SJiafei Pan #define SYMMETRICAL_CLUSTERS 1 37*9d250f03SJiafei Pan 38*9d250f03SJiafei Pan #define NUM_DRAM_REGIONS 3 39*9d250f03SJiafei Pan 40*9d250f03SJiafei Pan #define NXP_DRAM0_ADDR 0x80000000 41*9d250f03SJiafei Pan #define NXP_DRAM0_MAX_SIZE 0x80000000 /* 2GB */ 42*9d250f03SJiafei Pan 43*9d250f03SJiafei Pan #define NXP_DRAM1_ADDR 0x2080000000 44*9d250f03SJiafei Pan #define NXP_DRAM1_MAX_SIZE 0x1F80000000 /* 126G */ 45*9d250f03SJiafei Pan 46*9d250f03SJiafei Pan #define NXP_DRAM2_ADDR 0x6000000000 47*9d250f03SJiafei Pan #define NXP_DRAM2_MAX_SIZE 0x2000000000 /* 128G */ 48*9d250f03SJiafei Pan 49*9d250f03SJiafei Pan /* DRAM0 Size defined in platform_def.h */ 50*9d250f03SJiafei Pan #define NXP_DRAM0_SIZE PLAT_DEF_DRAM0_SIZE 51*9d250f03SJiafei Pan 52*9d250f03SJiafei Pan /* CCSR space memory Map */ 53*9d250f03SJiafei Pan #undef NXP_UART_ADDR 54*9d250f03SJiafei Pan #define NXP_UART_ADDR 0x021C0500 55*9d250f03SJiafei Pan 56*9d250f03SJiafei Pan #undef NXP_UART1_ADDR 57*9d250f03SJiafei Pan #define NXP_UART1_ADDR 0x021C0600 58*9d250f03SJiafei Pan 59*9d250f03SJiafei Pan #undef NXP_WDOG1_TZ_ADDR 60*9d250f03SJiafei Pan #define NXP_WDOG1_TZ_ADDR 0x023C0000 61*9d250f03SJiafei Pan 62*9d250f03SJiafei Pan #undef NXP_GICR_ADDR 63*9d250f03SJiafei Pan #define NXP_GICR_ADDR 0x06040000 64*9d250f03SJiafei Pan 65*9d250f03SJiafei Pan #undef NXP_GICR_SGI_ADDR 66*9d250f03SJiafei Pan #define NXP_GICR_SGI_ADDR 0x06050000 67*9d250f03SJiafei Pan 68*9d250f03SJiafei Pan /* EPU register offsets and values */ 69*9d250f03SJiafei Pan #define EPU_EPGCR_OFFSET 0x0 70*9d250f03SJiafei Pan #define EPU_EPIMCR10_OFFSET 0x128 71*9d250f03SJiafei Pan #define EPU_EPCTR10_OFFSET 0xa28 72*9d250f03SJiafei Pan #define EPU_EPCCR10_OFFSET 0x828 73*9d250f03SJiafei Pan #define EPU_EPCCR10_VAL 0xb2800000 74*9d250f03SJiafei Pan #define EPU_EPIMCR10_VAL 0xba000000 75*9d250f03SJiafei Pan #define EPU_EPCTR10_VAL 0x0 76*9d250f03SJiafei Pan #define EPU_EPGCR_VAL (1 << 31) 77*9d250f03SJiafei Pan 78*9d250f03SJiafei Pan /* PORSR1 */ 79*9d250f03SJiafei Pan #define PORSR1_RCW_MASK 0x07800000 80*9d250f03SJiafei Pan #define PORSR1_RCW_SHIFT 23 81*9d250f03SJiafei Pan 82*9d250f03SJiafei Pan #define SDHC1_VAL 0x8 83*9d250f03SJiafei Pan #define SDHC2_VAL 0x9 84*9d250f03SJiafei Pan #define I2C1_VAL 0xa 85*9d250f03SJiafei Pan #define FLEXSPI_NAND2K_VAL 0xc 86*9d250f03SJiafei Pan #define FLEXSPI_NAND4K_VAL 0xd 87*9d250f03SJiafei Pan #define FLEXSPI_NOR 0xf 88*9d250f03SJiafei Pan 89*9d250f03SJiafei Pan /* 90*9d250f03SJiafei Pan * Required LS standard platform porting definitions 91*9d250f03SJiafei Pan * for CCI-400 92*9d250f03SJiafei Pan */ 93*9d250f03SJiafei Pan #define NXP_CCI_CLUSTER0_SL_IFACE_IX 4 94*9d250f03SJiafei Pan 95*9d250f03SJiafei Pan /* Defines required for using XLAT tables from ARM common code */ 96*9d250f03SJiafei Pan #define PLAT_PHY_ADDR_SPACE_SIZE (1ull << 40) 97*9d250f03SJiafei Pan #define PLAT_VIRT_ADDR_SPACE_SIZE (1ull << 40) 98*9d250f03SJiafei Pan 99*9d250f03SJiafei Pan /* Clock Divisors */ 100*9d250f03SJiafei Pan #define NXP_PLATFORM_CLK_DIVIDER 1 101*9d250f03SJiafei Pan #define NXP_UART_CLK_DIVIDER 2 102*9d250f03SJiafei Pan 103*9d250f03SJiafei Pan /* dcfg register offsets and values */ 104*9d250f03SJiafei Pan #define DCFG_DEVDISR2_ENETC (1 << 31) 105*9d250f03SJiafei Pan 106*9d250f03SJiafei Pan #define MPIDR_AFFINITY0_MASK 0x00FF 107*9d250f03SJiafei Pan #define MPIDR_AFFINITY1_MASK 0xFF00 108*9d250f03SJiafei Pan #define CPUECTLR_DISABLE_TWALK_PREFETCH 0x4000000000 109*9d250f03SJiafei Pan #define CPUECTLR_INS_PREFETCH_MASK 0x1800000000 110*9d250f03SJiafei Pan #define CPUECTLR_DAT_PREFETCH_MASK 0x0300000000 111*9d250f03SJiafei Pan #define OSDLR_EL1_DLK_LOCK 0x1 112*9d250f03SJiafei Pan #define CNTP_CTL_EL0_EN 0x1 113*9d250f03SJiafei Pan #define CNTP_CTL_EL0_IMASK 0x2 114*9d250f03SJiafei Pan 115*9d250f03SJiafei Pan #define SYSTEM_PWR_DOMAINS 1 116*9d250f03SJiafei Pan #define PLAT_NUM_PWR_DOMAINS (PLATFORM_CORE_COUNT + \ 117*9d250f03SJiafei Pan NUMBER_OF_CLUSTERS + \ 118*9d250f03SJiafei Pan SYSTEM_PWR_DOMAINS) 119*9d250f03SJiafei Pan 120*9d250f03SJiafei Pan /* Power state coordination occurs at the system level */ 121*9d250f03SJiafei Pan #define PLAT_PD_COORD_LVL MPIDR_AFFLVL2 122*9d250f03SJiafei Pan #define PLAT_MAX_PWR_LVL PLAT_PD_COORD_LVL 123*9d250f03SJiafei Pan 124*9d250f03SJiafei Pan /* Local power state for power domains in Run state */ 125*9d250f03SJiafei Pan #define LS_LOCAL_STATE_RUN PSCI_LOCAL_STATE_RUN 126*9d250f03SJiafei Pan 127*9d250f03SJiafei Pan /* define retention state */ 128*9d250f03SJiafei Pan #define PLAT_MAX_RET_STATE (PSCI_LOCAL_STATE_RUN + 1) 129*9d250f03SJiafei Pan #define LS_LOCAL_STATE_RET PLAT_MAX_RET_STATE 130*9d250f03SJiafei Pan 131*9d250f03SJiafei Pan /* define power-down state */ 132*9d250f03SJiafei Pan #define PLAT_MAX_OFF_STATE (PLAT_MAX_RET_STATE + 1) 133*9d250f03SJiafei Pan #define LS_LOCAL_STATE_OFF PLAT_MAX_OFF_STATE 134*9d250f03SJiafei Pan 135*9d250f03SJiafei Pan /* One cache line needed for bakery locks on ARM platforms */ 136*9d250f03SJiafei Pan #define PLAT_PERCPU_BAKERY_LOCK_SIZE (1 * CACHE_WRITEBACK_GRANULE) 137*9d250f03SJiafei Pan 138*9d250f03SJiafei Pan #ifndef __ASSEMBLER__ 139*9d250f03SJiafei Pan /* CCI slave interfaces */ 140*9d250f03SJiafei Pan static const int cci_map[] = { 141*9d250f03SJiafei Pan NXP_CCI_CLUSTER0_SL_IFACE_IX, 142*9d250f03SJiafei Pan }; 143*9d250f03SJiafei Pan void soc_init_lowlevel(void); 144*9d250f03SJiafei Pan void soc_init_percpu(void); 145*9d250f03SJiafei Pan void _soc_set_start_addr(unsigned long addr); 146*9d250f03SJiafei Pan void _set_platform_security(void); 147*9d250f03SJiafei Pan #endif 148*9d250f03SJiafei Pan 149*9d250f03SJiafei Pan #endif /* SOC_H */ 150