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