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