Merge branch '2021-10-05-general-updates'
[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 config SPL_FRAMEWORK_BOARD_INIT_F
29         bool "Define a generic function board_init_f"
30         depends on SPL_FRAMEWORK
31         help
32           Define a generic function board_init_f that:
33           - initialize the spl (spl_early_init)
34           - initialize the serial (preloader_console_init)
35           Unless you want to provide your own board_init_f, you should say Y.
36
37 config SPL_SIZE_LIMIT
38         hex "Maximum size of SPL image"
39         depends on SPL
40         default 0x11000 if ARCH_MX6 && !MX6_OCRAM_256KB
41         default 0x31000 if ARCH_MX6 && MX6_OCRAM_256KB
42         default 0x0
43         help
44           Specifies the maximum length of the U-Boot SPL image.
45           If this value is zero, it is ignored.
46
47 config SPL_SIZE_LIMIT_SUBTRACT_GD
48         bool "SPL image size check: provide space for global data"
49         depends on SPL_SIZE_LIMIT > 0
50         help
51           If enabled, aligned size of global data is reserved in
52           SPL_SIZE_LIMIT check to ensure such an image does not overflow SRAM
53           if SPL_SIZE_LIMIT describes the size of SRAM available for SPL when
54           pre-reloc global data is put into this SRAM, too.
55
56 config SPL_SIZE_LIMIT_SUBTRACT_MALLOC
57         bool "SPL image size check: provide space for malloc() pool before relocation"
58         depends on SPL_SIZE_LIMIT > 0
59         help
60           If enabled, SPL_SYS_MALLOC_F_LEN is reserved in SPL_SIZE_LIMIT check
61           to ensure such an image does not overflow SRAM if SPL_SIZE_LIMIT
62           describes the size of SRAM available for SPL when pre-reloc malloc
63           pool is put into this SRAM, too.
64
65 config SPL_SIZE_LIMIT_PROVIDE_STACK
66         hex "SPL image size check: provide stack space before relocation"
67         depends on SPL_SIZE_LIMIT > 0
68         default 0
69         help
70           If set, this size is reserved in SPL_SIZE_LIMIT check to ensure such
71           an image does not overflow SRAM if SPL_SIZE_LIMIT describes the size
72           of SRAM available for SPL when the stack required before reolcation
73           uses this SRAM, too.
74
75 config SPL_SYS_STACK_F_CHECK_BYTE
76         hex
77         default 0xaa
78         help
79           Constant used to check the stack
80
81 config SPL_SYS_REPORT_STACK_F_USAGE
82         depends on SPL_SIZE_LIMIT_PROVIDE_STACK != 0
83         bool "Check and report stack usage in SPL before relocation"
84         help
85           If this option is enabled, the initial SPL stack is filled with 0xaa
86           very early, up to the size configured with
87           SPL_SIZE_LIMIT_PROVIDE_STACK.
88           Later when SPL is done using this initial stack and switches to a
89           stack in DRAM, the actually used size of this initial stack is
90           reported by examining the memory and searching for the lowest
91           occurrence of non 0xaa bytes.
92           This default implementation works for stacks growing down only.
93
94 config SPL_SHOW_ERRORS
95         bool "Show more information when something goes wrong"
96         help
97           This enabled more verbose error messages and checking when something
98           goes wrong in SPL. For example, it shows the error code when U-Boot
99           cannot be located. This can help to diagnose the problem and figure
100           out a fix, particularly during development.
101
102           This adds a small amount to SPL code size, perhaps 100 bytes.
103
104 menu "PowerPC and LayerScape SPL Boot options"
105
106 config SPL_NAND_BOOT
107         bool "Load SPL from NAND flash"
108         depends on PPC && (SUPPORT_SPL && !SPL_FRAMEWORK)
109
110 config SPL_MMC_BOOT
111         bool "Load SPL from SD Card / eMMC"
112         depends on PPC && (SUPPORT_SPL && !SPL_FRAMEWORK)
113
114 config SPL_SPI_BOOT
115         bool "Load SPL from SPI flash"
116         depends on PPC && (SUPPORT_SPL && !SPL_FRAMEWORK)
117
118 config SPL_FSL_PBL
119         bool "Create SPL in Freescale PBI format"
120         depends on (PPC || ARCH_LS1021A || ARCH_LS1043A || ARCH_LS1046A) && \
121                     SUPPORT_SPL
122         help
123           Create boot binary having SPL binary in PBI format concatenated with
124           u-boot binary.
125
126 endmenu
127
128 config HANDOFF
129         bool "Pass hand-off information from SPL to U-Boot proper"
130         depends on SPL && BLOBLIST
131         help
132           It is useful to be able to pass information from SPL to U-Boot
133           proper to preserve state that is known in SPL and is needed in U-Boot.
134           Enable this to locate the handoff information in U-Boot proper, early
135           in boot. It is available in gd->handoff. The state state is set up
136           in SPL (or TPL if that is being used).
137
138 if SPL
139
140 config SPL_HANDOFF
141         bool "Pass hand-off information from SPL to U-Boot proper"
142         depends on HANDOFF && SPL_BLOBLIST
143         default y
144         help
145           This option enables SPL to write handoff information. This can be
146           used to pass information like the size of SDRAM from SPL to U-Boot
147           proper. Also SPL can receive information from TPL in the same place
148           if that is enabled.
149
150 config SPL_LDSCRIPT
151         string "Linker script for the SPL stage"
152         default "arch/\$(ARCH)/cpu/u-boot-spl.lds"
153         help
154           The SPL stage will usually require a different linker-script
155           (as it runs from a different memory region) than the regular
156           U-Boot stage.  Set this to the path of the linker-script to
157           be used for SPL.
158
159 config SPL_TEXT_BASE
160         hex "SPL Text Base"
161         default ISW_ENTRY_ADDR if AM43XX || AM33XX || OMAP54XX || ARCH_KEYSTONE
162         default 0x10060 if MACH_SUN50I || MACH_SUN50I_H5 || MACH_SUN9I
163         default 0x20060 if SUN50I_GEN_H6
164         default 0x00060 if ARCH_SUNXI
165         default 0xfffc0000 if ARCH_ZYNQMP
166         default 0x0
167         help
168           The address in memory that SPL will be running from.
169
170 config SPL_BOARD_INIT
171         bool "Call board-specific initialization in SPL"
172         help
173           If this option is enabled, U-Boot will call the function
174           spl_board_init() from board_init_r(). This function should be
175           provided by the board.
176
177 config SPL_BOOTROM_SUPPORT
178         bool "Support returning to the BOOTROM"
179         help
180           Some platforms (e.g. the Rockchip RK3368) provide support in their
181           ROM for loading the next boot-stage after performing basic setup
182           from the SPL stage.
183
184           Enable this option, to return to the BOOTROM through the
185           BOOT_DEVICE_BOOTROM (or fall-through to the next boot device in the
186           boot device list, if not implemented for a given board)
187
188 config SPL_BOOTCOUNT_LIMIT
189         bool "Support bootcount in SPL"
190         depends on SPL_ENV_SUPPORT && !TPL_BOOTCOUNT_LIMIT
191         help
192           On some boards, which use 'falcon' mode, it is necessary to check
193           and increment the number of boot attempts. Such boards do not
194           use proper U-Boot for normal boot flow and hence needs those
195           adjustments to be done in the SPL.
196
197 config SPL_RAW_IMAGE_SUPPORT
198         bool "Support SPL loading and booting of RAW images"
199         default n if (ARCH_MX6 && (SPL_MMC || SPL_SATA))
200         default y if !TI_SECURE_DEVICE
201         help
202           SPL will support loading and booting a RAW image when this option
203           is y. If this is not set, SPL will move on to other available
204           boot media to find a suitable image.
205
206 config SPL_LEGACY_IMAGE_SUPPORT
207         bool "Support SPL loading and booting of Legacy images"
208         default y if !TI_SECURE_DEVICE && !SPL_LOAD_FIT
209         help
210           SPL will support loading and booting Legacy images when this option
211           is y. If this is not set, SPL will move on to other available
212           boot media to find a suitable image.
213
214 config SPL_LEGACY_IMAGE_CRC_CHECK
215         bool "Check CRC of Legacy images"
216         depends on SPL_LEGACY_IMAGE_SUPPORT
217         select SPL_CRC32
218         help
219           Enable this to check the CRC of Legacy images. While this increases
220           reliability, it affects both code size and boot duration.
221           If disabled, Legacy images are booted if the image magic and size
222           are correct, without further integrity checks.
223
224 config SPL_SYS_MALLOC_SIMPLE
225         bool
226         prompt "Only use malloc_simple functions in the SPL"
227         help
228           Say Y here to only use the *_simple malloc functions from
229           malloc_simple.c, rather then using the versions from dlmalloc.c;
230           this will make the SPL binary smaller at the cost of more heap
231           usage as the *_simple malloc functions do not re-use free-ed mem.
232
233 config TPL_SYS_MALLOC_SIMPLE
234         bool
235         prompt "Only use malloc_simple functions in the TPL"
236         depends on TPL
237         help
238           Say Y here to only use the *_simple malloc functions from
239           malloc_simple.c, rather then using the versions from dlmalloc.c;
240           this will make the TPL binary smaller at the cost of more heap
241           usage as the *_simple malloc functions do not re-use free-ed mem.
242
243 config SPL_STACK_R
244         bool "Enable SDRAM location for SPL stack"
245         help
246           SPL starts off execution in SRAM and thus typically has only a small
247           stack available. Since SPL sets up DRAM while in its board_init_f()
248           function, it is possible for the stack to move there before
249           board_init_r() is reached. This option enables a special SDRAM
250           location for the SPL stack. U-Boot SPL switches to this after
251           board_init_f() completes, and before board_init_r() starts.
252
253 config SPL_STACK_R_ADDR
254         depends on SPL_STACK_R
255         hex "SDRAM location for SPL stack"
256         default 0x82000000 if ARCH_OMAP2PLUS
257         help
258           Specify the address in SDRAM for the SPL stack. This will be set up
259           before board_init_r() is called.
260
261 config SPL_STACK_R_MALLOC_SIMPLE_LEN
262         depends on SPL_STACK_R && SPL_SYS_MALLOC_SIMPLE
263         hex "Size of malloc_simple heap after switching to DRAM SPL stack"
264         default 0x100000
265         help
266           Specify the amount of the stack to use as memory pool for
267           malloc_simple after switching the stack to DRAM. This may be set
268           to give board_init_r() a larger heap then the initial heap in
269           SRAM which is limited to SYS_MALLOC_F_LEN bytes.
270
271 config SPL_SEPARATE_BSS
272         bool "BSS section is in a different memory region from text"
273         help
274           Some platforms need a large BSS region in SPL and can provide this
275           because RAM is already set up. In this case BSS can be moved to RAM.
276           This option should then be enabled so that the correct device tree
277           location is used. Normally we put the device tree at the end of BSS
278           but with this option enabled, it goes at _image_binary_end.
279
280 config SPL_READ_ONLY
281         bool
282         depends on SPL_OF_PLATDATA
283         # Bind cannot be supported because the udevice structs are in read-only
284         # memory so we cannot update the linked lists.
285         select SPL_OF_PLATDATA_NO_BIND
286         select SPL_OF_PLATDATA_RT
287         help
288           Some platforms (e.g. x86 Apollo Lake) load SPL into a read-only
289           section of memory. This means that of-platdata must make a copy (in
290           writeable memory) of anything it wants to modify, such as
291           device-private data.
292
293 config SPL_BANNER_PRINT
294         bool "Enable output of the SPL banner 'U-Boot SPL ...'"
295         default y
296         help
297           If this option is enabled, SPL will print the banner with version
298           info. Disabling this option could be useful to reduce SPL boot time
299           (e.g. approx. 6 ms faster, when output on i.MX6 with 115200 baud).
300
301 config TPL_BANNER_PRINT
302         bool "Enable output of the TPL banner 'U-Boot TPL ...'"
303         depends on TPL
304         default y
305         help
306           If this option is enabled, TPL will print the banner with version
307           info. Disabling this option could be useful to reduce TPL boot time
308           (e.g. approx. 6 ms faster, when output on i.MX6 with 115200 baud).
309
310 config SPL_EARLY_BSS
311         depends on ARM && !ARM64
312         bool "Allows initializing BSS early before entering board_init_f"
313         help
314           On some platform we have sufficient memory available early on to
315           allow setting up and using a basic BSS prior to entering
316           board_init_f. Activating this option will also de-activate the
317           clearing of BSS during the SPL relocation process, thus allowing
318           to carry state from board_init_f to board_init_r by way of BSS.
319
320 config SPL_DISPLAY_PRINT
321         bool "Display a board-specific message in SPL"
322         help
323           If this option is enabled, U-Boot will call the function
324           spl_display_print() immediately after displaying the SPL console
325           banner ("U-Boot SPL ..."). This function should be provided by
326           the board.
327
328 config SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
329         bool "MMC raw mode: by sector"
330         default y if ARCH_SUNXI || ARCH_DAVINCI || ARCH_UNIPHIER || \
331                      ARCH_MX6 || ARCH_MX7 || \
332                      ARCH_ROCKCHIP || ARCH_MVEBU ||  ARCH_SOCFPGA || \
333                      ARCH_AT91 || ARCH_ZYNQ || ARCH_KEYSTONE || OMAP34XX || \
334                      OMAP44XX || OMAP54XX || AM33XX || AM43XX || \
335                      TARGET_SIFIVE_UNLEASHED || TARGET_SIFIVE_UNMATCHED
336         help
337           Use sector number for specifying U-Boot location on MMC/SD in
338           raw mode.
339
340 config SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR
341         hex "Address on the MMC to load U-Boot from"
342         depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
343         default 0x40 if ARCH_SUNXI
344         default 0x75 if ARCH_DAVINCI
345         default 0x8a if ARCH_MX6 || ARCH_MX7
346         default 0x100 if ARCH_UNIPHIER
347         default 0x0 if ARCH_MVEBU
348         default 0x200 if ARCH_SOCFPGA || ARCH_AT91
349         default 0x300 if ARCH_ZYNQ || ARCH_KEYSTONE || OMAP34XX || OMAP44XX || \
350                          OMAP54XX || AM33XX || AM43XX || ARCH_K3
351         default 0x4000 if ARCH_ROCKCHIP
352         default 0x822 if TARGET_SIFIVE_UNLEASHED || TARGET_SIFIVE_UNMATCHED
353         help
354           Address on the MMC to load U-Boot from, when the MMC is being used
355           in raw mode. Units: MMC sectors (1 sector = 512 bytes).
356
357 config SYS_MMCSD_RAW_MODE_U_BOOT_DATA_PART_OFFSET
358         hex "U-Boot main hardware partition image offset"
359         depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
360         default 0x10 if ARCH_SUNXI
361         default 0x0
362         help
363           On some platforms SPL location depends on hardware partition. The ROM
364           code skips the MBR sector when loading SPL from main hardware data
365           partition. This adds offset to the main U-Boot image. Set this symbol
366           to the number of skipped sectors.
367
368           If unsure, leave the default.
369
370 config SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
371         bool "MMC Raw mode: by partition"
372         help
373           Use a partition for loading U-Boot when using MMC/SD in raw mode.
374
375 config SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION
376         hex "Partition to use to load U-Boot from"
377         depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
378         default 1
379         help
380           Partition on the MMC to load U-Boot from when the MMC is being
381           used in raw mode
382
383 config SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
384         bool "MMC raw mode: by partition type"
385         depends on DOS_PARTITION && SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
386         help
387           Use partition type for specifying U-Boot partition on MMC/SD in
388           raw mode. U-Boot will be loaded from the first partition of this
389           type to be found.
390
391 config SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION_TYPE
392         hex "Partition Type on the MMC to load U-Boot from"
393         depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
394         help
395           Partition Type on the MMC to load U-Boot from, when the MMC is being
396           used in raw mode.
397
398 config SUPPORT_EMMC_BOOT_OVERRIDE_PART_CONFIG
399         bool "Override eMMC EXT_CSC_PART_CONFIG by user defined partition"
400         depends on SUPPORT_EMMC_BOOT
401         help
402           eMMC boot partition is normally configured by the bits of the EXT_CSD
403           register (EXT_CSC_PART_CONFIG), BOOT_PARTITION_ENABLE field. In some
404           cases it might be required in SPL to load the image from different
405           partition than the partition selected by EXT_CSC_PART_CONFIG register.
406           Enable this option if you intend to use an eMMC boot partition other
407           then selected via EXT_CSC_PART_CONFIG register and specify the custom
408           partition number by the CONFIG_SYS_MMCSD_RAW_MODE_EMMC_BOOT_PARTITION
409           option.
410
411 config SYS_MMCSD_RAW_MODE_EMMC_BOOT_PARTITION
412         int "Number of the eMMC boot partition to use"
413         depends on SUPPORT_EMMC_BOOT_OVERRIDE_PART_CONFIG
414         default 1
415         help
416           eMMC boot partition number to use when the eMMC in raw mode and
417           the eMMC EXT_CSC_PART_CONFIG selection should be overridden in SPL
418           by user defined partition number.
419
420 config SPL_CRC32
421         bool "Support CRC32"
422         default y if SPL_LEGACY_IMAGE_SUPPORT
423         help
424           Enable this to support CRC32 in uImages or FIT images within SPL.
425           This is a 32-bit checksum value that can be used to verify images.
426           For FIT images, this is the least secure type of checksum, suitable
427           for detected accidental image corruption. For secure applications you
428           should consider SHA1 or SHA256.
429
430 config SPL_MD5
431         bool "Support MD5"
432         depends on SPL_FIT
433         help
434           Enable this to support MD5 in FIT images within SPL. An MD5
435           checksum is a 128-bit hash value used to check that the image
436           contents have not been corrupted. Note that MD5 is not considered
437           secure as it is possible (with a brute-force attack) to adjust the
438           image while still retaining the same MD5 hash value. For secure
439           applications where images may be changed maliciously, you should
440           consider SHA256 or SHA384.
441
442 config SPL_FIT_IMAGE_TINY
443         bool "Remove functionality from SPL FIT loading to reduce size"
444         depends on SPL_FIT
445         default y if MACH_SUN50I || MACH_SUN50I_H5 || SUN50I_GEN_H6
446         default y if ARCH_IMX8M
447         help
448           Enable this to reduce the size of the FIT image loading code
449           in SPL, if space for the SPL binary is very tight.
450
451           This skips the recording of each loaded payload
452           (i.e. loadable) into the FDT (modifying the loaded FDT to
453           ensure this information is available to the next image
454           invoked).
455
456 config SPL_CACHE
457         bool "Support CACHE drivers"
458         help
459           Enable CACHE drivers in SPL. These drivers can keep data so that
460           future requests for that data can be served faster. Enable this option
461           to build the drivers in drivers/cache as part of an SPL build.
462
463 config SPL_CPU
464         bool "Support CPU drivers"
465         help
466           Enable this to support CPU drivers in SPL. These drivers can set
467           up CPUs and provide information about them such as the model and
468           name. This can be useful in SPL since setting up the CPUs earlier
469           may improve boot performance. Enable this option to build the
470           drivers in drivers/cpu as part of an SPL build.
471
472 config SPL_CRYPTO
473         bool "Support crypto drivers"
474         help
475           Enable crypto drivers in SPL. These drivers can be used to
476           accelerate secure boot processing in secure applications. Enable
477           this option to build the drivers in drivers/crypto as part of an
478           SPL build.
479
480 config SPL_DMA
481         bool "Support DMA drivers"
482         help
483           Enable DMA (direct-memory-access) drivers in SPL. These drivers
484           can be used to handle memory-to-peripheral data transfer without
485           the CPU moving the data. Enable this option to build the drivers
486           in drivers/dma as part of an SPL build.
487
488 config SPL_DRIVERS_MISC
489         bool "Support misc drivers"
490         help
491           Enable miscellaneous drivers in SPL. These drivers perform various
492           tasks that don't fall nicely into other categories, Enable this
493           option to build the drivers in drivers/misc as part of an SPL
494           build, for those that support building in SPL (not all drivers do).
495
496 config SPL_ENV_SUPPORT
497         bool "Support an environment"
498         help
499           Enable environment support in SPL. The U-Boot environment provides
500           a number of settings (essentially name/value pairs) which can
501           control many aspects of U-Boot's operation. Normally this is not
502           needed in SPL as it has a much simpler task with less
503           configuration. But some boards use this to support 'Falcon' boot
504           on EXT2 and FAT, where SPL boots directly into Linux without
505           starting U-Boot first. Enabling this option will make env_get()
506           and env_set() available in SPL.
507
508 config SPL_SAVEENV
509         bool "Support save environment"
510         depends on SPL_ENV_SUPPORT
511         select SPL_MMC_WRITE if ENV_IS_IN_MMC
512         help
513           Enable save environment support in SPL after setenv. By default
514           the saveenv option is not provided in SPL, but some boards need
515           this support in 'Falcon' boot, where SPL need to boot from
516           different images based on environment variable set by OS. For
517           example OS may set "reboot_image" environment variable to
518           "recovery" inorder to boot recovery image by SPL. The SPL read
519           "reboot_image" and act accordingly and change the reboot_image
520           to default mode using setenv and save the environment.
521
522 config SPL_ETH
523         bool "Support Ethernet"
524         depends on SPL_ENV_SUPPORT
525         depends on SPL_NET
526         help
527           Enable access to the network subsystem and associated Ethernet
528           drivers in SPL. This permits SPL to load U-Boot over an Ethernet
529           link rather than from an on-board peripheral. Environment support
530           is required since the network stack uses a number of environment
531           variables. See also SPL_NET.
532
533 config SPL_FS_EXT4
534         bool "Support EXT filesystems"
535         help
536           Enable support for EXT2/3/4 filesystems with SPL. This permits
537           U-Boot (or Linux in Falcon mode) to be loaded from an EXT
538           filesystem from within SPL. Support for the underlying block
539           device (e.g. MMC or USB) must be enabled separately.
540
541 config SPL_FS_SQUASHFS
542         bool "Support SquashFS filesystems"
543         select FS_SQUASHFS
544         help
545           Enable support for SquashFS filesystems with SPL. This permits
546           U-Boot (or Linux in Falcon mode) to be loaded from a SquashFS
547           filesystem from within SPL. Support for the underlying block
548           device (e.g. MMC or USB) must be enabled separately.
549
550 config SPL_FS_FAT
551         bool "Support FAT filesystems"
552         select FS_FAT
553         help
554           Enable support for FAT and VFAT filesystems with SPL. This
555           permits U-Boot (or Linux in Falcon mode) to be loaded from a FAT
556           filesystem from within SPL. Support for the underlying block
557           device (e.g. MMC or USB) must be enabled separately.
558
559 config SPL_FAT_WRITE
560         bool "Support write for FAT filesystems"
561         help
562           Enable write support for FAT and VFAT filesystems with SPL.
563           Support for the underlying block device (e.g. MMC or USB) must be
564           enabled separately.
565
566 config SPL_FPGA
567         bool "Support FPGAs"
568         help
569           Enable support for FPGAs in SPL. Field-programmable Gate Arrays
570           provide software-configurable hardware which is typically used to
571           implement peripherals (such as UARTs, LCD displays, MMC) or
572           accelerate custom processing functions, such as image processing
573           or machine learning. Sometimes it is useful to program the FPGA
574           as early as possible during boot, and this option can enable that
575           within SPL.
576
577 config SPL_GPIO
578         bool "Support GPIO in SPL"
579         help
580           Enable support for GPIOs (General-purpose Input/Output) in SPL.
581           GPIOs allow U-Boot to read the state of an input line (high or
582           low) and set the state of an output line. This can be used to
583           drive LEDs, control power to various system parts and read user
584           input. GPIOs can be useful in SPL to enable a 'sign-of-life' LED,
585           for example. Enable this option to build the drivers in
586           drivers/gpio as part of an SPL build.
587
588 config SPL_I2C
589         bool "Support I2C"
590         help
591           Enable support for the I2C (Inter-Integrated Circuit) bus in SPL.
592           I2C works with a clock and data line which can be driven by a
593           one or more masters or slaves. It is a fairly complex bus but is
594           widely used as it only needs two lines for communication. Speeds of
595           400kbps are typical but up to 3.4Mbps is supported by some
596           hardware. I2C can be useful in SPL to configure power management
597           ICs (PMICs) before raising the CPU clock speed, for example.
598           Enable this option to build the drivers in drivers/i2c as part of
599           an SPL build.
600
601 config SPL_LIBCOMMON_SUPPORT
602         bool "Support common libraries"
603         help
604           Enable support for common U-Boot libraries within SPL. These
605           libraries include common code to deal with U-Boot images,
606           environment and USB, for example. This option is enabled on many
607           boards. Enable this option to build the code in common/ as part of
608           an SPL build.
609
610 config SPL_LIBDISK_SUPPORT
611         bool "Support disk partitions"
612         select PARTITIONS
613         help
614           Enable support for disk partitions within SPL. 'Disk' is something
615           of a misnomer as it includes non-spinning media such as flash (as
616           used in MMC and USB sticks). Partitions provide a way for a disk
617           to be split up into separate regions, with a partition table placed
618           at the start or end which describes the location and size of each
619           'partition'. These partitions are typically uses as individual block
620           devices, typically with an EXT2 or FAT filesystem in each. This
621           option enables whatever partition support has been enabled in
622           U-Boot to also be used in SPL. It brings in the code in disk/.
623
624 config SPL_LIBGENERIC_SUPPORT
625         bool "Support generic libraries"
626         help
627           Enable support for generic U-Boot libraries within SPL. These
628           libraries include generic code to deal with device tree, hashing,
629           printf(), compression and the like. This option is enabled on many
630           boards. Enable this option to build the code in lib/ as part of an
631           SPL build.
632
633 config SPL_DM_MAILBOX
634         bool "Support Mailbox"
635         help
636           Enable support for Mailbox within SPL. This enable the inter
637           processor communication protocols tobe used within SPL. Enable
638           this option to build the drivers in drivers/mailbox as part of
639           SPL build.
640
641 config SPL_MMC
642         bool "Support MMC"
643         depends on MMC
644         select HAVE_BLOCK_DEVICE
645         help
646           Enable support for MMC (Multimedia Card) within SPL. This enables
647           the MMC protocol implementation and allows any enabled drivers to
648           be used within SPL. MMC can be used with or without disk partition
649           support depending on the application (SPL_LIBDISK_SUPPORT). Enable
650           this option to build the drivers in drivers/mmc as part of an SPL
651           build.
652
653 config SYS_MMCSD_FS_BOOT_PARTITION
654         int "MMC Boot Partition"
655         default 1
656         help
657           Partition on the MMC to load U-Boot from when the MMC is being
658           used in fs mode
659
660 config SPL_MMC_TINY
661         bool "Tiny MMC framework in SPL"
662         depends on SPL_MMC
663         help
664           Enable MMC framework tinification support. This option is useful if
665           if your SPL is extremely size constrained. Heed the warning, enable
666           this option if and only if you know exactly what you are doing, if
667           you are reading this help text, you most likely have no idea :-)
668
669           The MMC framework is reduced to bare minimum to be useful. No malloc
670           support is needed for the MMC framework operation with this option
671           enabled. The framework supports exactly one MMC device and exactly
672           one MMC driver. The MMC driver can be adjusted to avoid any malloc
673           operations too, which can remove the need for malloc support in SPL
674           and thus further reduce footprint.
675
676 config SPL_MMC_WRITE
677         bool "MMC/SD/SDIO card support for write operations in SPL"
678         depends on SPL_MMC
679         help
680           Enable write access to MMC and SD Cards in SPL
681
682
683 config SPL_MPC8XXX_INIT_DDR
684         bool "Support MPC8XXX DDR init"
685         help
686           Enable support for DDR-SDRAM (double-data-rate synchronous dynamic
687           random-access memory) on the MPC8XXX family within SPL. This
688           allows DRAM to be set up before loading U-Boot into that DRAM,
689           where it can run.
690
691 config SPL_MTD_SUPPORT
692         bool "Support MTD drivers"
693         help
694           Enable support for MTD (Memory Technology Device) within SPL. MTD
695           provides a block interface over raw NAND and can also be used with
696           SPI flash. This allows SPL to load U-Boot from supported MTD
697           devices. See SPL_NAND_SUPPORT and SPL_ONENAND_SUPPORT for how
698           to enable specific MTD drivers.
699
700 config SPL_MUSB_NEW
701         bool "Support new Mentor Graphics USB"
702         help
703           Enable support for Mentor Graphics USB in SPL. This is a new
704           driver used by some boards. Enable this option to build
705           the drivers in drivers/usb/musb-new as part of an SPL build. The
706           old drivers are in drivers/usb/musb.
707
708 config SPL_NAND_SUPPORT
709         bool "Support NAND flash"
710         help
711           Enable support for NAND (Negative AND) flash in SPL. NAND flash
712           can be used to allow SPL to load U-Boot from supported devices.
713           This enables the drivers in drivers/mtd/nand/raw as part of an SPL
714           build.
715
716 config SPL_NAND_DRIVERS
717         bool "Use standard NAND driver"
718         help
719           SPL uses normal NAND drivers, not minimal drivers.
720
721 config SPL_NAND_ECC
722         bool "Include standard software ECC in the SPL"
723
724 config SPL_NAND_SIMPLE
725         bool "Support simple NAND drivers in SPL"
726         help
727           Support for NAND boot using simple NAND drivers that
728           expose the cmd_ctrl() interface.
729
730 config SPL_NAND_BASE
731         depends on SPL_NAND_DRIVERS
732         bool "Use Base NAND Driver"
733         help
734           Include nand_base.c in the SPL.
735
736 config SPL_NAND_IDENT
737         depends on SPL_NAND_BASE
738         bool "Use chip ID to identify NAND flash"
739         help
740           SPL uses the chip ID list to identify the NAND flash.
741
742 config SPL_UBI
743         bool "Support UBI"
744         help
745           Enable support for loading payloads from UBI. See
746           README.ubispl for more info.
747
748 if SPL_DM
749 config SPL_DM_SPI
750         bool "Support SPI DM drivers in SPL"
751         help
752           Enable support for SPI DM drivers in SPL.
753
754 config SPL_DM_SPI_FLASH
755         bool "Support SPI DM FLASH drivers in SPL"
756         help
757           Enable support for SPI DM flash drivers in SPL.
758
759 endif
760 if SPL_UBI
761 config SPL_UBI_LOAD_BY_VOLNAME
762         bool "Support loading volumes by name"
763         help
764           This enables support for loading UBI volumes by name. When this
765           is set, CONFIG_SPL_UBI_LOAD_MONITOR_VOLNAME can be used to
766           configure the volume name from which to load U-Boot.
767
768 config SPL_UBI_MAX_VOL_LEBS
769         int "Maximum number of LEBs per volume"
770         depends on SPL_UBI
771         help
772           The maximum number of logical eraseblocks which a static volume
773           to load can contain. Used for sizing the scan data structure.
774
775 config SPL_UBI_MAX_PEB_SIZE
776         int "Maximum PEB size"
777         depends on SPL_UBI
778         help
779           The maximum physical erase block size.
780
781 config SPL_UBI_MAX_PEBS
782         int "Maximum number of PEBs"
783         depends on SPL_UBI
784         help
785           The maximum physical erase block size. If not overridden by
786           board code, this value will be used as the actual number of PEBs.
787
788 config SPL_UBI_PEB_OFFSET
789         int "Offset to first UBI PEB"
790         depends on SPL_UBI
791         help
792           The offset in number of PEBs from the start of flash to the first
793           PEB part of the UBI image.
794
795 config SPL_UBI_VID_OFFSET
796         int "Offset to VID header"
797         depends on SPL_UBI
798
799 config SPL_UBI_LEB_START
800         int "Offset to LEB in PEB"
801         depends on SPL_UBI
802         help
803           The offset in bytes to the LEB within a PEB.
804
805 config SPL_UBI_INFO_ADDR
806         hex "Address to place UBI scan info"
807         depends on SPL_UBI
808         help
809           Address for ubispl to place the scan info. Read README.ubispl to
810           determine the required size
811
812 config SPL_UBI_VOL_IDS
813         int "Maximum volume id"
814         depends on SPL_UBI
815         help
816           The maximum volume id which can be loaded. Used for sizing the
817           scan data structure.
818
819 config SPL_UBI_LOAD_MONITOR_ID
820         int "id of U-Boot volume"
821         depends on SPL_UBI
822         help
823           The UBI volume id from which to load U-Boot
824
825 config SPL_UBI_LOAD_MONITOR_VOLNAME
826         string "volume name of U-Boot volume"
827         depends on SPL_UBI_LOAD_BY_VOLNAME
828         help
829           The UBI volume name from which to load U-Boot
830
831 config SPL_UBI_LOAD_KERNEL_ID
832         int "id of kernel volume"
833         depends on SPL_OS_BOOT && SPL_UBI
834         help
835           The UBI volume id from which to load the kernel
836
837 config SPL_UBI_LOAD_ARGS_ID
838         int "id of kernel args volume"
839         depends on SPL_OS_BOOT && SPL_UBI
840         help
841           The UBI volume id from which to load the device tree
842
843 config UBI_SPL_SILENCE_MSG
844         bool "silence UBI SPL messages"
845         help
846           Disable messages from UBI SPL. This leaves warnings
847           and errors enabled.
848
849 endif   # if SPL_UBI
850
851 config SPL_NET
852         bool "Support networking"
853         help
854           Enable support for network devices (such as Ethernet) in SPL.
855           This permits SPL to load U-Boot over a network link rather than
856           from an on-board peripheral. Environment support is required since
857           the network stack uses a number of environment variables. See also
858           SPL_ETH.
859
860 if SPL_NET
861 config SPL_NET_VCI_STRING
862         string "BOOTP Vendor Class Identifier string sent by SPL"
863         help
864           As defined by RFC 2132 the vendor class identifier field can be
865           sent by the client to identify the vendor type and configuration
866           of a client.  This is often used in practice to allow for the DHCP
867           server to specify different files to load depending on if the ROM,
868           SPL or U-Boot itself makes the request
869 endif   # if SPL_NET
870
871 config SPL_NO_CPU_SUPPORT
872         bool "Drop CPU code in SPL"
873         help
874           This is specific to the ARM926EJ-S CPU. It disables the standard
875           start.S start-up code, presumably so that a replacement can be
876           used on that CPU. You should not enable it unless you know what
877           you are doing.
878
879 config SPL_NOR_SUPPORT
880         bool "Support NOR flash"
881         help
882           Enable support for loading U-Boot from memory-mapped NOR (Negative
883           OR) flash in SPL. NOR flash is slow to write but fast to read, and
884           a memory-mapped device makes it very easy to access. Loading from
885           NOR is typically achieved with just a memcpy().
886
887 config SPL_XIP_SUPPORT
888         bool "Support XIP"
889         depends on SPL
890         help
891           Enable support for execute in place of U-Boot or kernel image. There
892           is no need to copy image from flash to ram if flash supports execute
893           in place. Its very useful in systems having enough flash but not
894           enough ram to load the image.
895
896 config SPL_ONENAND_SUPPORT
897         bool "Support OneNAND flash"
898         help
899           Enable support for OneNAND (Negative AND) flash in SPL. OneNAND is
900           a type of NAND flash and therefore can be used to allow SPL to
901           load U-Boot from supported devices. This enables the drivers in
902           drivers/mtd/onenand as part of an SPL build.
903
904 config SPL_OS_BOOT
905         bool "Activate Falcon Mode"
906         depends on !TI_SECURE_DEVICE
907         help
908           Enable booting directly to an OS from SPL.
909           for more info read doc/README.falcon
910
911 if SPL_OS_BOOT
912 config SYS_OS_BASE
913         hex "addr, where OS is found"
914         depends on SPL_NOR_SUPPORT
915         help
916           Specify the address, where the OS image is found, which
917           gets booted.
918
919 endif # SPL_OS_BOOT
920
921 config SPL_PAYLOAD
922         string "SPL payload"
923         default "tpl/u-boot-with-tpl.bin" if TPL
924         default "u-boot.bin"
925         help
926           Payload for SPL boot. For backward compatibility, default to
927           u-boot.bin, i.e. RAW image without any header. In case of
928           TPL, tpl/u-boot-with-tpl.bin. For new boards, suggest to
929           use u-boot.img.
930
931 config SPL_PCI
932         bool "Support PCI drivers"
933         help
934           Enable support for PCI in SPL. For platforms that need PCI to boot,
935           or must perform some init using PCI in SPL, this provides the
936           necessary driver support. This enables the drivers in drivers/pci
937           as part of an SPL build.
938
939 config SPL_PCH
940         bool "Support PCH drivers"
941         help
942           Enable support for PCH (Platform Controller Hub) devices in SPL.
943           These are used to set up GPIOs and the SPI peripheral early in
944           boot. This enables the drivers in drivers/pch as part of an SPL
945           build.
946
947 config SPL_POST_MEM_SUPPORT
948         bool "Support POST drivers"
949         help
950           Enable support for POST (Power-on Self Test) in SPL. POST is a
951           procedure that checks that the hardware (CPU or board) appears to
952           be functionally correctly. It is a sanity check that can be
953           performed before booting. This enables the drivers in post/drivers
954           as part of an SPL build.
955
956 config SPL_DM_RESET
957         bool "Support reset drivers"
958         depends on SPL
959         help
960           Enable support for reset control in SPL.
961           That can be useful in SPL to handle IP reset in driver, as in U-Boot,
962           by using the generic reset API provided by driver model.
963           This enables the drivers in drivers/reset as part of an SPL build.
964
965 config SPL_POWER
966         bool "Support power drivers"
967         help
968           Enable support for power control in SPL. This includes support
969           for PMICs (Power-management Integrated Circuits) and some of the
970           features provided by PMICs. In particular, voltage regulators can
971           be used to enable/disable power and vary its voltage. That can be
972           useful in SPL to turn on boot peripherals and adjust CPU voltage
973           so that the clock speed can be increased. This enables the drivers
974           in drivers/power, drivers/power/pmic and drivers/power/regulator
975           as part of an SPL build.
976
977 config SPL_POWER_DOMAIN
978         bool "Support power domain drivers"
979         select SPL_POWER
980         help
981           Enable support for power domain control in SPL. Many SoCs allow
982           power to be applied to or removed from portions of the SoC (power
983           domains). This may be used to save power. This API provides the
984           means to control such power management hardware. This enables
985           the drivers in drivers/power/domain as part of a SPL build.
986
987 config SPL_RAM_SUPPORT
988         bool "Support booting from RAM"
989         default y if MICROBLAZE || ARCH_SOCFPGA || ARCH_TEGRA || ARCH_ZYNQ
990         help
991           Enable booting of an image in RAM. The image can be preloaded or
992           it can be loaded by SPL directly into RAM (e.g. using USB).
993
994 config SPL_RAM_DEVICE
995         bool "Support booting from preloaded image in RAM"
996         depends on SPL_RAM_SUPPORT
997         default y if MICROBLAZE || ARCH_SOCFPGA || ARCH_TEGRA || ARCH_ZYNQ
998         help
999           Enable booting of an image already loaded in RAM. The image has to
1000           be already in memory when SPL takes over, e.g. loaded by the boot
1001           ROM.
1002
1003 config SPL_REMOTEPROC
1004         bool "Support REMOTEPROCS"
1005         help
1006           Enable support for REMOTEPROCs in SPL. This permits to load
1007           a remote processor firmware in SPL.
1008
1009 config SPL_RTC
1010         bool "Support RTC drivers"
1011         help
1012           Enable RTC (Real-time Clock) support in SPL. This includes support
1013           for reading and setting the time. Some RTC devices also have some
1014           non-volatile (battery-backed) memory which is accessible if
1015           needed. This enables the drivers in drivers/rtc as part of an SPL
1016           build.
1017
1018 config SPL_SATA
1019         bool "Support loading from SATA"
1020         help
1021           Enable support for SATA (Serial AT attachment) in SPL. This allows
1022           use of SATA devices such as hard drives and flash drivers for
1023           loading U-Boot. SATA is used in higher-end embedded systems and
1024           can provide higher performance than MMC , at somewhat higher
1025           expense and power consumption. This enables loading from SATA
1026           using a configured device.
1027
1028 config SPL_SATA_RAW_U_BOOT_USE_SECTOR
1029         bool "SATA raw mode: by sector"
1030         depends on SPL_SATA
1031         default y if ARCH_MVEBU
1032         help
1033           Use sector number for specifying U-Boot location on SATA disk in
1034           raw mode.
1035
1036 config SPL_SATA_RAW_U_BOOT_SECTOR
1037         hex "Sector on the SATA disk to load U-Boot from"
1038         depends on SPL_SATA_RAW_U_BOOT_USE_SECTOR
1039         default 0x1 if ARCH_MVEBU
1040         help
1041           Sector on the SATA disk to load U-Boot from, when the SATA disk is being
1042           used in raw mode. Units: SATA disk sectors (1 sector = 512 bytes).
1043
1044 config SPL_SERIAL
1045         bool "Support serial"
1046         select SPL_PRINTF
1047         select SPL_STRTO
1048         help
1049           Enable support for serial in SPL. This allows use of a serial UART
1050           for displaying messages while SPL is running. It also brings in
1051           printf() and panic() functions. This should normally be enabled
1052           unless there are space reasons not to. Even then, consider
1053           enabling SPL_USE_TINY_PRINTF which is a small printf() version.
1054
1055 config SPL_SPI
1056         bool "Support SPI drivers"
1057         help
1058           Enable support for using SPI in SPL. This is used for connecting
1059           to SPI flash for loading U-Boot. See SPL_SPI_FLASH_SUPPORT for
1060           more details on that. The SPI driver provides the transport for
1061           data between the SPI flash and the CPU. This option can be used to
1062           enable SPI drivers that are needed for other purposes also, such
1063           as a SPI PMIC.
1064
1065 config SPL_SPI_FLASH_SUPPORT
1066         bool "Support SPI flash drivers"
1067         depends on SPL_SPI
1068         help
1069           Enable support for using SPI flash in SPL, and loading U-Boot from
1070           SPI flash. SPI flash (Serial Peripheral Bus flash) is named after
1071           the SPI bus that is used to connect it to a system. It is a simple
1072           but fast bidirectional 4-wire bus (clock, chip select and two data
1073           lines). This enables the drivers in drivers/mtd/spi as part of an
1074           SPL build. This normally requires SPL_SPI.
1075
1076 if SPL_SPI_FLASH_SUPPORT
1077
1078 config SPL_SPI_FLASH_TINY
1079         bool "Enable low footprint SPL SPI Flash support"
1080         depends on !SPI_FLASH_BAR
1081         default y if SPI_FLASH
1082         help
1083          Enable lightweight SPL SPI Flash support that supports just reading
1084          data/images from flash. No support to write/erase flash. Enable
1085          this if you have SPL size limitations and don't need full
1086          fledged SPI flash support.
1087
1088 config SPL_SPI_FLASH_SFDP_SUPPORT
1089         bool "SFDP table parsing support for SPI NOR flashes"
1090         depends on !SPI_FLASH_BAR && !SPL_SPI_FLASH_TINY
1091         help
1092          Enable support for parsing and auto discovery of parameters for
1093          SPI NOR flashes using Serial Flash Discoverable Parameters (SFDP)
1094          tables as per JESD216 standard in SPL.
1095
1096 config SPL_SPI_FLASH_MTD
1097         bool "Support for SPI flash MTD drivers in SPL"
1098         help
1099           Enable support for SPI flash MTD drivers in SPL.
1100
1101 config SPL_SPI_LOAD
1102         bool "Support loading from SPI flash"
1103         help
1104           Enable support for loading next stage, U-Boot or otherwise, from
1105           SPI NOR in U-Boot SPL.
1106
1107 endif # SPL_SPI_FLASH_SUPPORT
1108
1109 config SYS_SPI_U_BOOT_OFFS
1110         hex "address of u-boot payload in SPI flash"
1111         default 0x8000 if ARCH_SUNXI
1112         default 0x0
1113         depends on SPL_SPI_LOAD || SPL_SPI_SUNXI
1114         help
1115          Address within SPI-Flash from where the u-boot payload is fetched
1116          from.
1117
1118 config SPL_THERMAL
1119         bool "Driver support for thermal devices"
1120         help
1121           Enable support for temperature-sensing devices. Some SoCs have on-chip
1122           temperature sensors to permit warnings, speed throttling or even
1123           automatic power-off when the temperature gets too high or low. Other
1124           devices may be discrete but connected on a suitable bus.
1125
1126 config SPL_USB_HOST
1127         bool "Support USB host drivers"
1128         select HAVE_BLOCK_DEVICE
1129         help
1130           Enable access to USB (Universal Serial Bus) host devices so that
1131           SPL can load U-Boot from a connected USB peripheral, such as a USB
1132           flash stick. While USB takes a little longer to start up than most
1133           buses, it is very flexible since many different types of storage
1134           device can be attached. This option enables the drivers in
1135           drivers/usb/host as part of an SPL build.
1136
1137 config SPL_USB_STORAGE
1138         bool "Support loading from USB"
1139         depends on SPL_USB_HOST && !(BLK && !DM_USB)
1140         help
1141           Enable support for USB devices in SPL. This allows use of USB
1142           devices such as hard drives and flash drivers for loading U-Boot.
1143           The actual drivers are enabled separately using the normal U-Boot
1144           config options. This enables loading from USB using a configured
1145           device.
1146
1147 config SPL_USB_GADGET
1148         bool "Suppport USB Gadget drivers"
1149         help
1150           Enable USB Gadget API which allows to enable USB device functions
1151           in SPL.
1152
1153 if SPL_USB_GADGET
1154
1155 config SPL_USB_ETHER
1156         bool "Support USB Ethernet drivers"
1157         depends on SPL_NET
1158         help
1159           Enable access to the USB network subsystem and associated
1160           drivers in SPL. This permits SPL to load U-Boot over a
1161           USB-connected Ethernet link (such as a USB Ethernet dongle) rather
1162           than from an onboard peripheral. Environment support is required
1163           since the network stack uses a number of environment variables.
1164           See also SPL_NET and SPL_ETH.
1165
1166 config SPL_DFU
1167         bool "Support DFU (Device Firmware Upgrade)"
1168         select SPL_HASH
1169         select SPL_DFU_NO_RESET
1170         depends on SPL_RAM_SUPPORT
1171         help
1172           This feature enables the DFU (Device Firmware Upgrade) in SPL with
1173           RAM memory device support. The ROM code will load and execute
1174           the SPL built with dfu. The user can load binaries (u-boot/kernel) to
1175           selected device partition from host-pc using dfu-utils.
1176           This feature is useful to flash the binaries to factory or bare-metal
1177           boards using USB interface.
1178
1179 choice
1180         bool "DFU device selection"
1181         depends on SPL_DFU
1182
1183 config SPL_DFU_RAM
1184         bool "RAM device"
1185         depends on SPL_DFU && SPL_RAM_SUPPORT
1186         help
1187          select RAM/DDR memory device for loading binary images
1188          (u-boot/kernel) to the selected device partition using
1189          DFU and execute the u-boot/kernel from RAM.
1190
1191 endchoice
1192
1193 config SPL_USB_SDP_SUPPORT
1194         bool "Support SDP (Serial Download Protocol)"
1195         depends on SPL_SERIAL
1196         help
1197           Enable Serial Download Protocol (SDP) device support in SPL. This
1198           allows to download images into memory and execute (jump to) them
1199           using the same protocol as implemented by the i.MX family's boot ROM.
1200
1201 config SPL_SDP_USB_DEV
1202         int "SDP USB controller index"
1203         default 0
1204         depends on SPL_USB_SDP_SUPPORT
1205         help
1206           Some boards have USB controller other than 0. Define this option
1207           so it can be used in compiled environment.
1208 endif
1209
1210 config SPL_WATCHDOG
1211         bool "Support watchdog drivers"
1212         imply SPL_WDT if !HW_WATCHDOG
1213         help
1214           Enable support for watchdog drivers in SPL. A watchdog is
1215           typically a hardware peripheral which can reset the system when it
1216           detects no activity for a while (such as a software crash). This
1217           enables the drivers in drivers/watchdog as part of an SPL build.
1218
1219 config SPL_YMODEM_SUPPORT
1220         bool "Support loading using Ymodem"
1221         depends on SPL_SERIAL
1222         help
1223           While loading from serial is slow it can be a useful backup when
1224           there is no other option. The Ymodem protocol provides a reliable
1225           means of transmitting U-Boot over a serial line for using in SPL,
1226           with a checksum to ensure correctness.
1227
1228 config SPL_ATF
1229         bool "Support ARM Trusted Firmware"
1230         depends on ARM64 && SPL_FIT
1231         help
1232           ATF(ARM Trusted Firmware) is a component for ARM AArch64 which
1233           is loaded by SPL (which is considered as BL2 in ATF terminology).
1234           More detail at: https://github.com/ARM-software/arm-trusted-firmware
1235
1236 config SPL_ATF_LOAD_IMAGE_V2
1237         bool "Use the new LOAD_IMAGE_V2 parameter passing"
1238         depends on SPL_ATF
1239         help
1240           Some platforms use the newer LOAD_IMAGE_V2 parameter passing.
1241
1242           If you want to load a bl31 image from the SPL and need the new
1243           method, say Y.
1244
1245 config SPL_ATF_NO_PLATFORM_PARAM
1246         bool "Pass no platform parameter"
1247         depends on SPL_ATF
1248         help
1249           While we expect to call a pointer to a valid FDT (or NULL)
1250           as the platform parameter to an ATF, some ATF versions are
1251           not U-Boot aware and have an insufficiently robust parameter
1252           validation to gracefully reject a FDT being passed.
1253
1254           If this option is enabled, the spl_atf os-type handler will
1255           always pass NULL for the platform parameter.
1256
1257           If your ATF is affected, say Y.
1258
1259 config SPL_AM33XX_ENABLE_RTC32K_OSC
1260         bool "Enable the RTC32K OSC on AM33xx based platforms"
1261         default y if AM33XX
1262         help
1263           Enable access to the AM33xx RTC and select the external 32kHz clock
1264           source.
1265
1266 config SPL_OPTEE_IMAGE
1267         bool "Support OP-TEE Trusted OS image in SPL"
1268         depends on ARM
1269         help
1270           OP-TEE is an open source Trusted OS which is loaded by SPL.
1271           More detail at: https://github.com/OP-TEE/optee_os
1272
1273 config SPL_OPENSBI
1274         bool "Support RISC-V OpenSBI"
1275         depends on RISCV && SPL_RISCV_MMODE && RISCV_SMODE
1276         help
1277           OpenSBI is an open-source implementation of the RISC-V Supervisor Binary
1278           Interface (SBI) specification. U-Boot supports the OpenSBI FW_DYNAMIC
1279           firmware. It is loaded and started by U-Boot SPL.
1280
1281           More details are available at https://github.com/riscv/opensbi and
1282           https://github.com/riscv/riscv-sbi-doc
1283
1284 config SPL_OPENSBI_LOAD_ADDR
1285         hex "OpenSBI load address"
1286         depends on SPL_OPENSBI
1287         help
1288           Load address of the OpenSBI binary.
1289
1290 config TPL
1291         bool
1292         depends on SUPPORT_TPL
1293         prompt "Enable TPL"
1294         help
1295           If you want to build TPL as well as the normal image and SPL, say Y.
1296
1297 if TPL
1298
1299 config TPL_SIZE_LIMIT
1300         hex "Maximum size of TPL image"
1301         depends on TPL
1302         default 0x0
1303         help
1304           Specifies the maximum length of the U-Boot TPL image.
1305           If this value is zero, it is ignored.
1306
1307 config TPL_FRAMEWORK
1308         bool "Support TPL based upon the common SPL framework"
1309         default y if SPL_FRAMEWORK
1310         help
1311           Enable the SPL framework under common/spl/ for TPL builds.
1312           This framework supports MMC, NAND and YMODEM and other methods
1313           loading of U-Boot's SPL stage. If unsure, say Y.
1314
1315 config TPL_HANDOFF
1316         bool "Pass hand-off information from TPL to SPL and U-Boot proper"
1317         depends on HANDOFF && TPL_BLOBLIST
1318         default y
1319         help
1320           This option enables TPL to write handoff information. This can be
1321           used to pass information like the size of SDRAM from TPL to U-Boot
1322           proper. The information is also available to SPL if it is useful
1323           there.
1324
1325 config TPL_BOARD_INIT
1326         bool "Call board-specific initialization in TPL"
1327         help
1328           If this option is enabled, U-Boot will call the function
1329           spl_board_init() from board_init_r(). This function should be
1330           provided by the board.
1331
1332 config TPL_BOOTCOUNT_LIMIT
1333         bool "Support bootcount in TPL"
1334         depends on TPL_ENV_SUPPORT
1335         help
1336           If this option is enabled, the TPL will support bootcount.
1337           For example, it may be useful to choose the device to boot.
1338
1339 config TPL_LDSCRIPT
1340         string "Linker script for the TPL stage"
1341         depends on TPL
1342         default "arch/arm/cpu/armv8/u-boot-spl.lds" if ARM64
1343         default "arch/\$(ARCH)/cpu/u-boot-spl.lds"
1344         help
1345           The TPL stage will usually require a different linker-script
1346           (as it runs from a different memory region) than the regular
1347           U-Boot stage.  Set this to the path of the linker-script to
1348           be used for TPL.
1349
1350           May be left empty to trigger the Makefile infrastructure to
1351           fall back to the linker-script used for the SPL stage.
1352
1353 config TPL_NEEDS_SEPARATE_TEXT_BASE
1354         bool "TPL needs a separate text-base"
1355         depends on TPL
1356         help
1357           Enable, if the TPL stage should not inherit its text-base
1358           from the SPL stage.  When enabled, a base address for the
1359           .text sections of the TPL stage has to be set below.
1360
1361 config TPL_NEEDS_SEPARATE_STACK
1362         bool "TPL needs a separate initial stack-pointer"
1363         depends on TPL
1364         help
1365           Enable, if the TPL stage should not inherit its initial
1366           stack-pointer from the settings for the SPL stage.
1367
1368 config TPL_POWER
1369         bool "Support power drivers"
1370         help
1371           Enable support for power control in TPL. This includes support
1372           for PMICs (Power-management Integrated Circuits) and some of the
1373           features provided by PMICs. In particular, voltage regulators can
1374           be used to enable/disable power and vary its voltage. That can be
1375           useful in TPL to turn on boot peripherals and adjust CPU voltage
1376           so that the clock speed can be increased. This enables the drivers
1377           in drivers/power, drivers/power/pmic and drivers/power/regulator
1378           as part of an TPL build.
1379
1380 config TPL_TEXT_BASE
1381         hex "Base address for the .text section of the TPL stage"
1382         depends on TPL_NEEDS_SEPARATE_TEXT_BASE
1383         help
1384           The base address for the .text section of the TPL stage.
1385
1386 config TPL_MAX_SIZE
1387         int "Maximum size (in bytes) for the TPL stage"
1388         default 0
1389         depends on TPL
1390         help
1391           The maximum size (in bytes) of the TPL stage.
1392
1393 config TPL_STACK
1394         hex "Address of the initial stack-pointer for the TPL stage"
1395         depends on TPL_NEEDS_SEPARATE_STACK
1396         help
1397           The address of the initial stack-pointer for the TPL stage.
1398           Usually this will be the (aligned) top-of-stack.
1399
1400 config TPL_READ_ONLY
1401         bool
1402         depends on TPL_OF_PLATDATA
1403         select TPL_OF_PLATDATA_NO_BIND
1404         select TPL_OF_PLATDATA_RT
1405         help
1406           Some platforms (e.g. x86 Apollo Lake) load SPL into a read-only
1407           section of memory. This means that of-platdata must make a copy (in
1408           writeable memory) of anything it wants to modify, such as
1409           device-private data.
1410
1411 config TPL_BOOTROM_SUPPORT
1412         bool "Support returning to the BOOTROM (from TPL)"
1413         help
1414           Some platforms (e.g. the Rockchip RK3368) provide support in their
1415           ROM for loading the next boot-stage after performing basic setup
1416           from the TPL stage.
1417
1418           Enable this option, to return to the BOOTROM through the
1419           BOOT_DEVICE_BOOTROM (or fall-through to the next boot device in the
1420           boot device list, if not implemented for a given board)
1421
1422 config TPL_DRIVERS_MISC
1423         bool "Support misc drivers in TPL"
1424         help
1425           Enable miscellaneous drivers in TPL. These drivers perform various
1426           tasks that don't fall nicely into other categories, Enable this
1427           option to build the drivers in drivers/misc as part of an TPL
1428           build, for those that support building in TPL (not all drivers do).
1429
1430 config TPL_ENV_SUPPORT
1431         bool "Support an environment"
1432         help
1433           Enable environment support in TPL. See SPL_ENV_SUPPORT for details.
1434
1435 config TPL_GPIO
1436         bool "Support GPIO in TPL"
1437         help
1438           Enable support for GPIOs (General-purpose Input/Output) in TPL.
1439           GPIOs allow U-Boot to read the state of an input line (high or
1440           low) and set the state of an output line. This can be used to
1441           drive LEDs, control power to various system parts and read user
1442           input. GPIOs can be useful in TPL to enable a 'sign-of-life' LED,
1443           for example. Enable this option to build the drivers in
1444           drivers/gpio as part of an TPL build.
1445
1446 config TPL_I2C
1447         bool "Support I2C"
1448         help
1449           Enable support for the I2C bus in TPL. See SPL_I2C for
1450           details.
1451
1452 config TPL_LIBCOMMON_SUPPORT
1453         bool "Support common libraries"
1454         help
1455           Enable support for common U-Boot libraries within TPL. See
1456           SPL_LIBCOMMON_SUPPORT for details.
1457
1458 config TPL_LIBGENERIC_SUPPORT
1459         bool "Support generic libraries"
1460         help
1461           Enable support for generic U-Boot libraries within TPL. See
1462           SPL_LIBGENERIC_SUPPORT for details.
1463
1464 config TPL_MPC8XXX_INIT_DDR
1465         bool "Support MPC8XXX DDR init"
1466         help
1467           Enable support for DDR-SDRAM on the MPC8XXX family within TPL. See
1468           SPL_MPC8XXX_INIT_DDR for details.
1469
1470 config TPL_MMC
1471         bool "Support MMC"
1472         depends on MMC
1473         help
1474           Enable support for MMC within TPL. See SPL_MMC for details.
1475
1476 config TPL_NAND_SUPPORT
1477         bool "Support NAND flash"
1478         help
1479           Enable support for NAND in TPL. See SPL_NAND_SUPPORT for details.
1480
1481 config TPL_PCI
1482         bool "Support PCI drivers"
1483         help
1484           Enable support for PCI in TPL. For platforms that need PCI to boot,
1485           or must perform some init using PCI in SPL, this provides the
1486           necessary driver support. This enables the drivers in drivers/pci
1487           as part of a TPL build.
1488
1489 config TPL_PCH
1490         bool "Support PCH drivers"
1491         help
1492           Enable support for PCH (Platform Controller Hub) devices in TPL.
1493           These are used to set up GPIOs and the SPI peripheral early in
1494           boot. This enables the drivers in drivers/pch as part of a TPL
1495           build.
1496
1497 config TPL_RAM_SUPPORT
1498         bool "Support booting from RAM"
1499         help
1500           Enable booting of an image in RAM. The image can be preloaded or
1501           it can be loaded by TPL directly into RAM (e.g. using USB).
1502
1503 config TPL_RAM_DEVICE
1504         bool "Support booting from preloaded image in RAM"
1505         depends on TPL_RAM_SUPPORT
1506         help
1507           Enable booting of an image already loaded in RAM. The image has to
1508           be already in memory when TPL takes over, e.g. loaded by the boot
1509           ROM.
1510
1511 config TPL_RTC
1512         bool "Support RTC drivers"
1513         help
1514           Enable RTC (Real-time Clock) support in TPL. This includes support
1515           for reading and setting the time. Some RTC devices also have some
1516           non-volatile (battery-backed) memory which is accessible if
1517           needed. This enables the drivers in drivers/rtc as part of an TPL
1518           build.
1519
1520 config TPL_SERIAL
1521         bool "Support serial"
1522         select TPL_PRINTF
1523         select TPL_STRTO
1524         help
1525           Enable support for serial in TPL. See SPL_SERIAL for
1526           details.
1527
1528 config TPL_SPI_FLASH_SUPPORT
1529         bool "Support SPI flash drivers"
1530         help
1531           Enable support for using SPI flash in TPL. See SPL_SPI_FLASH_SUPPORT
1532           for details.
1533
1534 config TPL_SPI_FLASH_TINY
1535         bool "Enable low footprint TPL SPI Flash support"
1536         depends on TPL_SPI_FLASH_SUPPORT && !SPI_FLASH_BAR
1537         default y if SPI_FLASH
1538         help
1539          Enable lightweight TPL SPI Flash support that supports just reading
1540          data/images from flash. No support to write/erase flash. Enable
1541          this if you have TPL size limitations and don't need full-fledged
1542          SPI flash support.
1543
1544 config TPL_SPI_LOAD
1545         bool "Support loading from SPI flash"
1546         depends on TPL_SPI_FLASH_SUPPORT
1547         help
1548           Enable support for loading next stage, U-Boot or otherwise, from
1549           SPI NOR in U-Boot TPL.
1550
1551 config TPL_SPI
1552         bool "Support SPI drivers"
1553         help
1554           Enable support for using SPI in TPL. See SPL_SPI for
1555           details.
1556
1557 config TPL_DM_SPI
1558         bool "Support SPI DM drivers in TPL"
1559         help
1560           Enable support for SPI DM drivers in TPL.
1561
1562 config TPL_DM_SPI_FLASH
1563         bool "Support SPI DM FLASH drivers in TPL"
1564         help
1565           Enable support for SPI DM flash drivers in TPL.
1566
1567 config TPL_YMODEM_SUPPORT
1568         bool "Support loading using Ymodem"
1569         depends on TPL_SERIAL
1570         help
1571           While loading from serial is slow it can be a useful backup when
1572           there is no other option. The Ymodem protocol provides a reliable
1573           means of transmitting U-Boot over a serial line for using in TPL,
1574           with a checksum to ensure correctness.
1575
1576 endif # TPL
1577
1578 config SPL_AT91_MCK_BYPASS
1579         bool "Use external clock signal as a source of main clock for AT91 platforms"
1580         depends on ARCH_AT91
1581         help
1582           Use external 8 to 24 Mhz clock signal as source of main clock instead
1583           of an external crystal oscillator.
1584           This option disables the internal driving on the XOUT pin.
1585           The external source has to provide a stable clock on the XIN pin.
1586           If this option is disabled, the SoC expects a crystal oscillator
1587           that needs driving on both XIN and XOUT lines.
1588
1589 endif # SPL
1590 endmenu