xref: /optee_os/core/arch/arm/plat-imx/conf.mk (revision 3b93220c4ddb2cef7feeac6860be20c7611e8289)
1PLATFORM_FLAVOR ?= mx6ulevk
2
3# Get SoC associated with the PLATFORM_FLAVOR
4mx6ul-flavorlist = \
5	mx6ulevk \
6	mx6ul9x9evk \
7	mx6ulccimx6ulsbcpro \
8
9mx6ull-flavorlist = \
10	mx6ullevk \
11
12mx6q-flavorlist = \
13	mx6qsabrelite \
14	mx6qsabreauto \
15	mx6qsabresd \
16	mx6qhmbedge \
17
18mx6qp-flavorlist = \
19	mx6qpsabreauto \
20	mx6qpsabresd \
21
22mx6sx-flavorlist = \
23	mx6sxsabreauto \
24	mx6sxsabresd \
25	mx6sxudooneofull \
26
27mx6d-flavorlist = \
28	mx6dhmbedge \
29
30mx6dl-flavorlist = \
31	mx6dlsabreauto \
32	mx6dlsabresd \
33	mx6dlhmbedge \
34
35mx6s-flavorlist = \
36	mx6shmbedge \
37	mx6solosabresd \
38	mx6solosabreauto \
39
40mx7d-flavorlist = \
41	mx7dsabresd \
42	mx7dpico_mbl \
43	mx7dclsom \
44
45mx7s-flavorlist = \
46	mx7swarp7 \
47	mx7swarp7_mbl \
48
49imx8mq-flavorlist = \
50	imx8mqevk
51
52imx8mm-flavorlist = \
53	imx8mmevk
54
55ifneq (,$(filter $(PLATFORM_FLAVOR),$(mx6ul-flavorlist)))
56$(call force,CFG_MX6,y)
57$(call force,CFG_MX6UL,y)
58$(call force,CFG_TEE_CORE_NB_CORE,1)
59include core/arch/arm/cpu/cortex-a7.mk
60else ifneq (,$(filter $(PLATFORM_FLAVOR),$(mx6ull-flavorlist)))
61$(call force,CFG_MX6,y)
62$(call force,CFG_MX6ULL,y)
63$(call force,CFG_TEE_CORE_NB_CORE,1)
64$(call force,CFG_IMX_CAAM,n)
65include core/arch/arm/cpu/cortex-a7.mk
66else ifneq (,$(filter $(PLATFORM_FLAVOR),$(mx6q-flavorlist)))
67$(call force,CFG_MX6,y)
68$(call force,CFG_MX6Q,y)
69$(call force,CFG_TEE_CORE_NB_CORE,4)
70else ifneq (,$(filter $(PLATFORM_FLAVOR),$(mx6qp-flavorlist)))
71$(call force,CFG_MX6,y)
72$(call force,CFG_MX6QP,y)
73$(call force,CFG_TEE_CORE_NB_CORE,4)
74else ifneq (,$(filter $(PLATFORM_FLAVOR),$(mx6d-flavorlist)))
75$(call force,CFG_MX6,y)
76$(call force,CFG_MX6D,y)
77$(call force,CFG_TEE_CORE_NB_CORE,2)
78else ifneq (,$(filter $(PLATFORM_FLAVOR),$(mx6dl-flavorlist)))
79$(call force,CFG_MX6,y)
80$(call force,CFG_MX6DL,y)
81$(call force,CFG_TEE_CORE_NB_CORE,2)
82else ifneq (,$(filter $(PLATFORM_FLAVOR),$(mx6s-flavorlist)))
83$(call force,CFG_MX6,y)
84$(call force,CFG_MX6S,y)
85$(call force,CFG_TEE_CORE_NB_CORE,1)
86else ifneq (,$(filter $(PLATFORM_FLAVOR),$(mx6sx-flavorlist)))
87$(call force,CFG_MX6,y)
88$(call force,CFG_MX6SX,y)
89$(call force,CFG_TEE_CORE_NB_CORE,1)
90else ifneq (,$(filter $(PLATFORM_FLAVOR),$(mx7s-flavorlist)))
91$(call force,CFG_MX7,y)
92$(call force,CFG_TEE_CORE_NB_CORE,1)
93include core/arch/arm/cpu/cortex-a7.mk
94else ifneq (,$(filter $(PLATFORM_FLAVOR),$(mx7d-flavorlist)))
95$(call force,CFG_MX7,y)
96$(call force,CFG_TEE_CORE_NB_CORE,2)
97include core/arch/arm/cpu/cortex-a7.mk
98else ifneq (,$(filter $(PLATFORM_FLAVOR),$(imx8mq-flavorlist)))
99$(call force,CFG_IMX8MQ,y)
100$(call force,CFG_ARM64_core,y)
101CFG_IMX_UART ?= y
102CFG_DRAM_BASE ?= 0x40000000
103CFG_TEE_CORE_NB_CORE ?= 4
104else ifneq (,$(filter $(PLATFORM_FLAVOR),$(imx8mm-flavorlist)))
105$(call force,CFG_IMX8MM,y)
106$(call force,CFG_ARM64_core,y)
107CFG_IMX_UART ?= y
108CFG_DRAM_BASE ?= 0x40000000
109CFG_TEE_CORE_NB_CORE ?= 4
110else
111$(error Unsupported PLATFORM_FLAVOR "$(PLATFORM_FLAVOR)")
112endif
113
114ifneq (,$(filter $(PLATFORM_FLAVOR),mx7dsabresd))
115CFG_DDR_SIZE ?= 0x40000000
116CFG_NS_ENTRY_ADDR ?= 0x80800000
117endif
118
119ifneq (,$(filter $(PLATFORM_FLAVOR),mx7dclsom))
120CFG_DDR_SIZE ?= 0x40000000
121CFG_UART_BASE ?= UART1_BASE
122endif
123
124ifneq (,$(filter $(PLATFORM_FLAVOR),mx7dpico_mbl))
125CFG_DDR_SIZE ?= 0x20000000
126CFG_NS_ENTRY_ADDR ?= 0x87800000
127CFG_DT_ADDR ?= 0x83100000
128CFG_UART_BASE ?= UART5_BASE
129CFG_BOOT_SECONDARY_REQUEST ?= n
130CFG_EXTERNAL_DTB_OVERLAY ?= y
131CFG_IMX_WDOG_EXT_RESET ?= y
132endif
133
134ifneq (,$(filter $(PLATFORM_FLAVOR),mx7swarp7))
135CFG_DDR_SIZE ?= 0x20000000
136CFG_NS_ENTRY_ADDR ?= 0x80800000
137CFG_BOOT_SECONDARY_REQUEST ?= n
138endif
139
140ifneq (,$(filter $(PLATFORM_FLAVOR),mx7swarp7_mbl))
141CFG_DDR_SIZE ?= 0x20000000
142CFG_NS_ENTRY_ADDR ?= 0x87800000
143CFG_DT_ADDR ?= 0x83100000
144CFG_BOOT_SECONDARY_REQUEST ?= n
145CFG_EXTERNAL_DTB_OVERLAY = y
146CFG_IMX_WDOG_EXT_RESET = y
147endif
148
149ifneq (,$(filter $(PLATFORM_FLAVOR),mx6qpsabresd mx6qsabresd mx6dlsabresd \
150	mx6dlsabrelite mx6dhmbedge mx6dlhmbedge mx6solosabresd))
151CFG_DDR_SIZE ?= 0x40000000
152CFG_NS_ENTRY_ADDR ?= 0x12000000
153endif
154
155ifneq (,$(filter $(PLATFORM_FLAVOR),mx6qpsabreauto mx6qsabreauto \
156	mx6dlsabreauto mx6solosabreauto))
157CFG_DDR_SIZE ?= 0x80000000
158CFG_NS_ENTRY_ADDR ?= 0x12000000
159endif
160
161ifneq (,$(filter $(PLATFORM_FLAVOR),mx6qhmbedge))
162CFG_DDR_SIZE ?= 0x80000000
163CFG_UART_BASE ?= UART1_BASE
164endif
165
166ifneq (,$(filter $(PLATFORM_FLAVOR),mx6shmbedge))
167CFG_DDR_SIZE ?= 0x40000000
168CFG_NS_ENTRY_ADDR ?= 0x12000000
169endif
170
171ifneq (,$(filter $(PLATFORM_FLAVOR),mx6qsabrelite mx6dlsabrelite))
172CFG_DDR_SIZE ?= 0x40000000
173CFG_NS_ENTRY_ADDR ?= 0x12000000
174CFG_UART_BASE ?= UART2_BASE
175endif
176
177ifneq (,$(filter $(PLATFORM_FLAVOR),mx6sxsabreauto))
178CFG_DDR_SIZE ?= 0x80000000
179CFG_NS_ENTRY_ADDR ?= 0x80800000
180endif
181
182ifneq (,$(filter $(PLATFORM_FLAVOR),mx6sxsabresd))
183CFG_DDR_SIZE ?= 0x40000000
184CFG_NS_ENTRY_ADDR ?= 0x80800000
185endif
186
187ifeq ($(PLATFORM_FLAVOR), mx6sxudooneofull)
188CFG_DDR_SIZE ?= 0x40000000
189CFG_UART_BASE ?= UART1_BASE
190endif
191
192ifneq (,$(filter $(PLATFORM_FLAVOR),mx6ulevk mx6ullevk))
193CFG_DDR_SIZE ?= 0x20000000
194CFG_NS_ENTRY_ADDR ?= 0x80800000
195endif
196
197ifneq (,$(filter $(PLATFORM_FLAVOR),mx6ulccimx6ulsbcpro))
198CFG_DDR_SIZE ?= 0x10000000
199CFG_NS_ENTRY_ADDR ?= 0x80800000
200CFG_UART_BASE ?= UART5_BASE
201endif
202
203ifneq (,$(filter $(PLATFORM_FLAVOR),mx6ul9x9evk))
204CFG_DDR_SIZE ?= 0x10000000
205CFG_NS_ENTRY_ADDR ?= 0x80800000
206endif
207
208ifneq (,$(filter $(PLATFORM_FLAVOR),imx8mqevk))
209CFG_DDR_SIZE ?= 0xc0000000
210CFG_UART_BASE ?= UART1_BASE
211endif
212
213ifneq (,$(filter $(PLATFORM_FLAVOR),imx8mmevk))
214CFG_DDR_SIZE ?= 0x80000000
215CFG_UART_BASE ?= UART2_BASE
216endif
217
218# i.MX6 Solo/SoloX/DualLite/Dual/Quad specific config
219ifeq ($(filter y, $(CFG_MX6QP) $(CFG_MX6Q) $(CFG_MX6D) $(CFG_MX6DL) $(CFG_MX6S) \
220      $(CFG_MX6SX)), y)
221include core/arch/arm/cpu/cortex-a9.mk
222
223$(call force,CFG_PL310,y)
224
225CFG_PL310_LOCKED ?= y
226CFG_ENABLE_SCTLR_RR ?= y
227CFG_SCU ?= y
228endif
229
230ifeq ($(filter y, $(CFG_MX6QP) $(CFG_MX6Q) $(CFG_MX6D) $(CFG_MX6DL) $(CFG_MX6S)), y)
231CFG_DRAM_BASE ?= 0x10000000
232endif
233
234ifneq (,$(filter y, $(CFG_MX6UL) $(CFG_MX6ULL) $(CFG_MX6SX)))
235CFG_DRAM_BASE ?= 0x80000000
236endif
237
238ifeq ($(filter y, $(CFG_MX7)), y)
239CFG_INIT_CNTVOFF ?= y
240CFG_DRAM_BASE ?= 0x80000000
241endif
242
243ifneq (,$(filter y, $(CFG_MX6) $(CFG_MX7)))
244$(call force,CFG_GENERIC_BOOT,y)
245$(call force,CFG_GIC,y)
246$(call force,CFG_IMX_UART,y)
247$(call force,CFG_PM_STUBS,y)
248$(call force,CFG_WITH_SOFTWARE_PRNG,y)
249
250CFG_BOOT_SYNC_CPU ?= n
251CFG_BOOT_SECONDARY_REQUEST ?= y
252CFG_DT ?= y
253CFG_PAGEABLE_ADDR ?= 0
254CFG_PSCI_ARM32 ?= y
255CFG_SECURE_TIME_SOURCE_REE ?= y
256CFG_CSU ?= y
257CFG_UART_BASE ?= UART1_BASE
258CFG_IMX_CAAM ?= y
259endif
260
261ifeq ($(filter y, $(CFG_PSCI_ARM32)), y)
262CFG_HWSUPP_MEM_PERM_WXN = n
263CFG_IMX_WDOG ?= y
264endif
265
266ifeq ($(CFG_ARM64_core),y)
267# arm-v8 platforms
268include core/arch/arm/cpu/cortex-armv8-0.mk
269$(call force,CFG_ARM_GICV3,y)
270$(call force,CFG_GENERIC_BOOT,y)
271$(call force,CFG_GIC,y)
272$(call force,CFG_WITH_LPAE,y)
273$(call force,CFG_WITH_ARM_TRUSTED_FW,y)
274$(call force,CFG_SECURE_TIME_SOURCE_CNTPCT,y)
275
276CFG_CRYPTO_WITH_CE ?= y
277CFG_PM_STUBS ?= y
278
279supported-ta-targets = ta_arm64
280endif
281
282CFG_TZDRAM_START ?= ($(CFG_DRAM_BASE) - 0x02000000 + $(CFG_DDR_SIZE))
283CFG_TZDRAM_SIZE ?= 0x01e00000
284CFG_SHMEM_START ?= ($(CFG_TZDRAM_START) + $(CFG_TZDRAM_SIZE))
285CFG_SHMEM_SIZE ?= 0x00200000
286
287CFG_CRYPTO_SIZE_OPTIMIZATION ?= n
288CFG_WITH_STACK_CANARIES ?= y
289CFG_MMAP_REGIONS ?= 24
290