blob: eb36c2e13a1e424153f28f96875dd8e5c96ff970 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
|
/*
* Copyright 2022 NXP
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef SOC_H
#define SOC_H
/* Chassis specific defines - common across SoC's of a particular platform */
#include "dcfg_lsch3.h"
#include "soc_default_base_addr.h"
#include "soc_default_helper_macros.h"
/*
* SVR Definition of LS1088A
* A: without security
* AE: with security
* (not include major and minor rev)
*/
#define SVR_LS1044A 0x870323
#define SVR_LS1044AE 0x870322
#define SVR_LS1048A 0x870321
#define SVR_LS1048AE 0x870320
#define SVR_LS1084A 0x870303
#define SVR_LS1084AE 0x870302
#define SVR_LS1088A 0x870301
#define SVR_LS1088AE 0x870300
#define SVR_WO_E 0xFFFFFE
/* Number of cores in platform */
#define NUMBER_OF_CLUSTERS 2
#define CORES_PER_CLUSTER 4
#define PLATFORM_CORE_COUNT (NUMBER_OF_CLUSTERS * CORES_PER_CLUSTER)
/* set to 0 if the clusters are not symmetrical */
#define SYMMETRICAL_CLUSTERS 1
#define NUM_DRAM_REGIONS 2
#define NXP_DRAM0_ADDR 0x80000000
#define NXP_DRAM0_MAX_SIZE 0x80000000 /* 2 GB */
#define NXP_DRAM1_ADDR 0x8080000000
#define NXP_DRAM1_MAX_SIZE 0x7F80000000 /* 510 G */
/* DRAM0 Size defined in platform_def.h */
#define NXP_DRAM0_SIZE PLAT_DEF_DRAM0_SIZE
#define NXP_POWMGTDCR 0x700123C20
/* epu register offsets and values */
#define EPU_EPGCR_OFFSET 0x0
#define EPU_EPIMCR10_OFFSET 0x128
#define EPU_EPCTR10_OFFSET 0xa28
#define EPU_EPCCR10_OFFSET 0x828
#ifdef EPU_EPCCR10_VAL
#undef EPU_EPCCR10_VAL
#endif
#define EPU_EPCCR10_VAL 0xf2800000
#define EPU_EPIMCR10_VAL 0xba000000
#define EPU_EPCTR10_VAL 0x0
#define EPU_EPGCR_VAL (1 << 31)
/* pmu register offsets and values */
#define PMU_PCPW20SR_OFFSET 0x830
#define PMU_CLAINACTSETR_OFFSET 0x1100
#define PMU_CLAINACTCLRR_OFFSET 0x1104
#define PMU_CLSINACTSETR_OFFSET 0x1108
#define PMU_CLSINACTCLRR_OFFSET 0x110C
#define PMU_CLL2FLUSHSETR_OFFSET 0x1110
#define PMU_CLSL2FLUSHCLRR_OFFSET 0x1114
#define PMU_CLL2FLUSHSR_OFFSET 0x1118
#define PMU_POWMGTCSR_OFFSET 0x4000
#define PMU_IPPDEXPCR0_OFFSET 0x4040
#define PMU_IPPDEXPCR1_OFFSET 0x4044
#define PMU_IPPDEXPCR2_OFFSET 0x4048
#define PMU_IPPDEXPCR3_OFFSET 0x404C
#define PMU_IPPDEXPCR4_OFFSET 0x4050
#define PMU_IPPDEXPCR5_OFFSET 0x4054
#define PMU_IPSTPCR0_OFFSET 0x4120
#define PMU_IPSTPCR1_OFFSET 0x4124
#define PMU_IPSTPCR2_OFFSET 0x4128
#define PMU_IPSTPCR3_OFFSET 0x412C
#define PMU_IPSTPCR4_OFFSET 0x4130
#define PMU_IPSTPCR5_OFFSET 0x4134
#define PMU_IPSTPCR6_OFFSET 0x4138
#define PMU_IPSTPACK0_OFFSET 0x4140
#define PMU_IPSTPACK1_OFFSET 0x4144
#define PMU_IPSTPACK2_OFFSET 0x4148
#define PMU_IPSTPACK3_OFFSET 0x414C
#define PMU_IPSTPACK4_OFFSET 0x4150
#define PMU_IPSTPACK5_OFFSET 0x4154
#define PMU_IPSTPACK6_OFFSET 0x4158
#define PMU_POWMGTCSR_VAL (1 << 20)
#define IPPDEXPCR0_MASK 0xFFFFFFFF
#define IPPDEXPCR1_MASK 0xFFFFFFFF
#define IPPDEXPCR2_MASK 0xFFFFFFFF
#define IPPDEXPCR3_MASK 0xFFFFFFFF
#define IPPDEXPCR4_MASK 0xFFFFFFFF
#define IPPDEXPCR5_MASK 0xFFFFFFFF
/* DEVDISR5_FLX_TMR */
#define IPPDEXPCR_FLX_TMR 0x00004000
#define DEVDISR5_FLX_TMR 0x00004000
#define IPSTPCR0_VALUE 0x0041310C
#define IPSTPCR1_VALUE 0x000003FF
#define IPSTPCR2_VALUE 0x00013006
/* Dont' stop UART */
#define IPSTPCR3_VALUE 0x0000033A
#define IPSTPCR4_VALUE 0x00103300
#define IPSTPCR5_VALUE 0x00000001
#define IPSTPCR6_VALUE 0x00000000
#define TZPC_BLOCK_SIZE 0x1000
/* PORSR1 */
#define PORSR1_RCW_MASK 0xFF800000
#define PORSR1_RCW_SHIFT 23
/* CFG_RCW_SRC[6:0] */
#define RCW_SRC_TYPE_MASK 0x70
/* RCW SRC NOR */
#define NOR_16B_VAL 0x20
/*
* RCW SRC Serial Flash
* 1. SERAIL NOR (QSPI)
* 2. OTHERS (SD/MMC, SPI, I2C1)
*/
#define RCW_SRC_SERIAL_MASK 0x7F
#define QSPI_VAL 0x62
#define SDHC_VAL 0x40
#define EMMC_VAL 0x41
/*
* Required LS standard platform porting definitions
* for CCN-504 - Read from RN-F node ID register
*/
#define PLAT_CLUSTER_TO_CCN_ID_MAP 1, 9, 11, 19
/* Defines required for using XLAT tables from ARM common code */
#define PLAT_PHY_ADDR_SPACE_SIZE (1ULL << 40)
#define PLAT_VIRT_ADDR_SPACE_SIZE (1ULL << 40)
/*
* Clock Divisors
*/
#define NXP_PLATFORM_CLK_DIVIDER 1
#define NXP_UART_CLK_DIVIDER 2
/* dcfg register offsets and values */
#define DCFG_DEVDISR1_OFFSET 0x70
#define DCFG_DEVDISR2_OFFSET 0x74
#define DCFG_DEVDISR3_OFFSET 0x78
#define DCFG_DEVDISR5_OFFSET 0x80
#define DCFG_DEVDISR6_OFFSET 0x84
#define DCFG_DEVDISR1_SEC (1 << 22)
#define DCFG_DEVDISR3_QBMAIN (1 << 12)
#define DCFG_DEVDISR4_SPI_QSPI (1 << 4 | 1 << 5)
#define DCFG_DEVDISR5_MEM (1 << 0)
#define DEVDISR1_VALUE 0x0041310c
#define DEVDISR2_VALUE 0x000003ff
#define DEVDISR3_VALUE 0x00013006
#define DEVDISR4_VALUE 0x0000033e
#define DEVDISR5_VALUE 0x00103300
#define DEVDISR6_VALUE 0x00000001
/*
* pwr mgmt features supported in the soc-specific code:
* value == 0x0, the soc code does not support this feature
* value != 0x0, the soc code supports this feature
*/
#define SOC_CORE_RELEASE 0x1
#define SOC_CORE_RESTART 0x1
#define SOC_CORE_OFF 0x1
#define SOC_CORE_STANDBY 0x1
#define SOC_CORE_PWR_DWN 0x1
#define SOC_CLUSTER_STANDBY 0x1
#define SOC_CLUSTER_PWR_DWN 0x1
#define SOC_SYSTEM_STANDBY 0x1
#define SOC_SYSTEM_PWR_DWN 0x1
#define SOC_SYSTEM_OFF 0x1
#define SOC_SYSTEM_RESET 0x1
#define SYSTEM_PWR_DOMAINS 1
#define PLAT_NUM_PWR_DOMAINS (PLATFORM_CORE_COUNT + \
NUMBER_OF_CLUSTERS + \
SYSTEM_PWR_DOMAINS)
/* Power state coordination occurs at the system level */
#define PLAT_PD_COORD_LVL MPIDR_AFFLVL2
#define PLAT_MAX_PWR_LVL PLAT_PD_COORD_LVL
/* Local power state for power domains in Run state */
#define LS_LOCAL_STATE_RUN PSCI_LOCAL_STATE_RUN
/* define retention state */
#define PLAT_MAX_RET_STATE (PSCI_LOCAL_STATE_RUN + 1)
#define LS_LOCAL_STATE_RET PLAT_MAX_RET_STATE
/* define power-down state */
#define PLAT_MAX_OFF_STATE (PLAT_MAX_RET_STATE + 1)
#define LS_LOCAL_STATE_OFF PLAT_MAX_OFF_STATE
#ifndef __ASSEMBLER__
/* CCI slave interfaces */
static const int cci_map[] = {
3,
4,
};
void soc_init_lowlevel(void);
void soc_init_percpu(void);
void _soc_set_start_addr(unsigned long addr);
void _set_platform_security(void);
#endif
#endif /* SOC_H */
|