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