1if ARCH_MVEBU
2
3config HAVE_MVEBU_EFUSE
4	bool
5
6config ARMADA_32BIT
7	bool
8	select BOARD_EARLY_INIT_F
9	select CPU_V7A
10	select SPL_DM if SPL
11	select SPL_DM_SEQ_ALIAS if SPL
12	select SPL_OF_CONTROL if SPL
13	select SPL_SKIP_LOWLEVEL_INIT if SPL
14	select SPL_SIMPLE_BUS if SPL
15	select SUPPORT_SPL
16	select SYS_L2_PL310 if !SYS_L2CACHE_OFF
17	select TRANSLATION_OFFSET
18	select SPL_SYS_NO_VECTOR_TABLE if SPL
19	select ARCH_VERY_EARLY_INIT
20
21# ARMv7 SoCs...
22config ARMADA_375
23	bool
24	select ARMADA_32BIT
25
26config ARMADA_38X
27	bool
28	select ARMADA_32BIT
29	select HAVE_MVEBU_EFUSE
30
31config ARMADA_38X_HS_IMPEDANCE_THRESH
32	hex  "Armada 38x USB 2.0 High-Speed Impedance Threshold (0x0 - 0x7)"
33	depends on ARMADA_38X
34	default 0x6
35	range 0x0 0x7
36
37config ARMADA_XP
38	bool
39	select ARMADA_32BIT
40
41# ARMv8 SoCs...
42config ARMADA_3700
43	bool
44	select ARM64
45	select HAVE_MVEBU_EFUSE
46
47# Armada 7K and 8K are very similar - use only one Kconfig symbol for both
48config ARMADA_8K
49	bool
50	select ARM64
51
52config ALLEYCAT_5
53	bool
54	select ARM64
55
56# Armada PLL frequency (used for NAND clock generation)
57config SYS_MVEBU_PLL_CLOCK
58	int
59	default "2000000000" if ARMADA_XP || ARMADA_3700 || ARMADA_8K || ARMADA_MSYS
60	default "1000000000" if ARMADA_38X || ARMADA_375
61
62# Armada XP/38x SoC types...
63config MV78230
64	bool
65	select ARMADA_XP
66
67config MV78260
68	bool
69	select ARMADA_XP
70	imply CMD_SATA
71
72config MV78460
73	bool
74	select ARMADA_XP
75
76config ARMADA_MSYS
77	bool
78	select ARMADA_32BIT
79
80config 98DX4251
81	bool
82	select ARMADA_MSYS
83
84config 98DX3336
85	bool
86	select ARMADA_MSYS
87
88config 98DX3236
89	bool
90	select ARMADA_MSYS
91
92config 88F6820
93	bool
94	select ARMADA_38X
95
96config CUSTOMER_BOARD_SUPPORT
97	bool
98
99config DDR4
100	bool "Support Marvell DDR4 Training driver"
101
102choice
103	prompt "Armada XP/375/38x/3700/7K/8K/Alleycat-5 board select"
104	optional
105
106config TARGET_CLEARFOG
107	bool "Support ClearFog"
108	select 88F6820
109	select BOARD_LATE_INIT
110	select OF_BOARD_SETUP
111
112config TARGET_HELIOS4
113	bool "Support Helios4"
114	select 88F6820
115
116config TARGET_MVEBU_ARMADA_37XX
117	bool "Support Armada 37xx platforms"
118	select ARMADA_3700
119	imply SCSI
120
121config TARGET_DB_88F6720
122	bool "Support DB-88F6720 Armada 375"
123	select ARMADA_375
124
125config TARGET_DB_88F6820_GP
126	bool "Support DB-88F6820-GP"
127	select 88F6820
128
129config TARGET_DB_88F6820_AMC
130	bool "Support DB-88F6820-AMC"
131	select 88F6820
132
133config TARGET_TURRIS_OMNIA
134	bool "Support Turris Omnia"
135	select 88F6820
136	select BOARD_LATE_INIT
137	select DM_I2C
138	select I2C_MUX
139	select I2C_MUX_PCA954x
140	select SPL_DRIVERS_MISC
141	select SPL_I2C_MUX
142	select SPL_SYS_MALLOC_SIMPLE
143	select SYS_I2C_MVTWSI
144	select ATSHA204A
145
146config TARGET_TURRIS_MOX
147	bool "Support Turris Mox"
148	select ARMADA_3700
149
150config TARGET_MVEBU_ARMADA_8K
151	bool "Support Armada 7k/8k platforms"
152	select ARMADA_8K
153	select BOARD_LATE_INIT
154	imply SCSI
155
156config TARGET_MVEBU_ALLEYCAT5
157	bool "Support AlleyCat 5 platforms"
158	select ALLEYCAT_5
159
160config TARGET_OCTEONTX2_CN913x
161	bool "Support CN913x platforms"
162	select ARMADA_8K
163	imply BOARD_EARLY_INIT_R
164	select BOARD_LATE_INIT
165	imply SCSI
166
167config TARGET_DB_MV784MP_GP
168	bool "Support db-mv784mp-gp"
169	select BOARD_ECC_SUPPORT
170	select MV78460
171
172config TARGET_DS116
173	bool "Support Synology DS116"
174	select 88F6820
175
176config TARGET_DS414
177	bool "Support Synology DS414"
178	select MV78230
179
180config TARGET_MAXBCM
181	bool "Support maxbcm"
182	select BOARD_ECC_SUPPORT
183	select MV78460
184
185config TARGET_N2350
186	bool "Support Thecus N2350"
187	select 88F6820
188	select DDR4
189
190config TARGET_THEADORABLE
191	bool "Support theadorable Armada XP"
192	select BOARD_LATE_INIT if USB
193	select MV78260
194	imply CMD_SATA
195
196config TARGET_CONTROLCENTERDC
197	bool "Support CONTROLCENTERDC"
198	select 88F6820
199	select CUSTOMER_BOARD_SUPPORT
200
201config TARGET_X530
202	bool "Support Allied Telesis x530"
203	select 88F6820
204
205config TARGET_DB_XC3_24G4XG
206	bool "Support DB-XC3-24G4XG"
207	select 98DX3336
208
209config TARGET_CRS3XX_98DX3236
210	bool "Support CRS3XX-98DX3236"
211	select 98DX3236
212
213endchoice
214
215choice
216	prompt "DDR bus width"
217	default DDR_64BIT
218	depends on ARMADA_XP
219
220config DDR_64BIT
221	bool "64bit bus width"
222
223config DDR_32BIT
224	bool "32bit bus width"
225
226endchoice
227
228config DDR_LOG_LEVEL
229	int "DDR training code log level"
230	depends on ARMADA_XP
231	default 0
232	range 0 3
233	help
234	  Amount of information provided on error while running the DDR
235	  training code.  At level 0, provides an error code in a case of
236	  failure, RL, WL errors and other algorithm failure.  At level 1,
237	  provides the D-Unit setup (SPD/Static configuration).  At level 2,
238	  provides the windows margin as a results of DQS centeralization.
239	  At level 3, rovides the windows margin of each DQ as a results of
240	  DQS centeralization.
241
242config DDR_RESET_ON_TRAINING_FAILURE
243	bool "Reset the board on DDR training failure instead of hanging"
244	depends on ARMADA_38X || ARMADA_XP
245	help
246	  If DDR training fails in SPL, reset the board instead of hanging.
247	  Some boards are known to fail DDR training occasionally and an
248	  immediate reset may be preferable to waiting until the board is
249	  reset by watchdog (if there even is one).
250
251	  Note that if booting via UART and the DDR training fails, the
252	  device will still hang - it doesn't make sense to reset the board
253	  in such a case.
254
255config BOARD_ECC_SUPPORT
256	bool
257
258config SYS_BOARD
259	default "clearfog" if TARGET_CLEARFOG
260	default "helios4" if TARGET_HELIOS4
261	default "mvebu_armada-37xx" if TARGET_MVEBU_ARMADA_37XX
262	default "db-88f6720" if TARGET_DB_88F6720
263	default "db-88f6820-gp" if TARGET_DB_88F6820_GP
264	default "db-88f6820-amc" if TARGET_DB_88F6820_AMC
265	default "turris_omnia" if TARGET_TURRIS_OMNIA
266	default "turris_mox" if TARGET_TURRIS_MOX
267	default "mvebu_armada-8k" if TARGET_MVEBU_ARMADA_8K
268	default "octeontx2_cn913x" if TARGET_OCTEONTX2_CN913x
269	default "db-mv784mp-gp" if TARGET_DB_MV784MP_GP
270	default "ds116" if TARGET_DS116
271	default "ds414" if TARGET_DS414
272	default "maxbcm" if TARGET_MAXBCM
273	default "n2350" if TARGET_N2350
274	default "theadorable" if TARGET_THEADORABLE
275	default "a38x" if TARGET_CONTROLCENTERDC
276	default "x530" if TARGET_X530
277	default "db-xc3-24g4xg" if TARGET_DB_XC3_24G4XG
278	default "crs3xx-98dx3236" if TARGET_CRS3XX_98DX3236
279	default "mvebu_alleycat-5" if TARGET_MVEBU_ALLEYCAT5
280
281config SYS_CONFIG_NAME
282	default "clearfog" if TARGET_CLEARFOG
283	default "helios4" if TARGET_HELIOS4
284	default "mvebu_armada-37xx" if TARGET_MVEBU_ARMADA_37XX
285	default "db-88f6720" if TARGET_DB_88F6720
286	default "db-88f6820-gp" if TARGET_DB_88F6820_GP
287	default "db-88f6820-amc" if TARGET_DB_88F6820_AMC
288	default "mvebu_armada-8k" if TARGET_MVEBU_ARMADA_8K
289	default "mvebu_armada-8k" if TARGET_OCTEONTX2_CN913x
290	default "db-mv784mp-gp" if TARGET_DB_MV784MP_GP
291	default "ds116" if TARGET_DS116
292	default "ds414" if TARGET_DS414
293	default "maxbcm" if TARGET_MAXBCM
294	default "n2350" if TARGET_N2350
295	default "theadorable" if TARGET_THEADORABLE
296	default "turris_omnia" if TARGET_TURRIS_OMNIA
297	default "turris_mox" if TARGET_TURRIS_MOX
298	default "controlcenterdc" if TARGET_CONTROLCENTERDC
299	default "x530" if TARGET_X530
300	default "db-xc3-24g4xg" if TARGET_DB_XC3_24G4XG
301	default "crs3xx-98dx3236" if TARGET_CRS3XX_98DX3236
302	default "mvebu_alleycat-5" if TARGET_MVEBU_ALLEYCAT5
303
304config SYS_VENDOR
305	default "Marvell" if TARGET_DB_MV784MP_GP
306	default "Marvell" if TARGET_MVEBU_ARMADA_37XX
307	default "Marvell" if TARGET_DB_88F6720
308	default "Marvell" if TARGET_DB_88F6820_GP
309	default "Marvell" if TARGET_DB_88F6820_AMC
310	default "Marvell" if TARGET_MVEBU_ARMADA_8K
311	default "Marvell" if TARGET_OCTEONTX2_CN913x
312	default "Marvell" if TARGET_DB_XC3_24G4XG
313	default "Marvell" if TARGET_MVEBU_DB_88F7040
314	default "solidrun" if TARGET_CLEARFOG
315	default "kobol" if TARGET_HELIOS4
316	default "Synology" if TARGET_DS116
317	default "Synology" if TARGET_DS414
318	default "thecus" if TARGET_N2350
319	default "CZ.NIC" if TARGET_TURRIS_OMNIA
320	default "CZ.NIC" if TARGET_TURRIS_MOX
321	default "gdsys" if TARGET_CONTROLCENTERDC
322	default "alliedtelesis" if TARGET_X530
323	default "mikrotik" if TARGET_CRS3XX_98DX3236
324	default "Marvell" if TARGET_MVEBU_ALLEYCAT5
325
326config SYS_SOC
327	default "mvebu"
328
329choice
330	prompt "Boot method"
331	depends on SPL
332
333config MVEBU_SPL_BOOT_DEVICE_SPI
334	bool "NOR flash (SPI or parallel)"
335	imply ENV_IS_IN_SPI_FLASH
336	imply SPL_DM_SPI
337	imply SPL_SPI_FLASH_SUPPORT
338	imply SPL_SPI_LOAD
339	imply SPL_SPI
340	select SPL_BOOTROM_SUPPORT
341
342config MVEBU_SPL_BOOT_DEVICE_NAND
343	bool "NAND flash (SPI or parallel)"
344	select MTD_RAW_NAND
345	select SPL_BOOTROM_SUPPORT
346
347config MVEBU_SPL_BOOT_DEVICE_MMC
348	bool "eMMC or SD card"
349	imply ENV_IS_IN_MMC
350	# GPIO needed for eMMC/SD card presence detection
351	imply SPL_DM_GPIO
352	imply SPL_DM_MMC
353	imply SPL_GPIO
354	imply SPL_LIBDISK_SUPPORT
355	imply SPL_MMC
356	select SUPPORT_EMMC_BOOT if SPL_MMC
357	select SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR if SPL_MMC
358	select SPL_BOOTROM_SUPPORT
359
360config MVEBU_SPL_BOOT_DEVICE_SATA
361	bool "SATA"
362	imply SPL_SATA
363	imply SPL_LIBDISK_SUPPORT
364	select SPL_BOOTROM_SUPPORT
365
366config MVEBU_SPL_BOOT_DEVICE_PEX
367	bool "PCI Express"
368	select SPL_BOOTROM_SUPPORT
369
370config MVEBU_SPL_BOOT_DEVICE_UART
371	bool "UART"
372	select SPL_BOOTROM_SUPPORT
373
374endchoice
375
376config MVEBU_SPL_NAND_BADBLK_LOCATION
377	hex "NAND Bad block indicator location"
378	depends on MVEBU_SPL_BOOT_DEVICE_NAND
379	range 0x0 0x1
380	help
381	  Value 0x0 = SLC flash = BBI at page 0 or page 1
382	  Value 0x1 = MLC flash = BBI at last page in the block
383
384config MVEBU_SPL_SATA_BLKSZ
385	int "SATA block size"
386	depends on MVEBU_SPL_BOOT_DEVICE_SATA
387	range 512 32768
388	default 512
389	help
390	  Block size of the SATA disk in bytes.
391	  Typically 512 bytes for majority of disks
392	  and 4096 bytes for 4K Native disks.
393
394config MVEBU_EFUSE
395	bool "Enable eFuse support"
396	depends on HAVE_MVEBU_EFUSE
397	help
398	  Enable support for reading and writing eFuses on mvebu SoCs.
399
400config MVEBU_EFUSE_FAKE
401	bool "Fake eFuse access (dry run)"
402	depends on MVEBU_EFUSE
403	help
404	  This enables a "dry run" mode where eFuses are not really programmed.
405	  Instead the eFuse accesses are emulated by writing to and reading
406	  from a memory block.
407	  This is can be used for testing prog scripts.
408
409config MVEBU_EFUSE_VHV_GPIO
410	string "VHV_Enable GPIO name for eFuse programming"
411	depends on MVEBU_EFUSE && !ARMADA_3700
412	help
413	  The eFuse programing (burning) phase requires supplying 1.8V to the
414	  device on the VHV power pin, while for normal operation the VHV power
415	  rail must be left unconnected. See Marvell AN-389: ARMADA VHV Power
416	  document (Doc. No. MV-S302545-00 Rev. C, August 2, 2016) for details.
417	  .
418	  This specify VHV_Enable GPIO name used in U-Boot for enabling VHV power.
419
420config MVEBU_EFUSE_VHV_GPIO_ACTIVE_LOW
421	bool "VHV_Enable GPIO is Active Low"
422	depends on MVEBU_EFUSE_VHV_GPIO != ""
423
424config SECURED_MODE_IMAGE
425	bool "Build image for trusted boot"
426	default false
427	depends on 88F6820
428	help
429	  Build an image that employs the ARMADA SoC's trusted boot framework
430	  for securely booting images.
431
432config SECURED_MODE_CSK_INDEX
433	int "Index of active CSK"
434	default 0
435	depends on SECURED_MODE_IMAGE
436
437config SF_DEFAULT_SPEED
438	int "Default speed for SPI flash in Hz"
439	default 10000000
440	depends on MVEBU_SPL_BOOT_DEVICE_SPI
441
442config SF_DEFAULT_MODE
443	hex "Default mode for SPI flash"
444	default 0x0
445	depends on MVEBU_SPL_BOOT_DEVICE_SPI
446
447source "board/solidrun/clearfog/Kconfig"
448source "board/kobol/helios4/Kconfig"
449
450endif
451