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