xref: /openbmc/u-boot/common/spl/Kconfig (revision 403e9cbc)
1menu "SPL / TPL"
2
3config SUPPORT_SPL
4	bool
5
6config SUPPORT_TPL
7	bool
8
9config SPL_DFU_NO_RESET
10	bool
11
12config SPL
13	bool
14	depends on SUPPORT_SPL
15	prompt "Enable SPL"
16	help
17	  If you want to build SPL as well as the normal image, say Y.
18
19if SPL
20
21config SPL_BOARD_INIT
22	bool "Call board-specific initialization in SPL"
23	help
24	  If this option is enabled, U-Boot will call the function
25	  spl_board_init() from board_init_r(). This function should be
26	  provided by the board.
27
28config SPL_BOOTROM_SUPPORT
29        bool "Support returning to the BOOTROM"
30	help
31	  Some platforms (e.g. the Rockchip RK3368) provide support in their
32	  ROM for loading the next boot-stage after performing basic setup
33	  from the SPL stage.
34
35	  Enable this option, to return to the BOOTROM through the
36	  BOOT_DEVICE_BOOTROM (or fall-through to the next boot device in the
37	  boot device list, if not implemented for a given board)
38
39config SPL_RAW_IMAGE_SUPPORT
40	bool "Support SPL loading and booting of RAW images"
41	default n if (ARCH_MX6 && (SPL_MMC_SUPPORT || SPL_SATA_SUPPORT))
42	default y if !TI_SECURE_DEVICE
43	help
44	  SPL will support loading and booting a RAW image when this option
45	  is y. If this is not set, SPL will move on to other available
46	  boot media to find a suitable image.
47
48config SPL_LEGACY_IMAGE_SUPPORT
49	bool "Support SPL loading and booting of Legacy images"
50	default y if !TI_SECURE_DEVICE
51	help
52	  SPL will support loading and booting Legacy images when this option
53	  is y. If this is not set, SPL will move on to other available
54	  boot media to find a suitable image.
55
56config SPL_SYS_MALLOC_SIMPLE
57	bool
58	prompt "Only use malloc_simple functions in the SPL"
59	help
60	  Say Y here to only use the *_simple malloc functions from
61	  malloc_simple.c, rather then using the versions from dlmalloc.c;
62	  this will make the SPL binary smaller at the cost of more heap
63	  usage as the *_simple malloc functions do not re-use free-ed mem.
64
65config TPL_SYS_MALLOC_SIMPLE
66	bool
67	prompt "Only use malloc_simple functions in the TPL"
68	help
69	  Say Y here to only use the *_simple malloc functions from
70	  malloc_simple.c, rather then using the versions from dlmalloc.c;
71	  this will make the TPL binary smaller at the cost of more heap
72	  usage as the *_simple malloc functions do not re-use free-ed mem.
73
74config SPL_STACK_R
75	bool "Enable SDRAM location for SPL stack"
76	help
77	  SPL starts off execution in SRAM and thus typically has only a small
78	  stack available. Since SPL sets up DRAM while in its board_init_f()
79	  function, it is possible for the stack to move there before
80	  board_init_r() is reached. This option enables a special SDRAM
81	  location for the SPL stack. U-Boot SPL switches to this after
82	  board_init_f() completes, and before board_init_r() starts.
83
84config SPL_STACK_R_ADDR
85	depends on SPL_STACK_R
86	hex "SDRAM location for SPL stack"
87	help
88	  Specify the address in SDRAM for the SPL stack. This will be set up
89	  before board_init_r() is called.
90
91config SPL_STACK_R_MALLOC_SIMPLE_LEN
92	depends on SPL_STACK_R && SPL_SYS_MALLOC_SIMPLE
93	hex "Size of malloc_simple heap after switching to DRAM SPL stack"
94	default 0x100000
95	help
96	  Specify the amount of the stack to use as memory pool for
97	  malloc_simple after switching the stack to DRAM. This may be set
98	  to give board_init_r() a larger heap then the initial heap in
99	  SRAM which is limited to SYS_MALLOC_F_LEN bytes.
100
101config SPL_SEPARATE_BSS
102	bool "BSS section is in a different memory region from text"
103	help
104	  Some platforms need a large BSS region in SPL and can provide this
105	  because RAM is already set up. In this case BSS can be moved to RAM.
106	  This option should then be enabled so that the correct device tree
107	  location is used. Normally we put the device tree at the end of BSS
108	  but with this option enabled, it goes at _image_binary_end.
109
110config SPL_DISPLAY_PRINT
111	bool "Display a board-specific message in SPL"
112	help
113	  If this option is enabled, U-Boot will call the function
114	  spl_display_print() immediately after displaying the SPL console
115	  banner ("U-Boot SPL ..."). This function should be provided by
116	  the board.
117
118config SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
119	bool "MMC raw mode: by sector"
120	default y if ARCH_SUNXI || ARCH_DAVINCI || ARCH_UNIPHIER ||ARCH_MX6 || \
121		     ARCH_ROCKCHIP || ARCH_MVEBU ||  ARCH_SOCFPGA || \
122		     ARCH_AT91 || ARCH_ZYNQ || ARCH_KEYSTONE || OMAP34XX || \
123		     OMAP44XX || OMAP54XX || AM33XX || AM43XX
124	help
125	  Use sector number for specifying U-Boot location on MMC/SD in
126	  raw mode.
127
128config SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR
129	hex "Address on the MMC to load U-Boot from"
130	depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
131	default 0x50 if ARCH_SUNXI
132	default 0x75 if ARCH_DAVINCI
133	default 0x8a if ARCH_MX6
134	default 0x100 if ARCH_ROCKCHIP || ARCH_UNIPHIER
135	default 0x140 if ARCH_MVEBU
136	default 0x200 if ARCH_SOCFPGA || ARCH_AT91
137	default 0x300 if ARCH_ZYNQ || ARCH_KEYSTONE || OMAP34XX || OMAP44XX || \
138		         OMAP54XX || AM33XX || AM43XX
139	help
140	  Address on the MMC to load U-Boot from, when the MMC is being used
141	  in raw mode. Units: MMC sectors (1 sector = 512 bytes).
142
143config SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
144	bool "MMC Raw mode: by partition"
145	help
146	  Use a partition for loading U-Boot when using MMC/SD in raw mode.
147
148config SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION
149	hex "Partition to use to load U-Boot from"
150	depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
151	default 1
152	help
153	  Partition on the MMC to load U-Boot from when the MMC is being
154	  used in raw mode
155
156config SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
157	bool "MMC raw mode: by partition type"
158	depends on DOS_PARTITION && SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
159	help
160	  Use partition type for specifying U-Boot partition on MMC/SD in
161	  raw mode. U-Boot will be loaded from the first partition of this
162	  type to be found.
163
164config SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION_TYPE
165	hex "Partition Type on the MMC to load U-Boot from"
166	depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
167	help
168	  Partition Type on the MMC to load U-Boot from, when the MMC is being
169	  used in raw mode.
170
171config SPL_CRC32_SUPPORT
172	bool "Support CRC32"
173	depends on SPL_FIT
174	help
175	  Enable this to support CRC32 in FIT images within SPL. This is a
176	  32-bit checksum value that can be used to verify images. This is
177	  the least secure type of checksum, suitable for detected
178	  accidental image corruption. For secure applications you should
179	  consider SHA1 or SHA256.
180
181config SPL_MD5_SUPPORT
182	bool "Support MD5"
183	depends on SPL_FIT
184	help
185	  Enable this to support MD5 in FIT images within SPL. An MD5
186	  checksum is a 128-bit hash value used to check that the image
187	  contents have not been corrupted. Note that MD5 is not considered
188	  secure as it is possible (with a brute-force attack) to adjust the
189	  image while still retaining the same MD5 hash value. For secure
190	  applications where images may be changed maliciously, you should
191	  consider SHA1 or SHA256.
192
193config SPL_SHA1_SUPPORT
194	bool "Support SHA1"
195	depends on SPL_FIT
196	select SHA1
197	help
198	  Enable this to support SHA1 in FIT images within SPL. A SHA1
199	  checksum is a 160-bit (20-byte) hash value used to check that the
200	  image contents have not been corrupted or maliciously altered.
201	  While SHA1 is fairly secure it is coming to the end of its life
202	  due to the expanding computing power avaiable to brute-force
203	  attacks. For more security, consider SHA256.
204
205config SPL_SHA256_SUPPORT
206	bool "Support SHA256"
207	depends on SPL_FIT
208	select SHA256
209	help
210	  Enable this to support SHA256 in FIT images within SPL. A SHA256
211	  checksum is a 256-bit (32-byte) hash value used to check that the
212	  image contents have not been corrupted. SHA256 is recommended for
213	  use in secure applications since (as at 2016) there is no known
214	  feasible attack that could produce a 'collision' with differing
215	  input data. Use this for the highest security. Note that only the
216	  SHA256 variant is supported: SHA512 and others are not currently
217	  supported in U-Boot.
218
219config SPL_CPU_SUPPORT
220	bool "Support CPU drivers"
221	help
222	  Enable this to support CPU drivers in SPL. These drivers can set
223	  up CPUs and provide information about them such as the model and
224	  name. This can be useful in SPL since setting up the CPUs earlier
225	  may improve boot performance. Enable this option to build the
226	  drivers in drivers/cpu as part of an SPL build.
227
228config SPL_CRYPTO_SUPPORT
229	bool "Support crypto drivers"
230	help
231	  Enable crypto drivers in SPL. These drivers can be used to
232	  accelerate secure boot processing in secure applications. Enable
233	  this option to build the drivers in drivers/crypto as part of an
234	  SPL build.
235
236config SPL_HASH_SUPPORT
237	bool "Support hashing drivers"
238	select SHA1
239	select SHA256
240	help
241	  Enable hashing drivers in SPL. These drivers can be used to
242	  accelerate secure boot processing in secure applications. Enable
243	  this option to build system-specific drivers for hash acceleration
244	  as part of an SPL build.
245
246config SPL_DMA_SUPPORT
247	bool "Support DMA drivers"
248	help
249	  Enable DMA (direct-memory-access) drivers in SPL. These drivers
250	  can be used to handle memory-to-peripheral data transfer without
251	  the CPU moving the data. Enable this option to build the drivers
252	  in drivers/dma as part of an SPL build.
253
254config SPL_DRIVERS_MISC_SUPPORT
255	bool "Support misc drivers"
256	help
257	  Enable miscellaneous drivers in SPL. These drivers perform various
258	  tasks that don't fall nicely into other categories, Enable this
259	  option to build the drivers in drivers/misc as part of an SPL
260	  build, for those that support building in SPL (not all drivers do).
261
262config SPL_ENV_SUPPORT
263	bool "Support an environment"
264	help
265	  Enable environment support in SPL. The U-Boot environment provides
266	  a number of settings (essentially name/value pairs) which can
267	  control many aspects of U-Boot's operation. Normally this is not
268	  needed in SPL as it has a much simpler task with less
269	  configuration. But some boards use this to support 'Falcon' boot
270	  on EXT2 and FAT, where SPL boots directly into Linux without
271	  starting U-Boot first. Enabling this option will make getenv()
272	  and setenv() available in SPL.
273
274config SPL_SAVEENV
275	bool "Support save environment"
276	depends on SPL_ENV_SUPPORT
277	help
278	  Enable save environment support in SPL after setenv. By default
279	  the saveenv option is not provided in SPL, but some boards need
280	  this support in 'Falcon' boot, where SPL need to boot from
281	  different images based on environment variable set by OS. For
282	  example OS may set "reboot_image" environment variable to
283	  "recovery" inorder to boot recovery image by SPL. The SPL read
284	  "reboot_image" and act accordingly and change the reboot_image
285	  to default mode using setenv and save the environemnt.
286
287config SPL_ETH_SUPPORT
288	bool "Support Ethernet"
289	depends on SPL_ENV_SUPPORT
290	help
291	  Enable access to the network subsystem and associated Ethernet
292	  drivers in SPL. This permits SPL to load U-Boot over an Ethernet
293	  link rather than from an on-board peripheral. Environment support
294	  is required since the network stack uses a number of environment
295	  variables. See also SPL_NET_SUPPORT.
296
297config SPL_EXT_SUPPORT
298	bool "Support EXT filesystems"
299	help
300	  Enable support for EXT2/3/4 filesystems with SPL. This permits
301	  U-Boot (or Linux in Falcon mode) to be loaded from an EXT
302	  filesystem from within SPL. Support for the underlying block
303	  device (e.g. MMC or USB) must be enabled separately.
304
305config SPL_FAT_SUPPORT
306	bool "Support FAT filesystems"
307	select FS_FAT
308	help
309	  Enable support for FAT and VFAT filesystems with SPL. This
310	  permits U-Boot (or Linux in Falcon mode) to be loaded from a FAT
311	  filesystem from within SPL. Support for the underlying block
312	  device (e.g. MMC or USB) must be enabled separately.
313
314config SPL_FPGA_SUPPORT
315	bool "Support FPGAs"
316	help
317	  Enable support for FPGAs in SPL. Field-programmable Gate Arrays
318	  provide software-configurable hardware which is typically used to
319	  implement peripherals (such as UARTs, LCD displays, MMC) or
320	  accelerate custom processing functions, such as image processing
321	  or machine learning. Sometimes it is useful to program the FPGA
322	  as early as possible during boot, and this option can enable that
323	  within SPL.
324
325config SPL_GPIO_SUPPORT
326	bool "Support GPIO"
327	help
328	  Enable support for GPIOs (General-purpose Input/Output) in SPL.
329	  GPIOs allow U-Boot to read the state of an input line (high or
330	  low) and set the state of an output line. This can be used to
331	  drive LEDs, control power to various system parts and read user
332	  input. GPIOs can be useful in SPL to enable a 'sign-of-life' LED,
333	  for example. Enable this option to build the drivers in
334	  drivers/gpio as part of an SPL build.
335
336config SPL_I2C_SUPPORT
337	bool "Support I2C"
338	help
339	  Enable support for the I2C (Inter-Integrated Circuit) bus in SPL.
340	  I2C works with a clock and data line which can be driven by a
341	  one or more masters or slaves. It is a fairly complex bus but is
342	  widely used as it only needs two lines for communication. Speeds of
343	  400kbps are typical but up to 3.4Mbps is supported by some
344	  hardware. I2C can be useful in SPL to configure power management
345	  ICs (PMICs) before raising the CPU clock speed, for example.
346	  Enable this option to build the drivers in drivers/i2c as part of
347	  an SPL build.
348
349config SPL_LIBCOMMON_SUPPORT
350	bool "Support common libraries"
351	help
352	  Enable support for common U-Boot libraries within SPL. These
353	  libraries include common code to deal with U-Boot images,
354	  environment and USB, for example. This option is enabled on many
355	  boards. Enable this option to build the code in common/ as part of
356	  an SPL build.
357
358config SPL_LIBDISK_SUPPORT
359	bool "Support disk paritions"
360	help
361	  Enable support for disk partitions within SPL. 'Disk' is something
362	  of a misnomer as it includes non-spinning media such as flash (as
363	  used in MMC and USB sticks). Partitions provide a way for a disk
364	  to be split up into separate regions, with a partition table placed
365	  at the start or end which describes the location and size of each
366	  'partition'. These partitions are typically uses as individual block
367	  devices, typically with an EXT2 or FAT filesystem in each. This
368	  option enables whatever partition support has been enabled in
369	  U-Boot to also be used in SPL. It brings in the code in disk/.
370
371config SPL_LIBGENERIC_SUPPORT
372	bool "Support generic libraries"
373	help
374	  Enable support for generic U-Boot libraries within SPL. These
375	  libraries include generic code to deal with device tree, hashing,
376	  printf(), compression and the like. This option is enabled on many
377	  boards. Enable this option to build the code in lib/ as part of an
378	  SPL build.
379
380config SPL_MMC_SUPPORT
381	bool "Support MMC"
382	depends on MMC
383	help
384	  Enable support for MMC (Multimedia Card) within SPL. This enables
385	  the MMC protocol implementation and allows any enabled drivers to
386	  be used within SPL. MMC can be used with or without disk partition
387	  support depending on the application (SPL_LIBDISK_SUPPORT). Enable
388	  this option to build the drivers in drivers/mmc as part of an SPL
389	  build.
390
391config SPL_MPC8XXX_INIT_DDR_SUPPORT
392	bool "Support MPC8XXX DDR init"
393	help
394	  Enable support for DDR-SDRAM (double-data-rate synchronous dynamic
395	  random-access memory) on the MPC8XXX family within SPL. This
396	  allows DRAM to be set up before loading U-Boot into that DRAM,
397	  where it can run.
398
399config SPL_MTD_SUPPORT
400	bool "Support MTD drivers"
401	help
402	  Enable support for MTD (Memory Technology Device) within SPL. MTD
403	  provides a block interface over raw NAND and can also be used with
404	  SPI flash. This allows SPL to load U-Boot from supported MTD
405	  devices. See SPL_NAND_SUPPORT and SPL_ONENAND_SUPPORT for how
406	  to enable specific MTD drivers.
407
408config SPL_MUSB_NEW_SUPPORT
409	bool "Support new Mentor Graphics USB"
410	help
411	  Enable support for Mentor Graphics USB in SPL. This is a new
412	  driver used by some boards. Enable this option to build
413	  the drivers in drivers/usb/musb-new as part of an SPL build. The
414	  old drivers are in drivers/usb/musb.
415
416config SPL_NAND_SUPPORT
417	bool "Support NAND flash"
418	help
419	  Enable support for NAND (Negative AND) flash in SPL. NAND flash
420	  can be used to allow SPL to load U-Boot from supported devices.
421	  This enables the drivers in drivers/mtd/nand as part of an SPL
422	  build.
423
424config SPL_NET_SUPPORT
425	bool "Support networking"
426	help
427	  Enable support for network devices (such as Ethernet) in SPL.
428	  This permits SPL to load U-Boot over a network link rather than
429	  from an on-board peripheral. Environment support is required since
430	  the network stack uses a number of environment variables. See also
431	  SPL_ETH_SUPPORT.
432
433if SPL_NET_SUPPORT
434config SPL_NET_VCI_STRING
435	string "BOOTP Vendor Class Identifier string sent by SPL"
436	help
437	  As defined by RFC 2132 the vendor class identifier field can be
438	  sent by the client to identify the vendor type and configuration
439	  of a client.  This is often used in practice to allow for the DHCP
440	  server to specify different files to load depending on if the ROM,
441	  SPL or U-Boot itself makes the request
442endif   # if SPL_NET_SUPPORT
443
444config SPL_NO_CPU_SUPPORT
445	bool "Drop CPU code in SPL"
446	help
447	  This is specific to the ARM926EJ-S CPU. It disables the standard
448	  start.S start-up code, presumably so that a replacement can be
449	  used on that CPU. You should not enable it unless you know what
450	  you are doing.
451
452config SPL_NOR_SUPPORT
453	bool "Support NOR flash"
454	help
455	  Enable support for loading U-Boot from memory-mapped NOR (Negative
456	  OR) flash in SPL. NOR flash is slow to write but fast to read, and
457	  a memory-mapped device makes it very easy to access. Loading from
458	  NOR is typically achieved with just a memcpy().
459
460config SPL_XIP_SUPPORT
461	bool "Support XIP"
462	depends on SPL
463	help
464	  Enable support for execute in place of U-Boot or kernel image. There
465	  is no need to copy image from flash to ram if flash supports execute
466	  in place. Its very useful in systems having enough flash but not
467	  enough ram to load the image.
468
469config SPL_ONENAND_SUPPORT
470	bool "Support OneNAND flash"
471	help
472	  Enable support for OneNAND (Negative AND) flash in SPL. OneNAND is
473	  a type of NAND flash and therefore can be used to allow SPL to
474	  load U-Boot from supported devices. This enables the drivers in
475	  drivers/mtd/onenand as part of an SPL build.
476
477config SPL_OS_BOOT
478	bool "Activate Falcon Mode"
479	depends on !TI_SECURE_DEVICE
480	default n
481	help
482	  Enable booting directly to an OS from SPL.
483	  for more info read doc/README.falcon
484
485if SPL_OS_BOOT
486config SYS_OS_BASE
487	hex "addr, where OS is found"
488	depends on SPL_NOR_SUPPORT
489	help
490	  Specify the address, where the OS image is found, which
491	  gets booted.
492
493endif # SPL_OS_BOOT
494
495config SPL_PCI_SUPPORT
496	bool "Support PCI drivers"
497	help
498	  Enable support for PCI in SPL. For platforms that need PCI to boot,
499	  or must perform some init using PCI in SPL, this provides the
500	  necessary driver support. This enables the drivers in drivers/pci
501	  as part of an SPL build.
502
503config SPL_PCH_SUPPORT
504	bool "Support PCH drivers"
505	help
506	  Enable support for PCH (Platform Controller Hub) devices in SPL.
507	  These are used to set up GPIOs and the SPI peripheral early in
508	  boot. This enables the drivers in drivers/pch as part of an SPL
509	  build.
510
511config SPL_POST_MEM_SUPPORT
512	bool "Support POST drivers"
513	help
514	  Enable support for POST (Power-on Self Test) in SPL. POST is a
515	  procedure that checks that the hardware (CPU or board) appears to
516	  be functionally correctly. It is a sanity check that can be
517	  performed before booting. This enables the drivers in post/drivers
518	  as part of an SPL build.
519
520config SPL_POWER_SUPPORT
521	bool "Support power drivers"
522	help
523	  Enable support for power control in SPL. This includes support
524	  for PMICs (Power-management Integrated Circuits) and some of the
525	  features provided by PMICs. In particular, voltage regulators can
526	  be used to enable/disable power and vary its voltage. That can be
527	  useful in SPL to turn on boot peripherals and adjust CPU voltage
528	  so that the clock speed can be increased. This enables the drivers
529	  in drivers/power, drivers/power/pmic and drivers/power/regulator
530	  as part of an SPL build.
531
532config SPL_RAM_SUPPORT
533	bool "Support booting from RAM"
534	default y if MICROBLAZE || ARCH_SOCFPGA || TEGRA || ARCH_ZYNQ
535	help
536	  Enable booting of an image in RAM. The image can be preloaded or
537	  it can be loaded by SPL directly into RAM (e.g. using USB).
538
539config SPL_RAM_DEVICE
540	bool "Support booting from preloaded image in RAM"
541	depends on SPL_RAM_SUPPORT
542	default y if MICROBLAZE || ARCH_SOCFPGA || TEGRA || ARCH_ZYNQ
543	help
544	  Enable booting of an image already loaded in RAM. The image has to
545	  be already in memory when SPL takes over, e.g. loaded by the boot
546	  ROM.
547
548config SPL_RTC_SUPPORT
549	bool "Support RTC drivers"
550	help
551	  Enable RTC (Real-time Clock) support in SPL. This includes support
552	  for reading and setting the time. Some RTC devices also have some
553	  non-volatile (battery-backed) memory which is accessible if
554	  needed. This enables the drivers in drivers/rtc as part of an SPL
555	  build.
556
557config SPL_SATA_SUPPORT
558	bool "Support loading from SATA"
559	help
560	  Enable support for SATA (Serial AT attachment) in SPL. This allows
561	  use of SATA devices such as hard drives and flash drivers for
562	  loading U-Boot. SATA is used in higher-end embedded systems and
563	  can provide higher performance than MMC , at somewhat higher
564	  expense and power consumption. This enables loading from SATA
565	  using a configured device.
566
567config SPL_SERIAL_SUPPORT
568	bool "Support serial"
569	help
570	  Enable support for serial in SPL. This allows use of a serial UART
571	  for displaying messages while SPL is running. It also brings in
572	  printf() and panic() functions. This should normally be enabled
573	  unless there are space reasons not to. Even then, consider
574	  enabling USE_TINY_PRINTF which is a small printf() version.
575
576config SPL_SPI_FLASH_SUPPORT
577	bool "Support SPI flash drivers"
578	help
579	  Enable support for using SPI flash in SPL, and loading U-Boot from
580	  SPI flash. SPI flash (Serial Peripheral Bus flash) is named after
581	  the SPI bus that is used to connect it to a system. It is a simple
582	  but fast bidirectional 4-wire bus (clock, chip select and two data
583	  lines). This enables the drivers in drivers/mtd/spi as part of an
584	  SPL build. This normally requires SPL_SPI_SUPPORT.
585
586config SPL_SPI_SUPPORT
587	bool "Support SPI drivers"
588	help
589	  Enable support for using SPI in SPL. This is used for connecting
590	  to SPI flash for loading U-Boot. See SPL_SPI_FLASH_SUPPORT for
591	  more details on that. The SPI driver provides the transport for
592	  data between the SPI flash and the CPU. This option can be used to
593	  enable SPI drivers that are needed for other purposes also, such
594	  as a SPI PMIC.
595
596config SPL_TIMER_SUPPORT
597	bool "Support timer drivers"
598	help
599	  Enable support for timer drivers in SPL. These can be used to get
600	  a timer value when in SPL, or perhaps for implementing a delay
601	  function. This enables the drivers in drivers/timer as part of an
602	  SPL build.
603
604config SPL_USB_HOST_SUPPORT
605	bool "Support USB host drivers"
606	help
607	  Enable access to USB (Universal Serial Bus) host devices so that
608	  SPL can load U-Boot from a connected USB peripheral, such as a USB
609	  flash stick. While USB takes a little longer to start up than most
610	  buses, it is very flexible since many different types of storage
611	  device can be attached. This option enables the drivers in
612	  drivers/usb/host as part of an SPL build.
613
614config SPL_USB_SUPPORT
615	bool "Support loading from USB"
616	depends on SPL_USB_HOST_SUPPORT
617	help
618	  Enable support for USB devices in SPL. This allows use of USB
619	  devices such as hard drives and flash drivers for loading U-Boot.
620	  The actual drivers are enabled separately using the normal U-Boot
621	  config options. This enables loading from USB using a configured
622	  device.
623
624config SPL_USB_GADGET_SUPPORT
625	bool "Suppport USB Gadget drivers"
626	help
627	  Enable USB Gadget API which allows to enable USB device functions
628	  in SPL.
629
630if SPL_USB_GADGET_SUPPORT
631
632config SPL_USBETH_SUPPORT
633	bool "Support USB Ethernet drivers"
634	help
635	  Enable access to the USB network subsystem and associated
636	  drivers in SPL. This permits SPL to load U-Boot over a
637	  USB-connected Ethernet link (such as a USB Ethernet dongle) rather
638	  than from an onboard peripheral. Environment support is required
639	  since the network stack uses a number of environment variables.
640	  See also SPL_NET_SUPPORT and SPL_ETH_SUPPORT.
641
642config SPL_DFU_SUPPORT
643	bool "Support DFU (Device Firmware Upgarde)"
644	select SPL_HASH_SUPPORT
645	select SPL_DFU_NO_RESET
646	depends on SPL_RAM_SUPPORT
647	help
648	  This feature enables the DFU (Device Firmware Upgarde) in SPL with
649	  RAM memory device support. The ROM code will load and execute
650	  the SPL built with dfu. The user can load binaries (u-boot/kernel) to
651	  selected device partition from host-pc using dfu-utils.
652	  This feature is useful to flash the binaries to factory or bare-metal
653	  boards using USB interface.
654
655choice
656	bool "DFU device selection"
657	depends on SPL_DFU_SUPPORT
658
659config SPL_DFU_RAM
660	bool "RAM device"
661	depends on SPL_DFU_SUPPORT && SPL_RAM_SUPPORT
662	help
663	 select RAM/DDR memory device for loading binary images
664	 (u-boot/kernel) to the selected device partition using
665	 DFU and execute the u-boot/kernel from RAM.
666
667endchoice
668
669endif
670
671config SPL_WATCHDOG_SUPPORT
672	bool "Support watchdog drivers"
673	help
674	  Enable support for watchdog drivers in SPL. A watchdog is
675	  typically a hardware peripheral which can reset the system when it
676	  detects no activity for a while (such as a software crash). This
677	  enables the drivers in drivers/watchdog as part of an SPL build.
678
679config SPL_YMODEM_SUPPORT
680	bool "Support loading using Ymodem"
681	help
682	  While loading from serial is slow it can be a useful backup when
683	  there is no other option. The Ymodem protocol provides a reliable
684	  means of transmitting U-Boot over a serial line for using in SPL,
685	  with a checksum to ensure correctness.
686
687config SPL_ATF_SUPPORT
688	bool "Support ARM Trusted Firmware"
689	depends on ARM64
690	help
691	  ATF(ARM Trusted Firmware) is a component for ARM arch64 which which
692	  is loaded by SPL(which is considered as BL2 in ATF terminology).
693	  More detail at: https://github.com/ARM-software/arm-trusted-firmware
694
695config SPL_ATF_TEXT_BASE
696	depends on SPL_ATF_SUPPORT
697	hex "ATF BL31 base address"
698	help
699	  This is the base address in memory for ATF BL31 text and entry point.
700
701config TPL
702	bool
703	depends on SUPPORT_TPL
704	prompt "Enable TPL"
705	help
706	  If you want to build TPL as well as the normal image and SPL, say Y.
707
708if TPL
709
710config TPL_BOOTROM_SUPPORT
711        bool "Support returning to the BOOTROM (from TPL)"
712	help
713	  Some platforms (e.g. the Rockchip RK3368) provide support in their
714	  ROM for loading the next boot-stage after performing basic setup
715	  from the TPL stage.
716
717	  Enable this option, to return to the BOOTROM through the
718	  BOOT_DEVICE_BOOTROM (or fall-through to the next boot device in the
719	  boot device list, if not implemented for a given board)
720
721config TPL_DRIVERS_MISC_SUPPORT
722	bool "Support misc drivers in TPL"
723	help
724	  Enable miscellaneous drivers in TPL. These drivers perform various
725	  tasks that don't fall nicely into other categories, Enable this
726	  option to build the drivers in drivers/misc as part of an TPL
727	  build, for those that support building in TPL (not all drivers do).
728
729config TPL_ENV_SUPPORT
730	bool "Support an environment"
731	help
732	  Enable environment support in TPL. See SPL_ENV_SUPPORT for details.
733
734config TPL_I2C_SUPPORT
735	bool "Support I2C"
736	help
737	  Enable support for the I2C bus in TPL. See SPL_I2C_SUPPORT for
738	  details.
739
740config TPL_LIBCOMMON_SUPPORT
741	bool "Support common libraries"
742	help
743	  Enable support for common U-Boot libraries within TPL. See
744	  SPL_LIBCOMMON_SUPPORT for details.
745
746config TPL_LIBGENERIC_SUPPORT
747	bool "Support generic libraries"
748	help
749	  Enable support for generic U-Boot libraries within TPL. See
750	  SPL_LIBGENERIC_SUPPORT for details.
751
752config TPL_MPC8XXX_INIT_DDR_SUPPORT
753	bool "Support MPC8XXX DDR init"
754	help
755	  Enable support for DDR-SDRAM on the MPC8XXX family within TPL. See
756	  SPL_MPC8XXX_INIT_DDR_SUPPORT for details.
757
758config TPL_MMC_SUPPORT
759	bool "Support MMC"
760	depends on MMC
761	help
762	  Enable support for MMC within TPL. See SPL_MMC_SUPPORT for details.
763
764config TPL_NAND_SUPPORT
765	bool "Support NAND flash"
766	help
767	  Enable support for NAND in TPL. See SPL_NAND_SUPPORT for details.
768
769config TPL_SERIAL_SUPPORT
770	bool "Support serial"
771	help
772	  Enable support for serial in TPL. See SPL_SERIAL_SUPPORT for
773	  details.
774
775config TPL_SPI_FLASH_SUPPORT
776	bool "Support SPI flash drivers"
777	help
778	  Enable support for using SPI flash in TPL. See SPL_SPI_FLASH_SUPPORT
779	  for details.
780
781config TPL_SPI_SUPPORT
782	bool "Support SPI drivers"
783	help
784	  Enable support for using SPI in TPL. See SPL_SPI_SUPPORT for
785	  details.
786
787endif # TPL
788
789endif # SPL
790endmenu
791