xref: /rk3399_ARM-atf/plat/nxp/soc-ls1046a/include/soc.h (revision 1b33b58b665e5ab5e179b8ee1b71f5412b721e42)
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