1if ARCH_MVEBU
2
3config HAVE_MVEBU_EFUSE
4	bool
5
6config ARMADA_32BIT
7	bool
8	select ARCH_MISC_INIT
9	select BOARD_EARLY_INIT_F
10	select CPU_V7A
11	select SPL_DM if SPL
12	select SPL_DM_SEQ_ALIAS if SPL
13	select SPL_OF_CONTROL if SPL
14	select SPL_SKIP_LOWLEVEL_INIT if SPL
15	select SPL_SIMPLE_BUS if SPL
16	select SUPPORT_SPL
17	select TRANSLATION_OFFSET
18
19config ARMADA_64BIT
20	bool
21	select ARM64
22
23# ARMv7 SoCs...
24config ARMADA_375
25	bool
26	select ARMADA_32BIT
27
28config ARMADA_38X
29	bool
30	select ARMADA_32BIT
31	select HAVE_MVEBU_EFUSE
32
33config ARMADA_38X_HS_IMPEDANCE_THRESH
34	hex  "Armada 38x USB 2.0 High-Speed Impedance Threshold (0x0 - 0x7)"
35	depends on ARMADA_38X
36	default 0x6
37	range 0x0 0x7
38
39config ARMADA_XP
40	bool
41	select ARMADA_32BIT
42
43# ARMv8 SoCs...
44config ARMADA_3700
45	bool
46	select ARM64
47
48# Armada 7K and 8K are very similar - use only one Kconfig symbol for both
49config ARMADA_8K
50	bool
51	select ARM64
52
53# Armada PLL frequency (used for NAND clock generation)
54config SYS_MVEBU_PLL_CLOCK
55	int
56	default "2000000000" if ARMADA_XP || ARMADA_3700 || ARMADA_8K || ARMADA_MSYS
57	default "1000000000" if ARMADA_38X || ARMADA_375
58
59# Armada XP/38x SoC types...
60config MV78230
61	bool
62	select ARMADA_XP
63
64config MV78260
65	bool
66	select ARMADA_XP
67	imply CMD_SATA
68
69config MV78460
70	bool
71	select ARMADA_XP
72
73config ARMADA_MSYS
74	bool
75	select ARMADA_32BIT
76
77config 98DX4251
78	bool
79	select ARMADA_MSYS
80
81config 98DX3336
82	bool
83	select ARMADA_MSYS
84
85config 98DX3236
86	bool
87	select ARMADA_MSYS
88
89config 88F6820
90	bool
91	select ARMADA_38X
92
93choice
94	prompt "Armada XP/375/38x/3700/7K/8K board select"
95	optional
96
97config TARGET_CLEARFOG
98	bool "Support ClearFog"
99	select 88F6820
100	select BOARD_LATE_INIT
101
102config TARGET_HELIOS4
103	bool "Support Helios4"
104	select 88F6820
105
106config TARGET_MVEBU_ARMADA_37XX
107	bool "Support Armada 37xx platforms"
108	select ARMADA_3700
109	imply SCSI
110
111config TARGET_DB_88F6720
112	bool "Support DB-88F6720 Armada 375"
113	select ARMADA_375
114
115config TARGET_DB_88F6820_GP
116	bool "Support DB-88F6820-GP"
117	select 88F6820
118
119config TARGET_DB_88F6820_AMC
120	bool "Support DB-88F6820-AMC"
121	select 88F6820
122
123config TARGET_TURRIS_OMNIA
124	bool "Support Turris Omnia"
125	select 88F6820
126	select BOARD_LATE_INIT
127	select DM_I2C
128	select I2C_MUX
129	select I2C_MUX_PCA954x
130	select SPL_DRIVERS_MISC
131	select SPL_I2C_MUX
132	select SPL_SYS_MALLOC_SIMPLE
133	select SYS_I2C_MVTWSI
134	select ATSHA204A
135
136config TARGET_TURRIS_MOX
137	bool "Support Turris Mox"
138	select ARMADA_3700
139
140config TARGET_MVEBU_ARMADA_8K
141	bool "Support Armada 7k/8k platforms"
142	select ARMADA_8K
143	select BOARD_LATE_INIT
144	imply SCSI
145
146config TARGET_OCTEONTX2_CN913x
147	bool "Support CN913x platforms"
148	select ARMADA_8K
149	imply BOARD_EARLY_INIT_R
150	select BOARD_LATE_INIT
151	imply SCSI
152
153config TARGET_DB_MV784MP_GP
154	bool "Support db-mv784mp-gp"
155	select MV78460
156
157config TARGET_DS414
158	bool "Support Synology DS414"
159	select MV78230
160
161config TARGET_MAXBCM
162	bool "Support maxbcm"
163	select MV78460
164
165config TARGET_THEADORABLE
166	bool "Support theadorable Armada XP"
167	select BOARD_LATE_INIT if USB
168	select MV78260
169	imply CMD_SATA
170
171config TARGET_CONTROLCENTERDC
172	bool "Support CONTROLCENTERDC"
173	select 88F6820
174
175config TARGET_X530
176	bool "Support Allied Telesis x530"
177	select 88F6820
178
179config TARGET_DB_XC3_24G4XG
180	bool "Support DB-XC3-24G4XG"
181	select 98DX3336
182
183config TARGET_CRS3XX_98DX3236
184	bool "Support CRS3XX-98DX3236"
185	select 98DX3236
186
187endchoice
188
189choice
190	prompt "DDR bus width"
191	default DDR_64BIT
192	depends on ARMADA_XP
193
194config DDR_64BIT
195	bool "64bit bus width"
196
197config DDR_32BIT
198	bool "32bit bus width"
199
200endchoice
201
202config DDR_LOG_LEVEL
203	int "DDR training code log level"
204	depends on ARMADA_XP
205	default 0
206	range 0 3
207	help
208	  Amount of information provided on error while running the DDR
209	  training code.  At level 0, provides an error code in a case of
210	  failure, RL, WL errors and other algorithm failure.  At level 1,
211	  provides the D-Unit setup (SPD/Static configuration).  At level 2,
212	  provides the windows margin as a results of DQS centeralization.
213	  At level 3, rovides the windows margin of each DQ as a results of
214	  DQS centeralization.
215
216config SYS_BOARD
217	default "clearfog" if TARGET_CLEARFOG
218	default "helios4" if TARGET_HELIOS4
219	default "mvebu_armada-37xx" if TARGET_MVEBU_ARMADA_37XX
220	default "db-88f6720" if TARGET_DB_88F6720
221	default "db-88f6820-gp" if TARGET_DB_88F6820_GP
222	default "db-88f6820-amc" if TARGET_DB_88F6820_AMC
223	default "turris_omnia" if TARGET_TURRIS_OMNIA
224	default "turris_mox" if TARGET_TURRIS_MOX
225	default "mvebu_armada-8k" if TARGET_MVEBU_ARMADA_8K
226	default "octeontx2_cn913x" if TARGET_OCTEONTX2_CN913x
227	default "db-mv784mp-gp" if TARGET_DB_MV784MP_GP
228	default "ds414" if TARGET_DS414
229	default "maxbcm" if TARGET_MAXBCM
230	default "theadorable" if TARGET_THEADORABLE
231	default "a38x" if TARGET_CONTROLCENTERDC
232	default "x530" if TARGET_X530
233	default "db-xc3-24g4xg" if TARGET_DB_XC3_24G4XG
234	default "crs3xx-98dx3236" if TARGET_CRS3XX_98DX3236
235
236config SYS_CONFIG_NAME
237	default "clearfog" if TARGET_CLEARFOG
238	default "helios4" if TARGET_HELIOS4
239	default "mvebu_armada-37xx" if TARGET_MVEBU_ARMADA_37XX
240	default "db-88f6720" if TARGET_DB_88F6720
241	default "db-88f6820-gp" if TARGET_DB_88F6820_GP
242	default "db-88f6820-amc" if TARGET_DB_88F6820_AMC
243	default "mvebu_armada-8k" if TARGET_MVEBU_ARMADA_8K
244	default "mvebu_armada-8k" if TARGET_OCTEONTX2_CN913x
245	default "db-mv784mp-gp" if TARGET_DB_MV784MP_GP
246	default "ds414" if TARGET_DS414
247	default "maxbcm" if TARGET_MAXBCM
248	default "theadorable" if TARGET_THEADORABLE
249	default "turris_omnia" if TARGET_TURRIS_OMNIA
250	default "turris_mox" if TARGET_TURRIS_MOX
251	default "controlcenterdc" if TARGET_CONTROLCENTERDC
252	default "x530" if TARGET_X530
253	default "db-xc3-24g4xg" if TARGET_DB_XC3_24G4XG
254	default "crs3xx-98dx3236" if TARGET_CRS3XX_98DX3236
255
256config SYS_VENDOR
257	default "Marvell" if TARGET_DB_MV784MP_GP
258	default "Marvell" if TARGET_MVEBU_ARMADA_37XX
259	default "Marvell" if TARGET_DB_88F6720
260	default "Marvell" if TARGET_DB_88F6820_GP
261	default "Marvell" if TARGET_DB_88F6820_AMC
262	default "Marvell" if TARGET_MVEBU_ARMADA_8K
263	default "Marvell" if TARGET_OCTEONTX2_CN913x
264	default "Marvell" if TARGET_DB_XC3_24G4XG
265	default "Marvell" if TARGET_MVEBU_DB_88F7040
266	default "solidrun" if TARGET_CLEARFOG
267	default "kobol" if TARGET_HELIOS4
268	default "Synology" if TARGET_DS414
269	default "CZ.NIC" if TARGET_TURRIS_OMNIA
270	default "CZ.NIC" if TARGET_TURRIS_MOX
271	default "gdsys" if TARGET_CONTROLCENTERDC
272	default "alliedtelesis" if TARGET_X530
273	default "mikrotik" if TARGET_CRS3XX_98DX3236
274
275config SYS_SOC
276	default "mvebu"
277
278choice
279	prompt "Boot method"
280	depends on SPL
281
282config MVEBU_SPL_BOOT_DEVICE_SPI
283	bool "SPI NOR flash"
284	imply ENV_IS_IN_SPI_FLASH
285	imply SPL_DM_SPI
286	imply SPL_SPI_FLASH_SUPPORT
287	imply SPL_SPI_LOAD
288	imply SPL_SPI
289	select SPL_BOOTROM_SUPPORT
290
291config MVEBU_SPL_BOOT_DEVICE_MMC
292	bool "SDIO/MMC card"
293	imply ENV_IS_IN_MMC
294	# GPIO needed for eMMC/SD card presence detection
295	imply SPL_DM_GPIO
296	imply SPL_DM_MMC
297	imply SPL_GPIO
298	imply SPL_LIBDISK_SUPPORT
299	imply SPL_MMC
300	select SPL_BOOTROM_SUPPORT
301
302config MVEBU_SPL_BOOT_DEVICE_SATA
303	bool "SATA"
304	imply SPL_SATA
305	imply SPL_LIBDISK_SUPPORT
306	select SPL_BOOTROM_SUPPORT
307
308config MVEBU_SPL_BOOT_DEVICE_UART
309	bool "UART"
310	select SPL_BOOTROM_SUPPORT
311
312endchoice
313
314config MVEBU_EFUSE
315	bool "Enable eFuse support"
316	depends on HAVE_MVEBU_EFUSE
317	help
318	  Enable support for reading and writing eFuses on mvebu SoCs.
319
320config MVEBU_EFUSE_FAKE
321	bool "Fake eFuse access (dry run)"
322	depends on MVEBU_EFUSE
323	help
324	  This enables a "dry run" mode where eFuses are not really programmed.
325	  Instead the eFuse accesses are emulated by writing to and reading
326	  from a memory block.
327	  This is can be used for testing prog scripts.
328
329config SECURED_MODE_IMAGE
330	bool "Build image for trusted boot"
331	default false
332	depends on 88F6820
333	help
334	  Build an image that employs the ARMADA SoC's trusted boot framework
335	  for securely booting images.
336
337config SECURED_MODE_CSK_INDEX
338	int "Index of active CSK"
339	default 0
340	depends on SECURED_MODE_IMAGE
341
342source "board/solidrun/clearfog/Kconfig"
343source "board/kobol/helios4/Kconfig"
344
345endif
346