]> Git Repo - u-boot.git/blob - common/spl/Kconfig
Convert CONFIG_SPL_TARGET to Kconfig
[u-boot.git] / common / spl / Kconfig
1 menu "SPL / TPL / VPL"
2
3 config SUPPORT_SPL
4         bool
5
6 config SUPPORT_TPL
7         bool
8
9 config SUPPORT_VPL
10         bool
11
12 config SPL_DFU_NO_RESET
13         bool
14
15 config SPL
16         bool
17         depends on SUPPORT_SPL
18         prompt "Enable SPL"
19         help
20           If you want to build SPL as well as the normal image, say Y.
21
22 config SPL_FRAMEWORK
23         bool "Support SPL based upon the common SPL framework"
24         depends on SPL
25         default y
26         help
27           Enable the SPL framework under common/spl/.  This framework
28           supports MMC, NAND and YMODEM and other methods loading of U-Boot
29           and the Linux Kernel.  If unsure, say Y.
30
31 config SPL_FRAMEWORK_BOARD_INIT_F
32         bool "Define a generic function board_init_f"
33         depends on SPL_FRAMEWORK
34         help
35           Define a generic function board_init_f that:
36           - initialize the spl (spl_early_init)
37           - initialize the serial (preloader_console_init)
38           Unless you want to provide your own board_init_f, you should say Y.
39
40 config SPL_SIZE_LIMIT
41         hex "Maximum size of SPL image"
42         depends on SPL
43         default 0x11000 if ARCH_MX6 && !MX6_OCRAM_256KB
44         default 0x31000 if ARCH_MX6 && MX6_OCRAM_256KB
45         default 0x0
46         help
47           Specifies the maximum length of the U-Boot SPL image.
48           If this value is zero, it is ignored.
49
50 config SPL_SIZE_LIMIT_SUBTRACT_GD
51         bool "SPL image size check: provide space for global data"
52         depends on SPL_SIZE_LIMIT > 0
53         help
54           If enabled, aligned size of global data is reserved in
55           SPL_SIZE_LIMIT check to ensure such an image does not overflow SRAM
56           if SPL_SIZE_LIMIT describes the size of SRAM available for SPL when
57           pre-reloc global data is put into this SRAM, too.
58
59 config SPL_SIZE_LIMIT_SUBTRACT_MALLOC
60         bool "SPL image size check: provide space for malloc() pool before relocation"
61         depends on SPL_SIZE_LIMIT > 0
62         help
63           If enabled, SPL_SYS_MALLOC_F_LEN is reserved in SPL_SIZE_LIMIT check
64           to ensure such an image does not overflow SRAM if SPL_SIZE_LIMIT
65           describes the size of SRAM available for SPL when pre-reloc malloc
66           pool is put into this SRAM, too.
67
68 config SPL_SIZE_LIMIT_PROVIDE_STACK
69         hex "SPL image size check: provide stack space before relocation"
70         depends on SPL_SIZE_LIMIT > 0
71         default 0
72         help
73           If set, this size is reserved in SPL_SIZE_LIMIT check to ensure such
74           an image does not overflow SRAM if SPL_SIZE_LIMIT describes the size
75           of SRAM available for SPL when the stack required before reolcation
76           uses this SRAM, too.
77
78 config SPL_MAX_SIZE
79         hex "Maximum size of the SPL image, excluding BSS"
80         default 0x30000 if ARCH_MX6 && MX6_OCRAM_256KB
81         default 0x1b000 if AM33XX && !TI_SECURE_DEVICE
82         default 0x10000 if ARCH_MX6 && !MX6_OCRAM_256KB
83         default 0x7fa0 if SUNXI_SRAM_ADDRESS = 0x10000
84         default 0x7fa0 if SUNXI_SRAM_ADDRESS = 0x20000 && !MACH_SUN50I_H616
85         default 0x7000 if RCAR_GEN3
86         default 0x5fa0 if SUNXI_SRAM_ADDRESS = 0x0
87         default 0x0
88         help
89           Maximum size of the SPL image (text, data, rodata, and linker lists
90           sections), BSS excluded.  When defined, the linker checks that the
91           actual size does not exceed it.
92
93 config SPL_PAD_TO
94         hex "Offset to which the SPL should be padded before appending the SPL payload"
95         default 0x31000 if ARCH_MX6 && MX6_OCRAM_256KB
96         default 0x11000 if ARCH_MX7 || (ARCH_MX6 && !MX6_OCRAM_256KB)
97         default 0x10000 if ARCH_KEYSTONE
98         default 0x8000 if ARCH_SUNXI && !MACH_SUN50I_H616
99         default TPL_MAX_SIZE if TPL_MAX_SIZE > SPL_MAX_SIZE
100         default SPL_MAX_SIZE
101         help
102           Image offset to which the SPL should be padded before appending the
103           SPL payload. By default, this is defined as CONFIG_SPL_MAX_SIZE, or 0 if
104           CONFIG_SPL_MAX_SIZE is undefined.  CONFIG_SPL_PAD_TO must be either
105           0, meaning to append the SPL payload without any padding, or >=
106           CONFIG_SPL_MAX_SIZE.
107
108 config SPL_HAS_BSS_LINKER_SECTION
109         depends on SPL_FRAMEWORK
110         bool "Use a specific address for the BSS via the linker script"
111         default y if ARCH_SUNXI || ARCH_MX6 || ARCH_OMAP2PLUS || MIPS || RISCV
112
113 config SPL_BSS_START_ADDR
114         hex "Link address for the BSS within the SPL binary"
115         depends on SPL_HAS_BSS_LINKER_SECTION
116         default 0x88200000 if (ARCH_MX6 && (MX6SX || MX6SL || MX6UL || MX6ULL)) || ARCH_MX7
117         default 0x18200000 if ARCH_MX6 && !(MX6SX || MX6SL || MX6UL || MX6ULL)
118         default 0x80a00000 if ARCH_OMAP2PLUS
119         default 0x81f80000 if ARCH_SUNXI && MACH_SUNIV
120         default 0x4ff80000 if ARCH_SUNXI && !(MACH_SUN9I || MACH_SUNIV)
121         default 0x2ff80000 if ARCH_SUNXI && MACH_SUN9I
122
123 choice
124         prompt "Enforce SPL BSS limit"
125         depends on SPL && !PPC
126         default SPL_BSS_LIMIT
127         help
128           In some platforms we only want to enforce a limit on the size of the
129           BSS in memory.  On other platforms we need to enforce a limit on the
130           whole of the memory allocation as we're strictly limited to a small
131           typically non-DRAM location.  Finally, other platforms do not enforce
132           a memory limit within SPL.
133
134 config SPL_NO_BSS_LIMIT
135         bool "Do not enforce a build time limit on the size of the BSS"
136
137 config SPL_BSS_LIMIT
138         bool "Enforce a limit on the size of the BSS only"
139
140 config SPL_FOOTPRINT_LIMIT
141         bool "Enforce a limit on the whole of memory allocated to SPL, BSS included"
142
143 endchoice
144
145 config SPL_BSS_MAX_SIZE
146         hex "Maximum size in memory allocated to the SPL BSS"
147         depends on SPL_BSS_LIMIT
148         default 0x100000 if ARCH_MX6 || RISCV
149         default 0x80000 if ARCH_OMAP2PLUS || ARCH_SUNXI
150         help
151           When non-zero, the linker checks that the actual memory used by SPL
152           from __bss_start to __bss_end does not exceed it.
153
154 config SPL_MAX_FOOTPRINT
155         hex "Maximum size in memory allocated to the SPL, BSS included"
156         depends on SPL_FOOTPRINT_LIMIT
157         help
158           When non-zero, the linker checks that the actual memory used by SPL
159           from _start to __bss_end does not exceed it.
160
161 config SPL_SYS_STACK_F_CHECK_BYTE
162         hex
163         default 0xaa
164         help
165           Constant used to check the stack
166
167 config SPL_SYS_REPORT_STACK_F_USAGE
168         depends on SPL_SIZE_LIMIT_PROVIDE_STACK != 0
169         bool "Check and report stack usage in SPL before relocation"
170         help
171           If this option is enabled, the initial SPL stack is filled with 0xaa
172           very early, up to the size configured with
173           SPL_SIZE_LIMIT_PROVIDE_STACK.
174           Later when SPL is done using this initial stack and switches to a
175           stack in DRAM, the actually used size of this initial stack is
176           reported by examining the memory and searching for the lowest
177           occurrence of non 0xaa bytes.
178           This default implementation works for stacks growing down only.
179
180 config SPL_SHOW_ERRORS
181         bool "Show more information when something goes wrong"
182         help
183           This enabled more verbose error messages and checking when something
184           goes wrong in SPL. For example, it shows the error code when U-Boot
185           cannot be located. This can help to diagnose the problem and figure
186           out a fix, particularly during development.
187
188           This adds a small amount to SPL code size, perhaps 100 bytes.
189
190 config SPL_BINMAN_SYMBOLS
191         bool "Declare binman symbols in SPL"
192         depends on SPL_FRAMEWORK && BINMAN
193         default y
194         help
195           This enables use of symbols in SPL which refer to U-Boot, enabling SPL
196           to obtain the location of U-Boot simply by calling spl_get_image_pos()
197           and spl_get_image_size().
198
199           For this to work, you must have a U-Boot image in the binman image, so
200           binman can update SPL with the location of it.
201
202 menu "PowerPC and LayerScape SPL Boot options"
203
204 config SPL_NAND_BOOT
205         bool "Load SPL from NAND flash"
206         depends on PPC && (SUPPORT_SPL && !SPL_FRAMEWORK)
207
208 config SPL_MMC_BOOT
209         bool "Load SPL from SD Card / eMMC"
210         depends on PPC && (SUPPORT_SPL && !SPL_FRAMEWORK)
211
212 config SPL_SPI_BOOT
213         bool "Load SPL from SPI flash"
214         depends on PPC && (SUPPORT_SPL && !SPL_FRAMEWORK)
215
216 config SPL_FSL_PBL
217         bool "Create SPL in Freescale PBI format"
218         depends on (PPC || ARCH_LS1021A || ARCH_LS1043A || ARCH_LS1046A) && \
219                     SUPPORT_SPL
220         help
221           Create boot binary having SPL binary in PBI format concatenated with
222           u-boot binary.
223
224 config SPL_SYS_CCSR_DO_NOT_RELOCATE
225         bool "Ensures that CCSR is not relocated"
226         depends on PPC
227         help
228           If this is defined, then CONFIG_SYS_CCSRBAR_PHYS will be forced to a
229           value that ensures that CCSR is not relocated.
230
231 config TPL_SYS_CCSR_DO_NOT_RELOCATE
232         def_bool y
233         depends on SPL_SYS_CCSR_DO_NOT_RELOCATE
234
235 endmenu
236
237 menu "PowerPC SPL / TPL specific options"
238         depends on PPC && (SPL && !SPL_FRAMEWORK)
239
240 config SPL_INIT_MINIMAL
241         bool "Arch init code will be built for a very small image"
242
243 config SPL_FLUSH_IMAGE
244         bool "Clean dcache and invalidate icache after loading the image"
245
246 config SPL_SKIP_RELOCATE
247         bool "Skip relocating SPL"
248
249 config SPL_GD_ADDR
250         hex "Address to use for global data (gd) in SPL"
251         depends on !SPL_INIT_MINIMAL
252
253 config SPL_RELOC_TEXT_BASE
254         hex "Address to relocate SPL to"
255         default SPL_TEXT_BASE
256         help
257           If unspecified, this is equal to CONFIG_SPL_TEXT_BASE (i.e. no
258           relocation is done).
259
260 config SPL_RELOC_STACK
261         hex "Address of the start of the stack SPL will use after relocation."
262         help
263           If unspecified, this is equal to CONFIG_SYS_SPL_MALLOC_START.  Starting
264           address of the malloc pool used in SPL.  When this option is set the full
265           malloc is used in SPL and it is set up by spl_init() and before that, the
266           simple malloc() can be used if CONFIG_SYS_MALLOC_F is defined.
267
268 config SPL_RELOC_MALLOC
269         bool "SPL has malloc pool after relocation"
270
271 config SPL_RELOC_MALLOC_ADDR
272         hex "Address of malloc pool in SPL"
273         depends on SPL_RELOC_MALLOC
274
275 config SPL_RELOC_MALLOC_SIZE
276         hex "Size of malloc pool in SPL"
277         depends on SPL_RELOC_MALLOC
278
279 config TPL_GD_ADDR
280         hex "Address to use for global data (gd) in TPL"
281         depends on TPL
282
283 config TPL_RELOC_TEXT_BASE
284         hex "Address to relocate TPL to"
285         depends on TPL
286         default TPL_TEXT_BASE
287         help
288           If unspecified, this is equal to CONFIG_TPL_TEXT_BASE (i.e. no
289           relocation is done).
290
291 config TPL_RELOC_STACK
292         hex "Address of the start of the stack TPL will use after relocation."
293         depends on TPL
294         help
295           If unspecified, this is equal to CONFIG_SYS_TPL_MALLOC_START.  Starting
296           address of the malloc pool used in TPL.  When this option is set the full
297           malloc is used in TPL and it is set up by spl_init() and before that, the
298           simple malloc() can be used if CONFIG_SYS_MALLOC_F is defined.
299
300 config TPL_RELOC_MALLOC
301         bool "TPL has malloc pool after relocation"
302         depends on TPL
303
304 config TPL_RELOC_MALLOC_ADDR
305         hex "Address of malloc pool in TPL"
306         depends on TPL_RELOC_MALLOC
307
308 config TPL_RELOC_MALLOC_SIZE
309         hex "Size of malloc pool in TPL"
310         depends on TPL_RELOC_MALLOC
311
312 endmenu
313
314 config HANDOFF
315         bool "Pass hand-off information from SPL to U-Boot proper"
316         depends on SPL && BLOBLIST
317         help
318           It is useful to be able to pass information from SPL to U-Boot
319           proper to preserve state that is known in SPL and is needed in U-Boot.
320           Enable this to locate the handoff information in U-Boot proper, early
321           in boot. It is available in gd->handoff. The state state is set up
322           in SPL (or TPL if that is being used).
323
324 if SPL
325
326 config SPL_HANDOFF
327         bool "Pass hand-off information from SPL to U-Boot proper"
328         depends on HANDOFF && SPL_BLOBLIST
329         default y
330         help
331           This option enables SPL to write handoff information. This can be
332           used to pass information like the size of SDRAM from SPL to U-Boot
333           proper. Also SPL can receive information from TPL in the same place
334           if that is enabled.
335
336 config SPL_LDSCRIPT
337         string "Linker script for the SPL stage"
338         default "arch/\$(ARCH)/cpu/u-boot-spl.lds"
339         help
340           The SPL stage will usually require a different linker-script
341           (as it runs from a different memory region) than the regular
342           U-Boot stage.  Set this to the path of the linker-script to
343           be used for SPL.
344
345 config SPL_TEXT_BASE
346         hex "SPL Text Base"
347         default ISW_ENTRY_ADDR if AM43XX || AM33XX || OMAP54XX || ARCH_KEYSTONE
348         default 0x10060 if MACH_SUN50I || MACH_SUN50I_H5 || MACH_SUN9I
349         default 0x20060 if SUN50I_GEN_H6
350         default 0x00060 if ARCH_SUNXI
351         default 0xfffc0000 if ARCH_ZYNQMP
352         default 0x0
353         help
354           The address in memory that SPL will be running from.
355
356 config SPL_BOARD_INIT
357         bool "Call board-specific initialization in SPL"
358         help
359           If this option is enabled, U-Boot will call the function
360           spl_board_init() from board_init_r(). This function should be
361           provided by the board.
362
363 config VPL_BOARD_INIT
364         bool "Call board-specific initialization in VPL"
365         help
366           If this option is enabled, U-Boot will call the function
367           spl_board_init() from board_init_r(). This function should be
368           provided by the board.
369
370 config SPL_BOOTROM_SUPPORT
371         bool "Support returning to the BOOTROM"
372         help
373           Some platforms (e.g. the Rockchip RK3368) provide support in their
374           ROM for loading the next boot-stage after performing basic setup
375           from the SPL stage.
376
377           Enable this option, to return to the BOOTROM through the
378           BOOT_DEVICE_BOOTROM (or fall-through to the next boot device in the
379           boot device list, if not implemented for a given board)
380
381 config SPL_BOOTCOUNT_LIMIT
382         bool "Support bootcount in SPL"
383         depends on SPL_ENV_SUPPORT && !TPL_BOOTCOUNT_LIMIT
384         help
385           On some boards, which use 'falcon' mode, it is necessary to check
386           and increment the number of boot attempts. Such boards do not
387           use proper U-Boot for normal boot flow and hence needs those
388           adjustments to be done in the SPL.
389
390 config SPL_RAW_IMAGE_SUPPORT
391         bool "Support SPL loading and booting of RAW images"
392         default n if (ARCH_MX6 && (SPL_MMC || SPL_SATA))
393         default y
394         depends on !TI_SECURE_DEVICE
395         help
396           SPL will support loading and booting a RAW image when this option
397           is y. If this is not set, SPL will move on to other available
398           boot media to find a suitable image.
399
400 config SPL_LEGACY_IMAGE_FORMAT
401         bool "Support SPL loading and booting of Legacy images"
402         default y if !SPL_LOAD_FIT
403         depends on !TI_SECURE_DEVICE
404         help
405           SPL will support loading and booting Legacy images when this option
406           is y. If this is not set, SPL will move on to other available
407           boot media to find a suitable image.
408
409 config SPL_LEGACY_IMAGE_CRC_CHECK
410         bool "Check CRC of Legacy images"
411         depends on SPL_LEGACY_IMAGE_FORMAT
412         select SPL_CRC32
413         help
414           Enable this to check the CRC of Legacy images. While this increases
415           reliability, it affects both code size and boot duration.
416           If disabled, Legacy images are booted if the image magic and size
417           are correct, without further integrity checks.
418
419 config SPL_SYS_MALLOC_SIMPLE
420         bool
421         prompt "Only use malloc_simple functions in the SPL"
422         help
423           Say Y here to only use the *_simple malloc functions from
424           malloc_simple.c, rather then using the versions from dlmalloc.c;
425           this will make the SPL binary smaller at the cost of more heap
426           usage as the *_simple malloc functions do not re-use free-ed mem.
427
428 config TPL_SYS_MALLOC_SIMPLE
429         bool
430         prompt "Only use malloc_simple functions in the TPL"
431         depends on TPL
432         help
433           Say Y here to only use the *_simple malloc functions from
434           malloc_simple.c, rather then using the versions from dlmalloc.c;
435           this will make the TPL binary smaller at the cost of more heap
436           usage as the *_simple malloc functions do not re-use free-ed mem.
437
438 config SPL_SHARES_INIT_SP_ADDR
439         bool "SPL and U-Boot use the same initial stack pointer location"
440         depends on (ARM || ARCH_JZ47XX || MICROBLAZE || RISCV) && SPL_FRAMEWORK
441         default n if ARCH_SUNXI || ARCH_MX6 || ARCH_MX7
442         default y
443         help
444           In many cases, we can use the same initial stack pointer address for
445           both SPL and U-Boot itself.  If you need to specify a different address
446           however, say N here and then set a different value in CONFIG_SPL_STACK.
447
448 config SPL_STACK
449         hex "Initial stack pointer location"
450         depends on (ARM || ARCH_JZ47XX || MICROBLAZE || RISCV) && SPL_FRAMEWORK
451         depends on !SPL_SHARES_INIT_SP_ADDR
452         default 0x946bb8 if ARCH_MX7
453         default 0x93ffb8 if ARCH_MX6 && MX6_OCRAM_256KB
454         default 0x91ffb8 if ARCH_MX6 && !MX6_OCRAM_256KB
455         help
456           Address of the start of the stack SPL will use before SDRAM is
457           initialized.
458
459 config SPL_STACK_R
460         bool "Enable SDRAM location for SPL stack"
461         help
462           SPL starts off execution in SRAM and thus typically has only a small
463           stack available. Since SPL sets up DRAM while in its board_init_f()
464           function, it is possible for the stack to move there before
465           board_init_r() is reached. This option enables a special SDRAM
466           location for the SPL stack. U-Boot SPL switches to this after
467           board_init_f() completes, and before board_init_r() starts.
468
469 config SPL_STACK_R_ADDR
470         depends on SPL_STACK_R
471         hex "SDRAM location for SPL stack"
472         default 0x82000000 if ARCH_OMAP2PLUS
473         help
474           Specify the address in SDRAM for the SPL stack. This will be set up
475           before board_init_r() is called.
476
477 config SPL_STACK_R_MALLOC_SIMPLE_LEN
478         depends on SPL_STACK_R && SPL_SYS_MALLOC_SIMPLE
479         hex "Size of malloc_simple heap after switching to DRAM SPL stack"
480         default 0x100000
481         help
482           Specify the amount of the stack to use as memory pool for
483           malloc_simple after switching the stack to DRAM. This may be set
484           to give board_init_r() a larger heap then the initial heap in
485           SRAM which is limited to SYS_MALLOC_F_LEN bytes.
486
487 config SPL_SEPARATE_BSS
488         bool "BSS section is in a different memory region from text"
489         help
490           Some platforms need a large BSS region in SPL and can provide this
491           because RAM is already set up. In this case BSS can be moved to RAM.
492           This option should then be enabled so that the correct device tree
493           location is used. Normally we put the device tree at the end of BSS
494           but with this option enabled, it goes at _image_binary_end.
495
496 config SYS_SPL_MALLOC
497         bool "Enable malloc pool in SPL"
498         depends on SPL_FRAMEWORK
499
500 config HAS_CUSTOM_SPL_MALLOC_START
501         bool "For the SPL malloc pool, define a custom starting address"
502         depends on SYS_SPL_MALLOC
503
504 config CUSTOM_SYS_SPL_MALLOC_ADDR
505         hex "SPL malloc addr"
506         depends on HAS_CUSTOM_SPL_MALLOC_START
507
508 config SYS_SPL_MALLOC_SIZE
509         hex "Size of the SPL malloc pool"
510         depends on SYS_SPL_MALLOC
511         default 0x100000
512
513 config SPL_READ_ONLY
514         bool
515         depends on SPL_OF_PLATDATA
516         # Bind cannot be supported because the udevice structs are in read-only
517         # memory so we cannot update the linked lists.
518         select SPL_OF_PLATDATA_NO_BIND
519         select SPL_OF_PLATDATA_RT
520         help
521           Some platforms (e.g. x86 Apollo Lake) load SPL into a read-only
522           section of memory. This means that of-platdata must make a copy (in
523           writeable memory) of anything it wants to modify, such as
524           device-private data.
525
526 config TPL_SEPARATE_BSS
527         bool "BSS section is in a different memory region from text"
528         default y if SPL_SEPARATE_BSS
529         help
530           Some platforms need a large BSS region in TPL and can provide this
531           because RAM is already set up. In this case BSS can be moved to RAM.
532           This option should then be enabled so that the correct device tree
533           location is used. Normally we put the device tree at the end of BSS
534           but with this option enabled, it goes at _image_binary_end.
535
536 config SPL_BANNER_PRINT
537         bool "Enable output of the SPL banner 'U-Boot SPL ...'"
538         default y
539         help
540           If this option is enabled, SPL will print the banner with version
541           info. Disabling this option could be useful to reduce SPL boot time
542           (e.g. approx. 6 ms faster, when output on i.MX6 with 115200 baud).
543
544 config TPL_BANNER_PRINT
545         bool "Enable output of the TPL banner 'U-Boot TPL ...'"
546         depends on TPL
547         default y
548         help
549           If this option is enabled, TPL will print the banner with version
550           info. Disabling this option could be useful to reduce TPL boot time
551           (e.g. approx. 6 ms faster, when output on i.MX6 with 115200 baud).
552
553 config SPL_EARLY_BSS
554         depends on ARM && !ARM64
555         bool "Allows initializing BSS early before entering board_init_f"
556         help
557           On some platform we have sufficient memory available early on to
558           allow setting up and using a basic BSS prior to entering
559           board_init_f. Activating this option will also de-activate the
560           clearing of BSS during the SPL relocation process, thus allowing
561           to carry state from board_init_f to board_init_r by way of BSS.
562
563 config SPL_DISPLAY_PRINT
564         bool "Display a board-specific message in SPL"
565         help
566           If this option is enabled, U-Boot will call the function
567           spl_display_print() immediately after displaying the SPL console
568           banner ("U-Boot SPL ..."). This function should be provided by
569           the board.
570
571 config SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
572         bool "MMC raw mode: by sector"
573         default y if ARCH_SUNXI || ARCH_DAVINCI || ARCH_UNIPHIER || \
574                      ARCH_MX6 || ARCH_MX7 || \
575                      ARCH_ROCKCHIP || ARCH_MVEBU ||  ARCH_SOCFPGA || \
576                      ARCH_AT91 || ARCH_ZYNQ || ARCH_KEYSTONE || OMAP34XX || \
577                      OMAP44XX || OMAP54XX || AM33XX || AM43XX || \
578                      TARGET_SIFIVE_UNLEASHED || TARGET_SIFIVE_UNMATCHED
579         help
580           Use sector number for specifying U-Boot location on MMC/SD in
581           raw mode.
582
583 config SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR
584         hex "Address on the MMC to load U-Boot from"
585         depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
586         default 0x40 if ARCH_SUNXI
587         default 0x75 if ARCH_DAVINCI
588         default 0x8a if ARCH_MX6 || ARCH_MX7
589         default 0x100 if ARCH_UNIPHIER
590         default 0x0 if ARCH_MVEBU
591         default 0x200 if ARCH_SOCFPGA || ARCH_AT91
592         default 0x300 if ARCH_ZYNQ || ARCH_KEYSTONE || OMAP34XX || OMAP44XX || \
593                          OMAP54XX || AM33XX || AM43XX || ARCH_K3
594         default 0x4000 if ARCH_ROCKCHIP
595         default 0x822 if TARGET_SIFIVE_UNLEASHED || TARGET_SIFIVE_UNMATCHED
596         help
597           Address on the MMC to load U-Boot from, when the MMC is being used
598           in raw mode. Units: MMC sectors (1 sector = 512 bytes).
599
600 config SYS_MMCSD_RAW_MODE_U_BOOT_DATA_PART_OFFSET
601         hex "U-Boot main hardware partition image offset"
602         depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
603         default 0x10 if ARCH_SUNXI
604         default 0x0
605         help
606           On some platforms SPL location depends on hardware partition. The ROM
607           code skips the MBR sector when loading SPL from main hardware data
608           partition. This adds offset to the main U-Boot image. Set this symbol
609           to the number of skipped sectors.
610
611           If unsure, leave the default.
612
613 config SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
614         bool "MMC Raw mode: by partition"
615         help
616           Use a partition for loading U-Boot when using MMC/SD in raw mode.
617
618 config SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION
619         hex "Partition to use to load U-Boot from"
620         depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
621         default 1
622         help
623           Partition on the MMC to load U-Boot from when the MMC is being
624           used in raw mode
625
626 config SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
627         bool "MMC raw mode: by partition type"
628         depends on DOS_PARTITION && SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
629         help
630           Use partition type for specifying U-Boot partition on MMC/SD in
631           raw mode. U-Boot will be loaded from the first partition of this
632           type to be found.
633
634 config SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION_TYPE
635         hex "Partition Type on the MMC to load U-Boot from"
636         depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
637         help
638           Partition Type on the MMC to load U-Boot from, when the MMC is being
639           used in raw mode.
640
641 config SUPPORT_EMMC_BOOT_OVERRIDE_PART_CONFIG
642         bool "Override eMMC EXT_CSC_PART_CONFIG by user defined partition"
643         depends on SUPPORT_EMMC_BOOT
644         help
645           eMMC boot partition is normally configured by the bits of the EXT_CSD
646           register (EXT_CSC_PART_CONFIG), BOOT_PARTITION_ENABLE field. In some
647           cases it might be required in SPL to load the image from different
648           partition than the partition selected by EXT_CSC_PART_CONFIG register.
649           Enable this option if you intend to use an eMMC boot partition other
650           then selected via EXT_CSC_PART_CONFIG register and specify the custom
651           partition number by the CONFIG_SYS_MMCSD_RAW_MODE_EMMC_BOOT_PARTITION
652           option.
653
654 config SYS_MMCSD_RAW_MODE_EMMC_BOOT_PARTITION
655         int "Number of the eMMC boot partition to use"
656         depends on SUPPORT_EMMC_BOOT_OVERRIDE_PART_CONFIG
657         default 1
658         help
659           eMMC boot partition number to use when the eMMC in raw mode and
660           the eMMC EXT_CSC_PART_CONFIG selection should be overridden in SPL
661           by user defined partition number.
662
663 config SPL_CRC32
664         bool "Support CRC32"
665         default y if SPL_LEGACY_IMAGE_FORMAT || SPL_EFI_PARTITION
666         default y if SPL_ENV_SUPPORT || TPL_BLOBLIST
667         help
668           Enable this to support CRC32 in uImages or FIT images within SPL.
669           This is a 32-bit checksum value that can be used to verify images.
670           For FIT images, this is the least secure type of checksum, suitable
671           for detected accidental image corruption. For secure applications you
672           should consider SHA1 or SHA256.
673
674 config SPL_MD5
675         bool "Support MD5"
676         depends on SPL_FIT
677         help
678           Enable this to support MD5 in FIT images within SPL. An MD5
679           checksum is a 128-bit hash value used to check that the image
680           contents have not been corrupted. Note that MD5 is not considered
681           secure as it is possible (with a brute-force attack) to adjust the
682           image while still retaining the same MD5 hash value. For secure
683           applications where images may be changed maliciously, you should
684           consider SHA256 or SHA384.
685
686 config SPL_FIT_IMAGE_TINY
687         bool "Remove functionality from SPL FIT loading to reduce size"
688         depends on SPL_FIT
689         default y if MACH_SUN50I || MACH_SUN50I_H5 || SUN50I_GEN_H6
690         default y if ARCH_IMX8M
691         help
692           Enable this to reduce the size of the FIT image loading code
693           in SPL, if space for the SPL binary is very tight.
694
695           This skips the recording of each loaded payload
696           (i.e. loadable) into the FDT (modifying the loaded FDT to
697           ensure this information is available to the next image
698           invoked).
699
700 config SPL_CACHE
701         bool "Support CACHE drivers"
702         help
703           Enable CACHE drivers in SPL. These drivers can keep data so that
704           future requests for that data can be served faster. Enable this option
705           to build the drivers in drivers/cache as part of an SPL build.
706
707 config SPL_CPU
708         bool "Support CPU drivers"
709         help
710           Enable this to support CPU drivers in SPL. These drivers can set
711           up CPUs and provide information about them such as the model and
712           name. This can be useful in SPL since setting up the CPUs earlier
713           may improve boot performance. Enable this option to build the
714           drivers in drivers/cpu as part of an SPL build.
715
716 config SPL_CRYPTO
717         bool "Support crypto drivers"
718         help
719           Enable crypto drivers in SPL. These drivers can be used to
720           accelerate secure boot processing in secure applications. Enable
721           this option to build the drivers in drivers/crypto as part of an
722           SPL build.
723
724 config SPL_DMA
725         bool "Support DMA drivers"
726         help
727           Enable DMA (direct-memory-access) drivers in SPL. These drivers
728           can be used to handle memory-to-peripheral data transfer without
729           the CPU moving the data. Enable this option to build the drivers
730           in drivers/dma as part of an SPL build.
731
732 config SPL_DRIVERS_MISC
733         bool "Support misc drivers"
734         help
735           Enable miscellaneous drivers in SPL. These drivers perform various
736           tasks that don't fall nicely into other categories, Enable this
737           option to build the drivers in drivers/misc as part of an SPL
738           build, for those that support building in SPL (not all drivers do).
739
740 config SPL_ENV_SUPPORT
741         bool "Support an environment"
742         help
743           Enable environment support in SPL. The U-Boot environment provides
744           a number of settings (essentially name/value pairs) which can
745           control many aspects of U-Boot's operation. Normally this is not
746           needed in SPL as it has a much simpler task with less
747           configuration. But some boards use this to support 'Falcon' boot
748           on EXT2 and FAT, where SPL boots directly into Linux without
749           starting U-Boot first. Enabling this option will make env_get()
750           and env_set() available in SPL.
751
752 config SPL_SAVEENV
753         bool "Support save environment"
754         depends on SPL_ENV_SUPPORT
755         select SPL_MMC_WRITE if ENV_IS_IN_MMC
756         help
757           Enable save environment support in SPL after setenv. By default
758           the saveenv option is not provided in SPL, but some boards need
759           this support in 'Falcon' boot, where SPL need to boot from
760           different images based on environment variable set by OS. For
761           example OS may set "reboot_image" environment variable to
762           "recovery" inorder to boot recovery image by SPL. The SPL read
763           "reboot_image" and act accordingly and change the reboot_image
764           to default mode using setenv and save the environment.
765
766 config SPL_ETH
767         bool "Support Ethernet"
768         depends on SPL_ENV_SUPPORT
769         depends on SPL_NET
770         help
771           Enable access to the network subsystem and associated Ethernet
772           drivers in SPL. This permits SPL to load U-Boot over an Ethernet
773           link rather than from an on-board peripheral. Environment support
774           is required since the network stack uses a number of environment
775           variables. See also SPL_NET.
776
777 config SPL_FS_EXT4
778         bool "Support EXT filesystems"
779         help
780           Enable support for EXT2/3/4 filesystems with SPL. This permits
781           U-Boot (or Linux in Falcon mode) to be loaded from an EXT
782           filesystem from within SPL. Support for the underlying block
783           device (e.g. MMC or USB) must be enabled separately.
784
785 config SPL_FS_SQUASHFS
786         bool "Support SquashFS filesystems"
787         select FS_SQUASHFS
788         help
789           Enable support for SquashFS filesystems with SPL. This permits
790           U-Boot (or Linux in Falcon mode) to be loaded from a SquashFS
791           filesystem from within SPL. Support for the underlying block
792           device (e.g. MMC or USB) must be enabled separately.
793
794 config SPL_FS_FAT
795         bool "Support FAT filesystems"
796         select FS_FAT
797         help
798           Enable support for FAT and VFAT filesystems with SPL. This
799           permits U-Boot (or Linux in Falcon mode) to be loaded from a FAT
800           filesystem from within SPL. Support for the underlying block
801           device (e.g. MMC or USB) must be enabled separately.
802
803 config SPL_FS_LOAD_PAYLOAD_NAME
804         string "File to load for U-Boot from the filesystem"
805         depends on SPL_FS_EXT4 || SPL_FS_FAT || SPL_FS_SQUASHFS
806         default "tispl.bin" if SYS_K3_SPL_ATF
807         default "u-boot.itb" if SPL_LOAD_FIT
808         default "u-boot.img"
809         help
810           Filename to read to load U-Boot when reading from filesystem.
811
812 config SPL_FS_LOAD_KERNEL_NAME
813         string "File to load for the OS kernel from the filesystem"
814         depends on (SPL_FS_EXT4 || SPL_FS_FAT || SPL_FS_SQUASHFS) && SPL_OS_BOOT
815         default "uImage"
816         help
817           Filename to read to load for the OS kernel when reading from the
818           filesystem.
819
820 config SPL_FS_LOAD_ARGS_NAME
821         string "File to load for the OS kernel argument parameters from the filesystem"
822         depends on (SPL_FS_EXT4 || SPL_FS_FAT || SPL_FS_SQUASHFS) && SPL_OS_BOOT
823         default "args"
824         help
825           Filename to read to load for the OS kernel argument parameters from
826           the filesystem.
827
828 config SPL_FAT_WRITE
829         bool "Support write for FAT filesystems"
830         help
831           Enable write support for FAT and VFAT filesystems with SPL.
832           Support for the underlying block device (e.g. MMC or USB) must be
833           enabled separately.
834
835 config SPL_FPGA
836         bool "Support FPGAs"
837         help
838           Enable support for FPGAs in SPL. Field-programmable Gate Arrays
839           provide software-configurable hardware which is typically used to
840           implement peripherals (such as UARTs, LCD displays, MMC) or
841           accelerate custom processing functions, such as image processing
842           or machine learning. Sometimes it is useful to program the FPGA
843           as early as possible during boot, and this option can enable that
844           within SPL.
845
846 config SPL_GPIO
847         bool "Support GPIO in SPL"
848         help
849           Enable support for GPIOs (General-purpose Input/Output) in SPL.
850           GPIOs allow U-Boot to read the state of an input line (high or
851           low) and set the state of an output line. This can be used to
852           drive LEDs, control power to various system parts and read user
853           input. GPIOs can be useful in SPL to enable a 'sign-of-life' LED,
854           for example. Enable this option to build the drivers in
855           drivers/gpio as part of an SPL build.
856
857 config SPL_I2C
858         bool "Support I2C"
859         help
860           Enable support for the I2C (Inter-Integrated Circuit) bus in SPL.
861           I2C works with a clock and data line which can be driven by a
862           one or more masters or slaves. It is a fairly complex bus but is
863           widely used as it only needs two lines for communication. Speeds of
864           400kbps are typical but up to 3.4Mbps is supported by some
865           hardware. I2C can be useful in SPL to configure power management
866           ICs (PMICs) before raising the CPU clock speed, for example.
867           Enable this option to build the drivers in drivers/i2c as part of
868           an SPL build.
869
870 config SPL_LIBCOMMON_SUPPORT
871         bool "Support common libraries"
872         help
873           Enable support for common U-Boot libraries within SPL. These
874           libraries include common code to deal with U-Boot images,
875           environment and USB, for example. This option is enabled on many
876           boards. Enable this option to build the code in common/ as part of
877           an SPL build.
878
879 config SPL_LIBDISK_SUPPORT
880         bool "Support disk partitions"
881         select PARTITIONS
882         help
883           Enable support for disk partitions within SPL. 'Disk' is something
884           of a misnomer as it includes non-spinning media such as flash (as
885           used in MMC and USB sticks). Partitions provide a way for a disk
886           to be split up into separate regions, with a partition table placed
887           at the start or end which describes the location and size of each
888           'partition'. These partitions are typically uses as individual block
889           devices, typically with an EXT2 or FAT filesystem in each. This
890           option enables whatever partition support has been enabled in
891           U-Boot to also be used in SPL. It brings in the code in disk/.
892
893 config SPL_LIBGENERIC_SUPPORT
894         bool "Support generic libraries"
895         help
896           Enable support for generic U-Boot libraries within SPL. These
897           libraries include generic code to deal with device tree, hashing,
898           printf(), compression and the like. This option is enabled on many
899           boards. Enable this option to build the code in lib/ as part of an
900           SPL build.
901
902 config SPL_DM_MAILBOX
903         bool "Support Mailbox"
904         help
905           Enable support for Mailbox within SPL. This enable the inter
906           processor communication protocols tobe used within SPL. Enable
907           this option to build the drivers in drivers/mailbox as part of
908           SPL build.
909
910 config SPL_MMC
911         bool "Support MMC"
912         depends on MMC
913         select HAVE_BLOCK_DEVICE
914         help
915           Enable support for MMC (Multimedia Card) within SPL. This enables
916           the MMC protocol implementation and allows any enabled drivers to
917           be used within SPL. MMC can be used with or without disk partition
918           support depending on the application (SPL_LIBDISK_SUPPORT). Enable
919           this option to build the drivers in drivers/mmc as part of an SPL
920           build.
921
922 config SYS_MMCSD_FS_BOOT_PARTITION
923         int "MMC Boot Partition"
924         default 1
925         help
926           Partition on the MMC to load U-Boot from when the MMC is being
927           used in fs mode.
928           Use -1 as a special value to use the first bootable partition.
929
930 config SPL_MMC_TINY
931         bool "Tiny MMC framework in SPL"
932         depends on SPL_MMC
933         help
934           Enable MMC framework tinification support. This option is useful if
935           if your SPL is extremely size constrained. Heed the warning, enable
936           this option if and only if you know exactly what you are doing, if
937           you are reading this help text, you most likely have no idea :-)
938
939           The MMC framework is reduced to bare minimum to be useful. No malloc
940           support is needed for the MMC framework operation with this option
941           enabled. The framework supports exactly one MMC device and exactly
942           one MMC driver. The MMC driver can be adjusted to avoid any malloc
943           operations too, which can remove the need for malloc support in SPL
944           and thus further reduce footprint.
945
946 config SPL_MMC_WRITE
947         bool "MMC/SD/SDIO card support for write operations in SPL"
948         depends on SPL_MMC
949         help
950           Enable write access to MMC and SD Cards in SPL
951
952
953 config SPL_MPC8XXX_INIT_DDR
954         bool "Support MPC8XXX DDR init"
955         help
956           Enable support for DDR-SDRAM (double-data-rate synchronous dynamic
957           random-access memory) on the MPC8XXX family within SPL. This
958           allows DRAM to be set up before loading U-Boot into that DRAM,
959           where it can run.
960
961 config SPL_MTD_SUPPORT
962         bool "Support MTD drivers"
963         help
964           Enable support for MTD (Memory Technology Device) within SPL. MTD
965           provides a block interface over raw NAND and can also be used with
966           SPI flash. This allows SPL to load U-Boot from supported MTD
967           devices. See SPL_NAND_SUPPORT and SPL_ONENAND_SUPPORT for how
968           to enable specific MTD drivers.
969
970 config SPL_MUSB_NEW
971         bool "Support new Mentor Graphics USB"
972         help
973           Enable support for Mentor Graphics USB in SPL. This is a new
974           driver used by some boards. Enable this option to build
975           the drivers in drivers/usb/musb-new as part of an SPL build. The
976           old drivers are in drivers/usb/musb.
977
978 config SPL_NAND_SUPPORT
979         bool "Support NAND flash"
980         help
981           Enable support for NAND (Negative AND) flash in SPL. NAND flash
982           can be used to allow SPL to load U-Boot from supported devices.
983           This enables the drivers in drivers/mtd/nand/raw as part of an SPL
984           build.
985
986 config SPL_NAND_RAW_ONLY
987         bool "Support to boot only raw u-boot.bin images"
988         depends on SPL_NAND_SUPPORT
989         help
990           Use this only if you need to save space.
991
992 config SPL_NAND_DRIVERS
993         bool "Use standard NAND driver"
994         help
995           SPL uses normal NAND drivers, not minimal drivers.
996
997 config SPL_NAND_ECC
998         bool "Include standard ECC in SPL"
999
1000 config SPL_NAND_SOFTECC
1001         bool "Use software ECC in SPL"
1002         depends on SPL_NAND_ECC
1003
1004 config SPL_NAND_SIMPLE
1005         bool "Support simple NAND drivers in SPL"
1006         help
1007           Support for NAND boot using simple NAND drivers that
1008           expose the cmd_ctrl() interface.
1009
1010 config SPL_NAND_BASE
1011         depends on SPL_NAND_DRIVERS
1012         bool "Use Base NAND Driver"
1013         help
1014           Include nand_base.c in the SPL.
1015
1016 config SPL_NAND_IDENT
1017         depends on SPL_NAND_BASE
1018         bool "Use chip ID to identify NAND flash"
1019         help
1020           SPL uses the chip ID list to identify the NAND flash.
1021
1022 config SPL_UBI
1023         bool "Support UBI"
1024         help
1025           Enable support for loading payloads from UBI. See
1026           README.ubispl for more info.
1027
1028 if SPL_DM
1029 config SPL_DM_SPI
1030         bool "Support SPI DM drivers in SPL"
1031         help
1032           Enable support for SPI DM drivers in SPL.
1033
1034 config SPL_DM_SPI_FLASH
1035         bool "Support SPI DM FLASH drivers in SPL"
1036         help
1037           Enable support for SPI DM flash drivers in SPL.
1038
1039 endif
1040 if SPL_UBI
1041 config SPL_UBI_LOAD_BY_VOLNAME
1042         bool "Support loading volumes by name"
1043         help
1044           This enables support for loading UBI volumes by name. When this
1045           is set, CONFIG_SPL_UBI_LOAD_MONITOR_VOLNAME can be used to
1046           configure the volume name from which to load U-Boot.
1047
1048 config SPL_UBI_MAX_VOL_LEBS
1049         int "Maximum number of LEBs per volume"
1050         depends on SPL_UBI
1051         help
1052           The maximum number of logical eraseblocks which a static volume
1053           to load can contain. Used for sizing the scan data structure.
1054
1055 config SPL_UBI_MAX_PEB_SIZE
1056         int "Maximum PEB size"
1057         depends on SPL_UBI
1058         help
1059           The maximum physical erase block size.
1060
1061 config SPL_UBI_MAX_PEBS
1062         int "Maximum number of PEBs"
1063         depends on SPL_UBI
1064         help
1065           The maximum physical erase block size. If not overridden by
1066           board code, this value will be used as the actual number of PEBs.
1067
1068 config SPL_UBI_PEB_OFFSET
1069         int "Offset to first UBI PEB"
1070         depends on SPL_UBI
1071         help
1072           The offset in number of PEBs from the start of flash to the first
1073           PEB part of the UBI image.
1074
1075 config SPL_UBI_VID_OFFSET
1076         int "Offset to VID header"
1077         depends on SPL_UBI
1078
1079 config SPL_UBI_LEB_START
1080         int "Offset to LEB in PEB"
1081         depends on SPL_UBI
1082         help
1083           The offset in bytes to the LEB within a PEB.
1084
1085 config SPL_UBI_INFO_ADDR
1086         hex "Address to place UBI scan info"
1087         depends on SPL_UBI
1088         help
1089           Address for ubispl to place the scan info. Read README.ubispl to
1090           determine the required size
1091
1092 config SPL_UBI_VOL_IDS
1093         int "Maximum volume id"
1094         depends on SPL_UBI
1095         help
1096           The maximum volume id which can be loaded. Used for sizing the
1097           scan data structure.
1098
1099 config SPL_UBI_LOAD_MONITOR_ID
1100         int "id of U-Boot volume"
1101         depends on SPL_UBI
1102         help
1103           The UBI volume id from which to load U-Boot
1104
1105 config SPL_UBI_LOAD_MONITOR_VOLNAME
1106         string "volume name of U-Boot volume"
1107         depends on SPL_UBI_LOAD_BY_VOLNAME
1108         help
1109           The UBI volume name from which to load U-Boot
1110
1111 config SPL_UBI_LOAD_KERNEL_ID
1112         int "id of kernel volume"
1113         depends on SPL_OS_BOOT && SPL_UBI
1114         help
1115           The UBI volume id from which to load the kernel
1116
1117 config SPL_UBI_LOAD_ARGS_ID
1118         int "id of kernel args volume"
1119         depends on SPL_OS_BOOT && SPL_UBI
1120         help
1121           The UBI volume id from which to load the device tree
1122
1123 config UBI_SPL_SILENCE_MSG
1124         bool "silence UBI SPL messages"
1125         help
1126           Disable messages from UBI SPL. This leaves warnings
1127           and errors enabled.
1128
1129 endif   # if SPL_UBI
1130
1131 config SPL_NET
1132         bool "Support networking"
1133         help
1134           Enable support for network devices (such as Ethernet) in SPL.
1135           This permits SPL to load U-Boot over a network link rather than
1136           from an on-board peripheral. Environment support is required since
1137           the network stack uses a number of environment variables. See also
1138           SPL_ETH.
1139
1140 if SPL_NET
1141 config SPL_NET_VCI_STRING
1142         string "BOOTP Vendor Class Identifier string sent by SPL"
1143         help
1144           As defined by RFC 2132 the vendor class identifier field can be
1145           sent by the client to identify the vendor type and configuration
1146           of a client.  This is often used in practice to allow for the DHCP
1147           server to specify different files to load depending on if the ROM,
1148           SPL or U-Boot itself makes the request
1149 endif   # if SPL_NET
1150
1151 config SPL_NO_CPU_SUPPORT
1152         bool "Drop CPU code in SPL"
1153         help
1154           This is specific to the ARM926EJ-S CPU. It disables the standard
1155           start.S start-up code, presumably so that a replacement can be
1156           used on that CPU. You should not enable it unless you know what
1157           you are doing.
1158
1159 config SPL_NOR_SUPPORT
1160         bool "Support NOR flash"
1161         help
1162           Enable support for loading U-Boot from memory-mapped NOR (Negative
1163           OR) flash in SPL. NOR flash is slow to write but fast to read, and
1164           a memory-mapped device makes it very easy to access. Loading from
1165           NOR is typically achieved with just a memcpy().
1166
1167 config SPL_XIP_SUPPORT
1168         bool "Support XIP"
1169         depends on SPL
1170         help
1171           Enable support for execute in place of U-Boot or kernel image. There
1172           is no need to copy image from flash to ram if flash supports execute
1173           in place. Its very useful in systems having enough flash but not
1174           enough ram to load the image.
1175
1176 config SPL_ONENAND_SUPPORT
1177         bool "Support OneNAND flash"
1178         help
1179           Enable support for OneNAND (Negative AND) flash in SPL. OneNAND is
1180           a type of NAND flash and therefore can be used to allow SPL to
1181           load U-Boot from supported devices. This enables the drivers in
1182           drivers/mtd/onenand as part of an SPL build.
1183
1184 config SPL_OS_BOOT
1185         bool "Activate Falcon Mode"
1186         depends on !TI_SECURE_DEVICE
1187         help
1188           Enable booting directly to an OS from SPL.
1189           for more info read doc/README.falcon
1190
1191 if SPL_OS_BOOT
1192 config SYS_OS_BASE
1193         hex "addr, where OS is found"
1194         depends on SPL_NOR_SUPPORT
1195         help
1196           Specify the address, where the OS image is found, which
1197           gets booted.
1198
1199 endif # SPL_OS_BOOT
1200
1201 config SPL_FALCON_BOOT_MMCSD
1202         bool "Enable Falcon boot from MMC or SD media"
1203         depends on SPL_OS_BOOT && SPL_MMC
1204         help
1205           Select this if the Falcon mode OS image mode is on MMC or SD media.
1206
1207 config SYS_MMCSD_RAW_MODE_KERNEL_SECTOR
1208         hex "Falcon mode: Sector to load kernel uImage from MMC"
1209         depends on SPL_FALCON_BOOT_MMCSD
1210         help
1211           When Falcon mode is used with an MMC or SD media, SPL needs to know
1212           where to look for the kernel uImage. The image is expected to begin
1213           at the raw MMC specified in this config.
1214           Note that the Falcon mode image can also be a FIT, if FIT support is
1215           enabled.
1216
1217 config SPL_PAYLOAD
1218         string "SPL payload"
1219         default "tpl/u-boot-with-tpl.bin" if TPL
1220         default "u-boot.bin"
1221         help
1222           Payload for SPL boot. For backward compatibility, default to
1223           u-boot.bin, i.e. RAW image without any header. In case of
1224           TPL, tpl/u-boot-with-tpl.bin. For new boards, suggest to
1225           use u-boot.img.
1226
1227 config SPL_PCI
1228         bool "Support PCI drivers"
1229         help
1230           Enable support for PCI in SPL. For platforms that need PCI to boot,
1231           or must perform some init using PCI in SPL, this provides the
1232           necessary driver support. This enables the drivers in drivers/pci
1233           as part of an SPL build.
1234
1235 config SPL_PCH
1236         bool "Support PCH drivers"
1237         help
1238           Enable support for PCH (Platform Controller Hub) devices in SPL.
1239           These are used to set up GPIOs and the SPI peripheral early in
1240           boot. This enables the drivers in drivers/pch as part of an SPL
1241           build.
1242
1243 config SPL_POST_MEM_SUPPORT
1244         bool "Support POST drivers"
1245         help
1246           Enable support for POST (Power-on Self Test) in SPL. POST is a
1247           procedure that checks that the hardware (CPU or board) appears to
1248           be functionally correctly. It is a sanity check that can be
1249           performed before booting. This enables the drivers in post/drivers
1250           as part of an SPL build.
1251
1252 config SPL_DM_RESET
1253         bool "Support reset drivers"
1254         depends on SPL
1255         help
1256           Enable support for reset control in SPL.
1257           That can be useful in SPL to handle IP reset in driver, as in U-Boot,
1258           by using the generic reset API provided by driver model.
1259           This enables the drivers in drivers/reset as part of an SPL build.
1260
1261 config SPL_POWER
1262         bool "Support power drivers"
1263         help
1264           Enable support for power control in SPL. This includes support
1265           for PMICs (Power-management Integrated Circuits) and some of the
1266           features provided by PMICs. In particular, voltage regulators can
1267           be used to enable/disable power and vary its voltage. That can be
1268           useful in SPL to turn on boot peripherals and adjust CPU voltage
1269           so that the clock speed can be increased. This enables the drivers
1270           in drivers/power, drivers/power/pmic and drivers/power/regulator
1271           as part of an SPL build.
1272
1273 config SPL_POWER_DOMAIN
1274         bool "Support power domain drivers"
1275         select SPL_POWER
1276         help
1277           Enable support for power domain control in SPL. Many SoCs allow
1278           power to be applied to or removed from portions of the SoC (power
1279           domains). This may be used to save power. This API provides the
1280           means to control such power management hardware. This enables
1281           the drivers in drivers/power/domain as part of a SPL build.
1282
1283 config SPL_RAM_SUPPORT
1284         bool "Support booting from RAM"
1285         default y if MICROBLAZE || ARCH_SOCFPGA || ARCH_TEGRA || ARCH_ZYNQ
1286         help
1287           Enable booting of an image in RAM. The image can be preloaded or
1288           it can be loaded by SPL directly into RAM (e.g. using USB).
1289
1290 config SPL_RAM_DEVICE
1291         bool "Support booting from preloaded image in RAM"
1292         depends on SPL_RAM_SUPPORT
1293         default y if MICROBLAZE || ARCH_SOCFPGA || ARCH_TEGRA || ARCH_ZYNQ
1294         help
1295           Enable booting of an image already loaded in RAM. The image has to
1296           be already in memory when SPL takes over, e.g. loaded by the boot
1297           ROM.
1298
1299 config SPL_REMOTEPROC
1300         bool "Support REMOTEPROCS"
1301         help
1302           Enable support for REMOTEPROCs in SPL. This permits to load
1303           a remote processor firmware in SPL.
1304
1305 config SPL_RTC
1306         bool "Support RTC drivers"
1307         help
1308           Enable RTC (Real-time Clock) support in SPL. This includes support
1309           for reading and setting the time. Some RTC devices also have some
1310           non-volatile (battery-backed) memory which is accessible if
1311           needed. This enables the drivers in drivers/rtc as part of an SPL
1312           build.
1313
1314 config SPL_SATA
1315         bool "Support loading from SATA"
1316         help
1317           Enable support for SATA (Serial AT attachment) in SPL. This allows
1318           use of SATA devices such as hard drives and flash drivers for
1319           loading U-Boot. SATA is used in higher-end embedded systems and
1320           can provide higher performance than MMC , at somewhat higher
1321           expense and power consumption. This enables loading from SATA
1322           using a configured device.
1323
1324 config SPL_SATA_RAW_U_BOOT_USE_SECTOR
1325         bool "SATA raw mode: by sector"
1326         depends on SPL_SATA
1327         default y if ARCH_MVEBU
1328         help
1329           Use sector number for specifying U-Boot location on SATA disk in
1330           raw mode.
1331
1332 config SPL_SATA_RAW_U_BOOT_SECTOR
1333         hex "Sector on the SATA disk to load U-Boot from"
1334         depends on SPL_SATA_RAW_U_BOOT_USE_SECTOR
1335         default 0x1 if ARCH_MVEBU
1336         help
1337           Sector on the SATA disk to load U-Boot from, when the SATA disk is being
1338           used in raw mode. Units: SATA disk sectors (1 sector = 512 bytes).
1339
1340 config SPL_SERIAL
1341         bool "Support serial"
1342         select SPL_PRINTF
1343         select SPL_STRTO
1344         help
1345           Enable support for serial in SPL. This allows use of a serial UART
1346           for displaying messages while SPL is running. It also brings in
1347           printf() and panic() functions. This should normally be enabled
1348           unless there are space reasons not to. Even then, consider
1349           enabling SPL_USE_TINY_PRINTF which is a small printf() version.
1350
1351 config SPL_SPI
1352         bool "Support SPI drivers"
1353         help
1354           Enable support for using SPI in SPL. This is used for connecting
1355           to SPI flash for loading U-Boot. See SPL_SPI_FLASH_SUPPORT for
1356           more details on that. The SPI driver provides the transport for
1357           data between the SPI flash and the CPU. This option can be used to
1358           enable SPI drivers that are needed for other purposes also, such
1359           as a SPI PMIC.
1360
1361 config SPL_SPI_FLASH_SUPPORT
1362         bool "Support SPI flash drivers"
1363         depends on SPL_SPI
1364         help
1365           Enable support for using SPI flash in SPL, and loading U-Boot from
1366           SPI flash. SPI flash (Serial Peripheral Bus flash) is named after
1367           the SPI bus that is used to connect it to a system. It is a simple
1368           but fast bidirectional 4-wire bus (clock, chip select and two data
1369           lines). This enables the drivers in drivers/mtd/spi as part of an
1370           SPL build. This normally requires SPL_SPI.
1371
1372 if SPL_SPI_FLASH_SUPPORT
1373
1374 config SPL_SPI_FLASH_TINY
1375         bool "Enable low footprint SPL SPI Flash support"
1376         depends on !SPI_FLASH_BAR
1377         default y if SPI_FLASH
1378         help
1379          Enable lightweight SPL SPI Flash support that supports just reading
1380          data/images from flash. No support to write/erase flash. Enable
1381          this if you have SPL size limitations and don't need full
1382          fledged SPI flash support.
1383
1384 config SPL_SPI_FLASH_SFDP_SUPPORT
1385         bool "SFDP table parsing support for SPI NOR flashes"
1386         depends on !SPI_FLASH_BAR && !SPL_SPI_FLASH_TINY
1387         help
1388          Enable support for parsing and auto discovery of parameters for
1389          SPI NOR flashes using Serial Flash Discoverable Parameters (SFDP)
1390          tables as per JESD216 standard in SPL.
1391
1392 config SPL_SPI_FLASH_MTD
1393         bool "Support for SPI flash MTD drivers in SPL"
1394         help
1395           Enable support for SPI flash MTD drivers in SPL.
1396
1397 config SPL_SPI_LOAD
1398         bool "Support loading from SPI flash"
1399         help
1400           Enable support for loading next stage, U-Boot or otherwise, from
1401           SPI NOR in U-Boot SPL.
1402
1403 endif # SPL_SPI_FLASH_SUPPORT
1404
1405 config SYS_SPI_U_BOOT_OFFS
1406         hex "address of u-boot payload in SPI flash"
1407         default 0x8000 if ARCH_SUNXI
1408         default 0x0
1409         depends on SPL_SPI_LOAD || SPL_SPI_SUNXI
1410         help
1411          Address within SPI-Flash from where the u-boot payload is fetched
1412          from.
1413
1414 config SPL_THERMAL
1415         bool "Driver support for thermal devices"
1416         help
1417           Enable support for temperature-sensing devices. Some SoCs have on-chip
1418           temperature sensors to permit warnings, speed throttling or even
1419           automatic power-off when the temperature gets too high or low. Other
1420           devices may be discrete but connected on a suitable bus.
1421
1422 config SPL_USB_HOST
1423         bool "Support USB host drivers"
1424         select HAVE_BLOCK_DEVICE
1425         help
1426           Enable access to USB (Universal Serial Bus) host devices so that
1427           SPL can load U-Boot from a connected USB peripheral, such as a USB
1428           flash stick. While USB takes a little longer to start up than most
1429           buses, it is very flexible since many different types of storage
1430           device can be attached. This option enables the drivers in
1431           drivers/usb/host as part of an SPL build.
1432
1433 config SPL_USB_STORAGE
1434         bool "Support loading from USB"
1435         depends on SPL_USB_HOST && !(BLK && !DM_USB)
1436         help
1437           Enable support for USB devices in SPL. This allows use of USB
1438           devices such as hard drives and flash drivers for loading U-Boot.
1439           The actual drivers are enabled separately using the normal U-Boot
1440           config options. This enables loading from USB using a configured
1441           device.
1442
1443 config SPL_USB_GADGET
1444         bool "Suppport USB Gadget drivers"
1445         help
1446           Enable USB Gadget API which allows to enable USB device functions
1447           in SPL.
1448
1449 if SPL_USB_GADGET
1450
1451 config SPL_USB_ETHER
1452         bool "Support USB Ethernet drivers"
1453         depends on SPL_NET
1454         help
1455           Enable access to the USB network subsystem and associated
1456           drivers in SPL. This permits SPL to load U-Boot over a
1457           USB-connected Ethernet link (such as a USB Ethernet dongle) rather
1458           than from an onboard peripheral. Environment support is required
1459           since the network stack uses a number of environment variables.
1460           See also SPL_NET and SPL_ETH.
1461
1462 config SPL_DFU
1463         bool "Support DFU (Device Firmware Upgrade)"
1464         select SPL_HASH
1465         select SPL_DFU_NO_RESET
1466         depends on SPL_RAM_SUPPORT
1467         help
1468           This feature enables the DFU (Device Firmware Upgrade) in SPL with
1469           RAM memory device support. The ROM code will load and execute
1470           the SPL built with dfu. The user can load binaries (u-boot/kernel) to
1471           selected device partition from host-pc using dfu-utils.
1472           This feature is useful to flash the binaries to factory or bare-metal
1473           boards using USB interface.
1474
1475 choice
1476         bool "DFU device selection"
1477         depends on SPL_DFU
1478
1479 config SPL_DFU_RAM
1480         bool "RAM device"
1481         depends on SPL_DFU && SPL_RAM_SUPPORT
1482         help
1483          select RAM/DDR memory device for loading binary images
1484          (u-boot/kernel) to the selected device partition using
1485          DFU and execute the u-boot/kernel from RAM.
1486
1487 endchoice
1488
1489 config SPL_USB_SDP_SUPPORT
1490         bool "Support SDP (Serial Download Protocol)"
1491         depends on SPL_SERIAL
1492         help
1493           Enable Serial Download Protocol (SDP) device support in SPL. This
1494           allows to download images into memory and execute (jump to) them
1495           using the same protocol as implemented by the i.MX family's boot ROM.
1496
1497 config SPL_SDP_USB_DEV
1498         int "SDP USB controller index"
1499         default 0
1500         depends on SPL_USB_SDP_SUPPORT
1501         help
1502           Some boards have USB controller other than 0. Define this option
1503           so it can be used in compiled environment.
1504 endif
1505
1506 config SPL_WATCHDOG
1507         bool "Support watchdog drivers"
1508         imply SPL_WDT if !HW_WATCHDOG
1509         help
1510           Enable support for watchdog drivers in SPL. A watchdog is
1511           typically a hardware peripheral which can reset the system when it
1512           detects no activity for a while (such as a software crash). This
1513           enables the drivers in drivers/watchdog as part of an SPL build.
1514
1515 config SPL_YMODEM_SUPPORT
1516         bool "Support loading using Ymodem"
1517         depends on SPL_SERIAL
1518         help
1519           While loading from serial is slow it can be a useful backup when
1520           there is no other option. The Ymodem protocol provides a reliable
1521           means of transmitting U-Boot over a serial line for using in SPL,
1522           with a checksum to ensure correctness.
1523
1524 config SPL_ATF
1525         bool "Support ARM Trusted Firmware"
1526         depends on ARM64 && SPL_FIT
1527         help
1528           ATF(ARM Trusted Firmware) is a component for ARM AArch64 which
1529           is loaded by SPL (which is considered as BL2 in ATF terminology).
1530           More detail at: https://github.com/ARM-software/arm-trusted-firmware
1531
1532 config SPL_ATF_LOAD_IMAGE_V2
1533         bool "Use the new LOAD_IMAGE_V2 parameter passing"
1534         depends on SPL_ATF
1535         help
1536           Some platforms use the newer LOAD_IMAGE_V2 parameter passing.
1537
1538           If you want to load a bl31 image from the SPL and need the new
1539           method, say Y.
1540
1541 config SPL_ATF_NO_PLATFORM_PARAM
1542         bool "Pass no platform parameter"
1543         depends on SPL_ATF
1544         help
1545           While we expect to call a pointer to a valid FDT (or NULL)
1546           as the platform parameter to an ATF, some ATF versions are
1547           not U-Boot aware and have an insufficiently robust parameter
1548           validation to gracefully reject a FDT being passed.
1549
1550           If this option is enabled, the spl_atf os-type handler will
1551           always pass NULL for the platform parameter.
1552
1553           If your ATF is affected, say Y.
1554
1555 config SPL_AM33XX_ENABLE_RTC32K_OSC
1556         bool "Enable the RTC32K OSC on AM33xx based platforms"
1557         default y if AM33XX
1558         help
1559           Enable access to the AM33xx RTC and select the external 32kHz clock
1560           source.
1561
1562 config SPL_OPTEE_IMAGE
1563         bool "Support OP-TEE Trusted OS image in SPL"
1564         depends on ARM
1565         help
1566           OP-TEE is an open source Trusted OS which is loaded by SPL.
1567           More detail at: https://github.com/OP-TEE/optee_os
1568
1569 config SPL_OPENSBI
1570         bool "Support RISC-V OpenSBI"
1571         depends on RISCV && SPL_RISCV_MMODE && RISCV_SMODE
1572         help
1573           OpenSBI is an open-source implementation of the RISC-V Supervisor Binary
1574           Interface (SBI) specification. U-Boot supports the OpenSBI FW_DYNAMIC
1575           firmware. It is loaded and started by U-Boot SPL.
1576
1577           More details are available at https://github.com/riscv/opensbi and
1578           https://github.com/riscv/riscv-sbi-doc
1579
1580 config SPL_OPENSBI_LOAD_ADDR
1581         hex "OpenSBI load address"
1582         depends on SPL_OPENSBI
1583         help
1584           Load address of the OpenSBI binary.
1585
1586 config SPL_TARGET
1587         string "Addtional build targets for 'make'"
1588         default "spl/u-boot-spl.srec" if RCAR_GEN2
1589         default "spl/u-boot-spl.scif" if RCAR_GEN3
1590         default ""
1591         help
1592           On some platforms we need to have 'make' run additional build target
1593           rules. If required on your platform, enter it here, otherwise leave blank.
1594
1595 config TPL
1596         bool
1597         depends on SUPPORT_TPL
1598         prompt "Enable TPL"
1599         help
1600           If you want to build TPL as well as the normal image and SPL, say Y.
1601
1602 if TPL
1603
1604 config TPL_SIZE_LIMIT
1605         hex "Maximum size of TPL image"
1606         depends on TPL
1607         default 0x0
1608         help
1609           Specifies the maximum length of the U-Boot TPL image.
1610           If this value is zero, it is ignored.
1611
1612 config TPL_BINMAN_SYMBOLS
1613         bool "Declare binman symbols in TPL"
1614         depends on SPL_FRAMEWORK && BINMAN
1615         default y
1616         help
1617           This enables use of symbols in TPL which refer to U-Boot, enabling TPL
1618           to obtain the location of U-Boot simply by calling spl_get_image_pos()
1619           and spl_get_image_size().
1620
1621           For this to work, you must have a U-Boot image in the binman image, so
1622           binman can update TPL with the location of it.
1623
1624 config TPL_FRAMEWORK
1625         bool "Support TPL based upon the common SPL framework"
1626         default y if SPL_FRAMEWORK
1627         help
1628           Enable the SPL framework under common/spl/ for TPL builds.
1629           This framework supports MMC, NAND and YMODEM and other methods
1630           loading of U-Boot's SPL stage. If unsure, say Y.
1631
1632 config TPL_HANDOFF
1633         bool "Pass hand-off information from TPL to SPL and U-Boot proper"
1634         depends on HANDOFF && TPL_BLOBLIST
1635         default y
1636         help
1637           This option enables TPL to write handoff information. This can be
1638           used to pass information like the size of SDRAM from TPL to U-Boot
1639           proper. The information is also available to SPL if it is useful
1640           there.
1641
1642 config TPL_BOARD_INIT
1643         bool "Call board-specific initialization in TPL"
1644         help
1645           If this option is enabled, U-Boot will call the function
1646           spl_board_init() from board_init_r(). This function should be
1647           provided by the board.
1648
1649 config TPL_BOOTCOUNT_LIMIT
1650         bool "Support bootcount in TPL"
1651         depends on TPL_ENV_SUPPORT
1652         help
1653           If this option is enabled, the TPL will support bootcount.
1654           For example, it may be useful to choose the device to boot.
1655
1656 config TPL_LDSCRIPT
1657         string "Linker script for the TPL stage"
1658         depends on TPL
1659         default "arch/arm/cpu/armv8/u-boot-spl.lds" if ARM64
1660         default "arch/\$(ARCH)/cpu/u-boot-spl.lds"
1661         help
1662           The TPL stage will usually require a different linker-script
1663           (as it runs from a different memory region) than the regular
1664           U-Boot stage.  Set this to the path of the linker-script to
1665           be used for TPL.
1666
1667           May be left empty to trigger the Makefile infrastructure to
1668           fall back to the linker-script used for the SPL stage.
1669
1670 config TPL_NEEDS_SEPARATE_STACK
1671         bool "TPL needs a separate initial stack-pointer"
1672         depends on TPL
1673         help
1674           Enable, if the TPL stage should not inherit its initial
1675           stack-pointer from the settings for the SPL stage.
1676
1677 config TPL_POWER
1678         bool "Support power drivers"
1679         help
1680           Enable support for power control in TPL. This includes support
1681           for PMICs (Power-management Integrated Circuits) and some of the
1682           features provided by PMICs. In particular, voltage regulators can
1683           be used to enable/disable power and vary its voltage. That can be
1684           useful in TPL to turn on boot peripherals and adjust CPU voltage
1685           so that the clock speed can be increased. This enables the drivers
1686           in drivers/power, drivers/power/pmic and drivers/power/regulator
1687           as part of an TPL build.
1688
1689 config TPL_TEXT_BASE
1690         hex "Base address for the .text section of the TPL stage"
1691         default 0
1692         help
1693           The base address for the .text section of the TPL stage.
1694
1695 config TPL_MAX_SIZE
1696         hex "Maximum size (in bytes) for the TPL stage"
1697         default 0x2e000 if ROCKCHIP_RK3399
1698         default 0x8000 if ROCKCHIP_RK3288
1699         default 0x7000 if ROCKCHIP_RK322X || ROCKCHIP_RK3328 || ROCKCHIP_RK3368
1700         default 0x2800 if ROCKCHIP_PX30
1701         default 0x0
1702         help
1703           The maximum size (in bytes) of the TPL stage.
1704
1705 config TPL_PAD_TO
1706         hex "Offset to which the TPL should be padded before appending the TPL payload"
1707         depends on !TPL_FRAMEWORK && PPC
1708         default TPL_MAX_SIZE
1709         help
1710           Image offset to which the TPL should be padded before appending the
1711           TPL payload. By default, this is defined as CONFIG_TPL_MAX_SIZE, or 0 if
1712           CONFIG_TPL_MAX_SIZE is undefined.  CONFIG_TPL_PAD_TO must be either
1713           0, meaning to append the TPL payload without any padding, or >=
1714           CONFIG_TPL_MAX_SIZE.
1715
1716 config TPL_STACK
1717         hex "Address of the initial stack-pointer for the TPL stage"
1718         depends on TPL_NEEDS_SEPARATE_STACK
1719         help
1720           The address of the initial stack-pointer for the TPL stage.
1721           Usually this will be the (aligned) top-of-stack.
1722
1723 config TPL_READ_ONLY
1724         bool
1725         depends on TPL_OF_PLATDATA
1726         select TPL_OF_PLATDATA_NO_BIND
1727         select TPL_OF_PLATDATA_RT
1728         help
1729           Some platforms (e.g. x86 Apollo Lake) load SPL into a read-only
1730           section of memory. This means that of-platdata must make a copy (in
1731           writeable memory) of anything it wants to modify, such as
1732           device-private data.
1733
1734 config TPL_BOOTROM_SUPPORT
1735         bool "Support returning to the BOOTROM (from TPL)"
1736         help
1737           Some platforms (e.g. the Rockchip RK3368) provide support in their
1738           ROM for loading the next boot-stage after performing basic setup
1739           from the TPL stage.
1740
1741           Enable this option, to return to the BOOTROM through the
1742           BOOT_DEVICE_BOOTROM (or fall-through to the next boot device in the
1743           boot device list, if not implemented for a given board)
1744
1745 config TPL_CRC32
1746         bool "Support CRC32 in TPL"
1747         default y if TPL_ENV_SUPPORT || TPL_BLOBLIST
1748         help
1749           Enable this to support CRC32 in uImages or FIT images within SPL.
1750           This is a 32-bit checksum value that can be used to verify images.
1751           For FIT images, this is the least secure type of checksum, suitable
1752           for detected accidental image corruption. For secure applications you
1753           should consider SHA1 or SHA256.
1754
1755 config TPL_DRIVERS_MISC
1756         bool "Support misc drivers in TPL"
1757         help
1758           Enable miscellaneous drivers in TPL. These drivers perform various
1759           tasks that don't fall nicely into other categories, Enable this
1760           option to build the drivers in drivers/misc as part of an TPL
1761           build, for those that support building in TPL (not all drivers do).
1762
1763 config TPL_ENV_SUPPORT
1764         bool "Support an environment"
1765         help
1766           Enable environment support in TPL. See SPL_ENV_SUPPORT for details.
1767
1768 config TPL_GPIO
1769         bool "Support GPIO in TPL"
1770         help
1771           Enable support for GPIOs (General-purpose Input/Output) in TPL.
1772           GPIOs allow U-Boot to read the state of an input line (high or
1773           low) and set the state of an output line. This can be used to
1774           drive LEDs, control power to various system parts and read user
1775           input. GPIOs can be useful in TPL to enable a 'sign-of-life' LED,
1776           for example. Enable this option to build the drivers in
1777           drivers/gpio as part of an TPL build.
1778
1779 config TPL_I2C
1780         bool "Support I2C"
1781         help
1782           Enable support for the I2C bus in TPL. See SPL_I2C for
1783           details.
1784
1785 config TPL_LIBCOMMON_SUPPORT
1786         bool "Support common libraries"
1787         help
1788           Enable support for common U-Boot libraries within TPL. See
1789           SPL_LIBCOMMON_SUPPORT for details.
1790
1791 config TPL_LIBGENERIC_SUPPORT
1792         bool "Support generic libraries"
1793         help
1794           Enable support for generic U-Boot libraries within TPL. See
1795           SPL_LIBGENERIC_SUPPORT for details.
1796
1797 config TPL_MPC8XXX_INIT_DDR
1798         bool "Support MPC8XXX DDR init"
1799         help
1800           Enable support for DDR-SDRAM on the MPC8XXX family within TPL. See
1801           SPL_MPC8XXX_INIT_DDR for details.
1802
1803 config TPL_MMC
1804         bool "Support MMC"
1805         depends on MMC
1806         help
1807           Enable support for MMC within TPL. See SPL_MMC for details.
1808
1809 config TPL_NAND_SUPPORT
1810         bool "Support NAND flash"
1811         help
1812           Enable support for NAND in TPL. See SPL_NAND_SUPPORT for details.
1813
1814 config TPL_PCI
1815         bool "Support PCI drivers"
1816         help
1817           Enable support for PCI in TPL. For platforms that need PCI to boot,
1818           or must perform some init using PCI in SPL, this provides the
1819           necessary driver support. This enables the drivers in drivers/pci
1820           as part of a TPL build.
1821
1822 config TPL_PCH
1823         bool "Support PCH drivers"
1824         help
1825           Enable support for PCH (Platform Controller Hub) devices in TPL.
1826           These are used to set up GPIOs and the SPI peripheral early in
1827           boot. This enables the drivers in drivers/pch as part of a TPL
1828           build.
1829
1830 config TPL_RAM_SUPPORT
1831         bool "Support booting from RAM"
1832         help
1833           Enable booting of an image in RAM. The image can be preloaded or
1834           it can be loaded by TPL directly into RAM (e.g. using USB).
1835
1836 config TPL_RAM_DEVICE
1837         bool "Support booting from preloaded image in RAM"
1838         depends on TPL_RAM_SUPPORT
1839         help
1840           Enable booting of an image already loaded in RAM. The image has to
1841           be already in memory when TPL takes over, e.g. loaded by the boot
1842           ROM.
1843
1844 config TPL_RTC
1845         bool "Support RTC drivers"
1846         help
1847           Enable RTC (Real-time Clock) support in TPL. This includes support
1848           for reading and setting the time. Some RTC devices also have some
1849           non-volatile (battery-backed) memory which is accessible if
1850           needed. This enables the drivers in drivers/rtc as part of an TPL
1851           build.
1852
1853 config TPL_SERIAL
1854         bool "Support serial"
1855         select TPL_PRINTF
1856         select TPL_STRTO
1857         help
1858           Enable support for serial in TPL. See SPL_SERIAL for
1859           details.
1860
1861 config TPL_SPI_FLASH_SUPPORT
1862         bool "Support SPI flash drivers"
1863         help
1864           Enable support for using SPI flash in TPL. See SPL_SPI_FLASH_SUPPORT
1865           for details.
1866
1867 config TPL_SPI_FLASH_TINY
1868         bool "Enable low footprint TPL SPI Flash support"
1869         depends on TPL_SPI_FLASH_SUPPORT && !SPI_FLASH_BAR
1870         default y if SPI_FLASH
1871         help
1872          Enable lightweight TPL SPI Flash support that supports just reading
1873          data/images from flash. No support to write/erase flash. Enable
1874          this if you have TPL size limitations and don't need full-fledged
1875          SPI flash support.
1876
1877 config TPL_SPI_LOAD
1878         bool "Support loading from SPI flash"
1879         depends on TPL_SPI_FLASH_SUPPORT
1880         help
1881           Enable support for loading next stage, U-Boot or otherwise, from
1882           SPI NOR in U-Boot TPL.
1883
1884 config TPL_SPI
1885         bool "Support SPI drivers"
1886         help
1887           Enable support for using SPI in TPL. See SPL_SPI for
1888           details.
1889
1890 config TPL_DM_SPI
1891         bool "Support SPI DM drivers in TPL"
1892         help
1893           Enable support for SPI DM drivers in TPL.
1894
1895 config TPL_DM_SPI_FLASH
1896         bool "Support SPI DM FLASH drivers in TPL"
1897         help
1898           Enable support for SPI DM flash drivers in TPL.
1899
1900 config TPL_YMODEM_SUPPORT
1901         bool "Support loading using Ymodem"
1902         depends on TPL_SERIAL
1903         help
1904           While loading from serial is slow it can be a useful backup when
1905           there is no other option. The Ymodem protocol provides a reliable
1906           means of transmitting U-Boot over a serial line for using in TPL,
1907           with a checksum to ensure correctness.
1908
1909 endif # TPL
1910
1911 config VPL
1912         bool
1913         depends on SUPPORT_SPL
1914         prompt "Enable VPL"
1915         help
1916           If you want to build VPL as well as the normal image, TPL and SPL,
1917           say Y.
1918
1919 if VPL
1920
1921 config VPL_BANNER_PRINT
1922         bool "Enable output of the VPL banner 'U-Boot VPL ...'"
1923         depends on VPL
1924         default y
1925         help
1926           If this option is enabled, VPL will print the banner with version
1927           info. Disabling this option could be useful to reduce VPL boot time
1928           (e.g. approx. 6 ms faster, when output on i.MX6 with 115200 baud).
1929
1930 config VPL_BOARD_INIT
1931         bool "Call board-specific initialization in VPL"
1932         help
1933           If this option is enabled, U-Boot will call the function
1934           spl_board_init() from board_init_r(). This function should be
1935           provided by the board.
1936
1937 config VPL_CACHE
1938         depends on CACHE
1939         bool "Support cache drivers in VPL"
1940         help
1941           Enable support for cache drivers in VPL.
1942
1943 config VPL_CRC32
1944         bool "Support CRC32 in VPL"
1945         default y if VPL_ENV_SUPPORT || VPL_BLOBLIST
1946         help
1947           Enable this to support CRC32 in uImages or FIT images within VPL.
1948           This is a 32-bit checksum value that can be used to verify images.
1949           For FIT images, this is the least secure type of checksum, suitable
1950           for detected accidental image corruption. For secure applications you
1951           should consider SHA1 or SHA256.
1952
1953 config VPL_DM_SPI
1954         bool "Support SPI DM drivers in VPL"
1955         help
1956           Enable support for SPI DM drivers in VPL.
1957
1958 config VPL_DM_SPI_FLASH
1959         bool "Support SPI DM FLASH drivers in VPL"
1960         help
1961           Enable support for SPI DM flash drivers in VPL.
1962
1963 config VPL_FRAMEWORK
1964         bool "Support VPL based upon the common SPL framework"
1965         default y
1966         help
1967           Enable the SPL framework under common/spl/ for VPL builds.
1968           This framework supports MMC, NAND and YMODEM and other methods
1969           loading of U-Boot's next stage. If unsure, say Y.
1970
1971 config VPL_HANDOFF
1972         bool "Pass hand-off information from VPL to SPL"
1973         depends on HANDOFF && VPL_BLOBLIST
1974         default y
1975         help
1976           This option enables VPL to write handoff information. This can be
1977           used to pass information like the size of SDRAM from VPL to SPL. Also
1978           VPL can receive information from TPL in the same place if that is
1979           enabled.
1980
1981 config VPL_LIBCOMMON_SUPPORT
1982         bool "Support common libraries"
1983         default y if SPL_LIBCOMMON_SUPPORT
1984         help
1985           Enable support for common U-Boot libraries within VPL. See
1986           SPL_LIBCOMMON_SUPPORT for details.
1987
1988 config VPL_LIBGENERIC_SUPPORT
1989         bool "Support generic libraries"
1990         default y if SPL_LIBGENERIC_SUPPORT
1991         help
1992           Enable support for generic U-Boot libraries within VPL. These
1993           libraries include generic code to deal with device tree, hashing,
1994           printf(), compression and the like. This option is enabled on many
1995           boards. Enable this option to build the code in lib/ as part of a
1996           VPL build.
1997
1998 config VPL_DRIVERS_MISC
1999         bool "Support misc drivers"
2000         default y if TPL_DRIVERS_MISC
2001         help
2002           Enable miscellaneous drivers in VPL. These drivers perform various
2003           tasks that don't fall nicely into other categories, Enable this
2004           option to build the drivers in drivers/misc as part of a VPL
2005           build, for those that support building in VPL (not all drivers do).
2006
2007 config VPL_ENV_SUPPORT
2008         bool "Support an environment"
2009         help
2010           Enable environment support in VPL. The U-Boot environment provides
2011           a number of settings (essentially name/value pairs) which can
2012           control many aspects of U-Boot's operation. Enabling this option will
2013           make env_get() and env_set() available in VSPL.
2014
2015 config VPL_GPIO
2016         bool "Support GPIO in VPL"
2017         default y if SPL_GPIO
2018         help
2019           Enable support for GPIOs (General-purpose Input/Output) in VPL.
2020           GPIOs allow U-Boot to read the state of an input line (high or
2021           low) and set the state of an output line. This can be used to
2022           drive LEDs, control power to various system parts and read user
2023           input. GPIOs can be useful in VPL to enable a 'sign-of-life' LED,
2024           for example. Enable this option to build the drivers in
2025           drivers/gpio as part of a VPL build.
2026
2027 config VPL_HANDOFF
2028         bool "Pass hand-off information from VPL to SPL and U-Boot proper"
2029         depends on HANDOFF && VPL_BLOBLIST
2030         default y
2031         help
2032           This option enables VPL to write handoff information. This can be
2033           used to pass information like the size of SDRAM from VPL to U-Boot
2034           proper. The information is also available to VPL if it is useful
2035           there.
2036
2037 config VPL_HASH
2038         bool "Support hashing drivers in VPL"
2039         depends on VPL
2040         select SHA1
2041         select SHA256
2042         help
2043           Enable hashing drivers in VPL. These drivers can be used to
2044           accelerate secure boot processing in secure applications. Enable
2045           this option to build system-specific drivers for hash acceleration
2046           as part of a VPL build.
2047
2048 config VPL_I2C_SUPPORT
2049         bool "Support I2C in VPL"
2050         default y if SPL_I2C_SUPPORT
2051         help
2052           Enable support for the I2C bus in VPL. Vee SPL_I2C_SUPPORT for
2053           details.
2054
2055 config VPL_PCH_SUPPORT
2056         bool "Support PCH drivers"
2057         default y if TPL_PCH_SUPPORT
2058         help
2059           Enable support for PCH (Platform Controller Hub) devices in VPL.
2060           These are used to set up GPIOs and the SPI peripheral early in
2061           boot. This enables the drivers in drivers/pch as part of a VPL
2062           build.
2063
2064 config VPL_PCI
2065         bool "Support PCI drivers"
2066         default y if SPL_PCI
2067         help
2068           Enable support for PCI in VPL. For platforms that need PCI to boot,
2069           or must perform some init using PCI in VPL, this provides the
2070           necessary driver support. This enables the drivers in drivers/pci
2071           as part of a VPL build.
2072
2073 config VPL_RTC
2074         bool "Support RTC drivers"
2075         help
2076           Enable RTC (Real-time Clock) support in VPL. This includes support
2077           for reading and setting the time. Some RTC devices also have some
2078           non-volatile (battery-backed) memory which is accessible if
2079           needed. This enables the drivers in drivers/rtc as part of a VPL
2080           build.
2081
2082 config VPL_SERIAL
2083         bool "Support serial"
2084         default y if TPL_SERIAL
2085         select VPL_PRINTF
2086         select VPL_STRTO
2087         help
2088           Enable support for serial in VPL. See SPL_SERIAL_SUPPORT for
2089           details.
2090
2091 config VPL_SIZE_LIMIT
2092         hex "Maximum size of VPL image"
2093         depends on VPL
2094         default 0x0
2095         help
2096           Specifies the maximum length of the U-Boot VPL image.
2097           If this value is zero, it is ignored.
2098
2099 config VPL_SPI
2100         bool "Support SPI drivers"
2101         help
2102           Enable support for using SPI in VPL. See SPL_SPI_SUPPORT for
2103           details.
2104
2105 config VPL_SPI_FLASH_SUPPORT
2106         bool "Support SPI flash drivers"
2107         help
2108           Enable support for using SPI flash in VPL, and loading U-Boot from
2109           SPI flash. SPI flash (Serial Peripheral Bus flash) is named after
2110           the SPI bus that is used to connect it to a system. It is a simple
2111           but fast bidirectional 4-wire bus (clock, chip select and two data
2112           lines). This enables the drivers in drivers/mtd/spi as part of a
2113           VPL build. This normally requires VPL_SPI_SUPPORT.
2114
2115 config VPL_TEXT_BASE
2116         hex "VPL Text Base"
2117         default 0x0
2118         help
2119           The address in memory that VPL will be running from.
2120
2121 endif # VPL
2122
2123 config SPL_AT91_MCK_BYPASS
2124         bool "Use external clock signal as a source of main clock for AT91 platforms"
2125         depends on ARCH_AT91
2126         help
2127           Use external 8 to 24 Mhz clock signal as source of main clock instead
2128           of an external crystal oscillator.
2129           This option disables the internal driving on the XOUT pin.
2130           The external source has to provide a stable clock on the XIN pin.
2131           If this option is disabled, the SoC expects a crystal oscillator
2132           that needs driving on both XIN and XOUT lines.
2133
2134 endif # SPL
2135 endmenu
This page took 0.153849 seconds and 4 git commands to generate.