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