xref: /rk3399_rockchip-uboot/common/spl/Kconfig (revision e65bf00a8cc4457af9d351e0129b24292fd5b7ff)
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
19if SPL
20
21config SPL_ADC_SUPPORT
22	bool "Support ADC driver in SPL"
23	depends on SPL
24	help
25	  The adc drive can be used to measure voltage in spl if need.
26
27config SPL_LDSCRIPT
28	string "Linker script for the SPL stage"
29	default "arch/$(ARCH)/cpu/u-boot-spl.lds"
30	depends on SPL
31	help
32	  The SPL stage will usually require a different linker-script
33	  (as it runs from a different memory region) than the regular
34	  U-Boot stage.	 Set this to the path of the linker-script to
35	  be used for SPL.
36
37config SPL_BOARD_INIT
38	bool "Call board-specific initialization in SPL"
39	help
40	  If this option is enabled, U-Boot will call the function
41	  spl_board_init() from board_init_r(). This function should be
42	  provided by the board.
43
44config SPL_BOOTROM_SUPPORT
45        bool "Support returning to the BOOTROM"
46	help
47	  Some platforms (e.g. the Rockchip RK3368) provide support in their
48	  ROM for loading the next boot-stage after performing basic setup
49	  from the SPL stage.
50
51	  Enable this option, to return to the BOOTROM through the
52	  BOOT_DEVICE_BOOTROM (or fall-through to the next boot device in the
53	  boot device list, if not implemented for a given board)
54
55config SPL_RAW_IMAGE_SUPPORT
56	bool "Support SPL loading and booting of RAW images"
57	default n if (ARCH_MX6 && (SPL_MMC_SUPPORT || SPL_SATA_SUPPORT))
58	default y if !TI_SECURE_DEVICE
59	help
60	  SPL will support loading and booting a RAW image when this option
61	  is y. If this is not set, SPL will move on to other available
62	  boot media to find a suitable image.
63
64config SPL_LEGACY_IMAGE_SUPPORT
65	bool "Support SPL loading and booting of Legacy images"
66	default y if !TI_SECURE_DEVICE
67	help
68	  SPL will support loading and booting Legacy images when this option
69	  is y. If this is not set, SPL will move on to other available
70	  boot media to find a suitable image.
71
72config SPL_SYS_MALLOC_SIMPLE
73	bool
74	prompt "Only use malloc_simple functions in the SPL"
75	help
76	  Say Y here to only use the *_simple malloc functions from
77	  malloc_simple.c, rather then using the versions from dlmalloc.c;
78	  this will make the SPL binary smaller at the cost of more heap
79	  usage as the *_simple malloc functions do not re-use free-ed mem.
80
81config TPL_SYS_MALLOC_SIMPLE
82	bool
83	prompt "Only use malloc_simple functions in the TPL"
84	help
85	  Say Y here to only use the *_simple malloc functions from
86	  malloc_simple.c, rather then using the versions from dlmalloc.c;
87	  this will make the TPL binary smaller at the cost of more heap
88	  usage as the *_simple malloc functions do not re-use free-ed mem.
89
90config SPL_STACK_R
91	bool "Enable SDRAM location for SPL stack"
92	help
93	  SPL starts off execution in SRAM and thus typically has only a small
94	  stack available. Since SPL sets up DRAM while in its board_init_f()
95	  function, it is possible for the stack to move there before
96	  board_init_r() is reached. This option enables a special SDRAM
97	  location for the SPL stack. U-Boot SPL switches to this after
98	  board_init_f() completes, and before board_init_r() starts.
99
100config SPL_STACK_R_ADDR
101	depends on SPL_STACK_R
102	hex "SDRAM location for SPL stack"
103	help
104	  Specify the address in SDRAM for the SPL stack. This will be set up
105	  before board_init_r() is called.
106
107config SPL_STACK_R_MALLOC_SIMPLE_LEN
108	depends on SPL_STACK_R && SPL_SYS_MALLOC_SIMPLE
109	hex "Size of malloc_simple heap after switching to DRAM SPL stack"
110	default 0x100000
111	help
112	  Specify the amount of the stack to use as memory pool for
113	  malloc_simple after switching the stack to DRAM. This may be set
114	  to give board_init_r() a larger heap then the initial heap in
115	  SRAM which is limited to SYS_MALLOC_F_LEN bytes.
116
117config SPL_SEPARATE_BSS
118	bool "BSS section is in a different memory region from text"
119	help
120	  Some platforms need a large BSS region in SPL and can provide this
121	  because RAM is already set up. In this case BSS can be moved to RAM.
122	  This option should then be enabled so that the correct device tree
123	  location is used. Normally we put the device tree at the end of BSS
124	  but with this option enabled, it goes at _image_binary_end.
125
126config SPL_DISPLAY_PRINT
127	bool "Display a board-specific message in SPL"
128	help
129	  If this option is enabled, U-Boot will call the function
130	  spl_display_print() immediately after displaying the SPL console
131	  banner ("U-Boot SPL ..."). This function should be provided by
132	  the board.
133
134config SPL_SKIP_RELOCATE
135	bool "Skip code relocation in SPL"
136	default y
137	help
138	  The SPL code will be relocated to a high memory if you say no here.
139	  Only ARM64 and PowerPC SPL support relocate now.
140
141config SPL_RELOC_TEXT_BASE
142	hex "Address the SPL relocate to"
143	depends on !SPL_SKIP_RELOCATE
144	help
145	  The address on the ram where the SPL relocate to.
146
147config SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
148	bool "MMC raw mode: by sector"
149	default y if ARCH_SUNXI || ARCH_DAVINCI || ARCH_UNIPHIER ||ARCH_MX6 || \
150		     ARCH_ROCKCHIP || ARCH_MVEBU ||  ARCH_SOCFPGA || \
151		     ARCH_AT91 || ARCH_ZYNQ || ARCH_KEYSTONE || OMAP34XX || \
152		     OMAP44XX || OMAP54XX || AM33XX || AM43XX
153	help
154	  Use sector number for specifying U-Boot location on MMC/SD in
155	  raw mode.
156
157config SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR
158	hex "Address on the MMC to load U-Boot from"
159	depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
160	default 0x50 if ARCH_SUNXI
161	default 0x75 if ARCH_DAVINCI
162	default 0x8a if ARCH_MX6
163	default 0x100 if ARCH_UNIPHIER
164	default 0x140 if ARCH_MVEBU
165	default 0x200 if ARCH_SOCFPGA || ARCH_AT91
166	default 0x300 if ARCH_ZYNQ || ARCH_KEYSTONE || OMAP34XX || OMAP44XX || \
167		         OMAP54XX || AM33XX || AM43XX
168	default 0x4000 if ARCH_ROCKCHIP
169	help
170	  Address on the MMC to load U-Boot from, when the MMC is being used
171	  in raw mode. Units: MMC sectors (1 sector = 512 bytes).
172
173config SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
174	bool "MMC Raw mode: by partition"
175	help
176	  Use a partition for loading U-Boot when using MMC/SD in raw mode.
177
178config SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION
179	hex "Partition to use to load U-Boot from"
180	depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
181	default 1
182	help
183	  Partition on the MMC to load U-Boot from when the MMC is being
184	  used in raw mode
185
186config SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
187	bool "MMC raw mode: by partition type"
188	depends on DOS_PARTITION && SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
189	help
190	  Use partition type for specifying U-Boot partition on MMC/SD in
191	  raw mode. U-Boot will be loaded from the first partition of this
192	  type to be found.
193
194config SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION_TYPE
195	hex "Partition Type on the MMC to load U-Boot from"
196	depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
197	help
198	  Partition Type on the MMC to load U-Boot from, when the MMC is being
199	  used in raw mode.
200
201config SPL_CRC32_SUPPORT
202	bool "Support CRC32"
203	depends on SPL_FIT
204	help
205	  Enable this to support CRC32 in FIT images within SPL. This is a
206	  32-bit checksum value that can be used to verify images. This is
207	  the least secure type of checksum, suitable for detected
208	  accidental image corruption. For secure applications you should
209	  consider SHA1 or SHA256.
210
211config SPL_MD5_SUPPORT
212	bool "Support MD5"
213	depends on SPL_FIT
214	help
215	  Enable this to support MD5 in FIT images within SPL. An MD5
216	  checksum is a 128-bit hash value used to check that the image
217	  contents have not been corrupted. Note that MD5 is not considered
218	  secure as it is possible (with a brute-force attack) to adjust the
219	  image while still retaining the same MD5 hash value. For secure
220	  applications where images may be changed maliciously, you should
221	  consider SHA1 or SHA256.
222
223config SPL_SHA1_SUPPORT
224	bool "Support SHA1"
225	depends on SPL_FIT
226	select SHA1
227	help
228	  Enable this to support SHA1 in FIT images within SPL. A SHA1
229	  checksum is a 160-bit (20-byte) hash value used to check that the
230	  image contents have not been corrupted or maliciously altered.
231	  While SHA1 is fairly secure it is coming to the end of its life
232	  due to the expanding computing power avaiable to brute-force
233	  attacks. For more security, consider SHA256.
234
235config SPL_SHA256_SUPPORT
236	bool "Support SHA256"
237	depends on SPL_FIT
238	select SHA256
239	help
240	  Enable this to support SHA256 in FIT images within SPL. A SHA256
241	  checksum is a 256-bit (32-byte) hash value used to check that the
242	  image contents have not been corrupted. SHA256 is recommended for
243	  use in secure applications since (as at 2016) there is no known
244	  feasible attack that could produce a 'collision' with differing
245	  input data. Use this for the highest security. Note that only the
246	  SHA256 variant is supported: SHA512 and others are not currently
247	  supported in U-Boot.
248
249config SPL_FIT_IMAGE_TINY
250	bool "Remove functionality from SPL FIT loading to reduce size"
251	depends on SPL_FIT
252	default y if MACH_SUN50I || MACH_SUN50I_H5
253	default y if ARCH_OMAP2PLUS
254	help
255	  Enable this to reduce the size of the FIT image loading code
256	  in SPL, if space for the SPL binary is very tight.
257
258	  This removes the detection of image types (which forces the
259	  first image to be treated as having a U-Boot style calling
260	  convention) and skips the recording of each loaded payload
261	  (i.e. loadable) into the FDT (modifying the loaded FDT to
262	  ensure this information is available to the next image
263	  invoked).
264
265config SPL_CPU_SUPPORT
266	bool "Support CPU drivers"
267	help
268	  Enable this to support CPU drivers in SPL. These drivers can set
269	  up CPUs and provide information about them such as the model and
270	  name. This can be useful in SPL since setting up the CPUs earlier
271	  may improve boot performance. Enable this option to build the
272	  drivers in drivers/cpu as part of an SPL build.
273
274config SPL_CRYPTO_SUPPORT
275	bool "Support crypto drivers"
276	help
277	  Enable crypto drivers in SPL. These drivers can be used to
278	  accelerate secure boot processing in secure applications. Enable
279	  this option to build the drivers in drivers/crypto as part of an
280	  SPL build.
281
282config SPL_HASH_SUPPORT
283	bool "Support hashing drivers"
284	select SHA1
285	select SHA256
286	help
287	  Enable hashing drivers in SPL. These drivers can be used to
288	  accelerate secure boot processing in secure applications. Enable
289	  this option to build system-specific drivers for hash acceleration
290	  as part of an SPL build.
291
292config SPL_DMA_SUPPORT
293	bool "Support DMA drivers"
294	help
295	  Enable DMA (direct-memory-access) drivers in SPL. These drivers
296	  can be used to handle memory-to-peripheral data transfer without
297	  the CPU moving the data. Enable this option to build the drivers
298	  in drivers/dma as part of an SPL build.
299
300config SPL_DRIVERS_MISC_SUPPORT
301	bool "Support misc drivers"
302	help
303	  Enable miscellaneous drivers in SPL. These drivers perform various
304	  tasks that don't fall nicely into other categories, Enable this
305	  option to build the drivers in drivers/misc as part of an SPL
306	  build, for those that support building in SPL (not all drivers do).
307
308config SPL_ENV_SUPPORT
309	bool "Support an environment"
310	help
311	  Enable environment support in SPL. The U-Boot environment provides
312	  a number of settings (essentially name/value pairs) which can
313	  control many aspects of U-Boot's operation. Normally this is not
314	  needed in SPL as it has a much simpler task with less
315	  configuration. But some boards use this to support 'Falcon' boot
316	  on EXT2 and FAT, where SPL boots directly into Linux without
317	  starting U-Boot first. Enabling this option will make env_get()
318	  and env_set() available in SPL.
319
320config SPL_SAVEENV
321	bool "Support save environment"
322	depends on SPL_ENV_SUPPORT
323	help
324	  Enable save environment support in SPL after setenv. By default
325	  the saveenv option is not provided in SPL, but some boards need
326	  this support in 'Falcon' boot, where SPL need to boot from
327	  different images based on environment variable set by OS. For
328	  example OS may set "reboot_image" environment variable to
329	  "recovery" inorder to boot recovery image by SPL. The SPL read
330	  "reboot_image" and act accordingly and change the reboot_image
331	  to default mode using setenv and save the environemnt.
332
333config SPL_ETH_SUPPORT
334	bool "Support Ethernet"
335	depends on SPL_ENV_SUPPORT
336	help
337	  Enable access to the network subsystem and associated Ethernet
338	  drivers in SPL. This permits SPL to load U-Boot over an Ethernet
339	  link rather than from an on-board peripheral. Environment support
340	  is required since the network stack uses a number of environment
341	  variables. See also SPL_NET_SUPPORT.
342
343config SPL_EXT_SUPPORT
344	bool "Support EXT filesystems"
345	help
346	  Enable support for EXT2/3/4 filesystems with SPL. This permits
347	  U-Boot (or Linux in Falcon mode) to be loaded from an EXT
348	  filesystem from within SPL. Support for the underlying block
349	  device (e.g. MMC or USB) must be enabled separately.
350
351config SPL_FAT_SUPPORT
352	bool "Support FAT filesystems"
353	select FS_FAT
354	help
355	  Enable support for FAT and VFAT filesystems with SPL. This
356	  permits U-Boot (or Linux in Falcon mode) to be loaded from a FAT
357	  filesystem from within SPL. Support for the underlying block
358	  device (e.g. MMC or USB) must be enabled separately.
359
360config SPL_FPGA_SUPPORT
361	bool "Support FPGAs"
362	help
363	  Enable support for FPGAs in SPL. Field-programmable Gate Arrays
364	  provide software-configurable hardware which is typically used to
365	  implement peripherals (such as UARTs, LCD displays, MMC) or
366	  accelerate custom processing functions, such as image processing
367	  or machine learning. Sometimes it is useful to program the FPGA
368	  as early as possible during boot, and this option can enable that
369	  within SPL.
370
371config SPL_GPIO_SUPPORT
372	bool "Support GPIO"
373	help
374	  Enable support for GPIOs (General-purpose Input/Output) in SPL.
375	  GPIOs allow U-Boot to read the state of an input line (high or
376	  low) and set the state of an output line. This can be used to
377	  drive LEDs, control power to various system parts and read user
378	  input. GPIOs can be useful in SPL to enable a 'sign-of-life' LED,
379	  for example. Enable this option to build the drivers in
380	  drivers/gpio as part of an SPL build.
381
382config SPL_I2C_SUPPORT
383	bool "Support I2C"
384	help
385	  Enable support for the I2C (Inter-Integrated Circuit) bus in SPL.
386	  I2C works with a clock and data line which can be driven by a
387	  one or more masters or slaves. It is a fairly complex bus but is
388	  widely used as it only needs two lines for communication. Speeds of
389	  400kbps are typical but up to 3.4Mbps is supported by some
390	  hardware. I2C can be useful in SPL to configure power management
391	  ICs (PMICs) before raising the CPU clock speed, for example.
392	  Enable this option to build the drivers in drivers/i2c as part of
393	  an SPL build.
394
395config SPL_LIBCOMMON_SUPPORT
396	bool "Support common libraries"
397	help
398	  Enable support for common U-Boot libraries within SPL. These
399	  libraries include common code to deal with U-Boot images,
400	  environment and USB, for example. This option is enabled on many
401	  boards. Enable this option to build the code in common/ as part of
402	  an SPL build.
403
404config SPL_LIBDISK_SUPPORT
405	bool "Support disk paritions"
406	help
407	  Enable support for disk partitions within SPL. 'Disk' is something
408	  of a misnomer as it includes non-spinning media such as flash (as
409	  used in MMC and USB sticks). Partitions provide a way for a disk
410	  to be split up into separate regions, with a partition table placed
411	  at the start or end which describes the location and size of each
412	  'partition'. These partitions are typically uses as individual block
413	  devices, typically with an EXT2 or FAT filesystem in each. This
414	  option enables whatever partition support has been enabled in
415	  U-Boot to also be used in SPL. It brings in the code in disk/.
416
417config SPL_LIBGENERIC_SUPPORT
418	bool "Support generic libraries"
419	help
420	  Enable support for generic U-Boot libraries within SPL. These
421	  libraries include generic code to deal with device tree, hashing,
422	  printf(), compression and the like. This option is enabled on many
423	  boards. Enable this option to build the code in lib/ as part of an
424	  SPL build.
425
426config SPL_MMC_SUPPORT
427	bool "Support MMC"
428	depends on MMC
429	help
430	  Enable support for MMC (Multimedia Card) within SPL. This enables
431	  the MMC protocol implementation and allows any enabled drivers to
432	  be used within SPL. MMC can be used with or without disk partition
433	  support depending on the application (SPL_LIBDISK_SUPPORT). Enable
434	  this option to build the drivers in drivers/mmc as part of an SPL
435	  build.
436
437config SPL_MPC8XXX_INIT_DDR_SUPPORT
438	bool "Support MPC8XXX DDR init"
439	help
440	  Enable support for DDR-SDRAM (double-data-rate synchronous dynamic
441	  random-access memory) on the MPC8XXX family within SPL. This
442	  allows DRAM to be set up before loading U-Boot into that DRAM,
443	  where it can run.
444
445config SPL_MTD_SUPPORT
446	bool "Support MTD drivers"
447	help
448	  Enable support for MTD (Memory Technology Device) within SPL. MTD
449	  provides a block interface over raw NAND and can also be used with
450	  SPI flash. This allows SPL to load U-Boot from supported MTD
451	  devices. See SPL_NAND_SUPPORT and SPL_ONENAND_SUPPORT for how
452	  to enable specific MTD drivers.
453
454config SPL_MUSB_NEW_SUPPORT
455	bool "Support new Mentor Graphics USB"
456	help
457	  Enable support for Mentor Graphics USB in SPL. This is a new
458	  driver used by some boards. Enable this option to build
459	  the drivers in drivers/usb/musb-new as part of an SPL build. The
460	  old drivers are in drivers/usb/musb.
461
462config SPL_NAND_SUPPORT
463	bool "Support NAND flash"
464	help
465	  Enable support for NAND (Negative AND) flash in SPL. NAND flash
466	  can be used to allow SPL to load U-Boot from supported devices.
467	  This enables the drivers in drivers/mtd/nand/raw as part of an SPL
468	  build.
469
470config SPL_NET_SUPPORT
471	bool "Support networking"
472	help
473	  Enable support for network devices (such as Ethernet) in SPL.
474	  This permits SPL to load U-Boot over a network link rather than
475	  from an on-board peripheral. Environment support is required since
476	  the network stack uses a number of environment variables. See also
477	  SPL_ETH_SUPPORT.
478
479if SPL_NET_SUPPORT
480config SPL_NET_VCI_STRING
481	string "BOOTP Vendor Class Identifier string sent by SPL"
482	help
483	  As defined by RFC 2132 the vendor class identifier field can be
484	  sent by the client to identify the vendor type and configuration
485	  of a client.  This is often used in practice to allow for the DHCP
486	  server to specify different files to load depending on if the ROM,
487	  SPL or U-Boot itself makes the request
488endif   # if SPL_NET_SUPPORT
489
490config SPL_NO_CPU_SUPPORT
491	bool "Drop CPU code in SPL"
492	help
493	  This is specific to the ARM926EJ-S CPU. It disables the standard
494	  start.S start-up code, presumably so that a replacement can be
495	  used on that CPU. You should not enable it unless you know what
496	  you are doing.
497
498config SPL_NOR_SUPPORT
499	bool "Support NOR flash"
500	help
501	  Enable support for loading U-Boot from memory-mapped NOR (Negative
502	  OR) flash in SPL. NOR flash is slow to write but fast to read, and
503	  a memory-mapped device makes it very easy to access. Loading from
504	  NOR is typically achieved with just a memcpy().
505
506config SPL_XIP_SUPPORT
507	bool "Support XIP"
508	depends on SPL
509	help
510	  Enable support for execute in place of U-Boot or kernel image. There
511	  is no need to copy image from flash to ram if flash supports execute
512	  in place. Its very useful in systems having enough flash but not
513	  enough ram to load the image.
514
515config SPL_ONENAND_SUPPORT
516	bool "Support OneNAND flash"
517	help
518	  Enable support for OneNAND (Negative AND) flash in SPL. OneNAND is
519	  a type of NAND flash and therefore can be used to allow SPL to
520	  load U-Boot from supported devices. This enables the drivers in
521	  drivers/mtd/onenand as part of an SPL build.
522
523config SPL_OS_BOOT
524	bool "Activate Falcon Mode"
525	depends on !TI_SECURE_DEVICE
526	default n
527	help
528	  Enable booting directly to an OS from SPL.
529	  for more info read doc/README.falcon
530
531if SPL_OS_BOOT
532config SYS_OS_BASE
533	hex "addr, where OS is found"
534	depends on SPL_NOR_SUPPORT
535	help
536	  Specify the address, where the OS image is found, which
537	  gets booted.
538
539endif # SPL_OS_BOOT
540
541config SPL_PCI_SUPPORT
542	bool "Support PCI drivers"
543	help
544	  Enable support for PCI in SPL. For platforms that need PCI to boot,
545	  or must perform some init using PCI in SPL, this provides the
546	  necessary driver support. This enables the drivers in drivers/pci
547	  as part of an SPL build.
548
549config SPL_PCH_SUPPORT
550	bool "Support PCH drivers"
551	help
552	  Enable support for PCH (Platform Controller Hub) devices in SPL.
553	  These are used to set up GPIOs and the SPI peripheral early in
554	  boot. This enables the drivers in drivers/pch as part of an SPL
555	  build.
556
557config SPL_POST_MEM_SUPPORT
558	bool "Support POST drivers"
559	help
560	  Enable support for POST (Power-on Self Test) in SPL. POST is a
561	  procedure that checks that the hardware (CPU or board) appears to
562	  be functionally correctly. It is a sanity check that can be
563	  performed before booting. This enables the drivers in post/drivers
564	  as part of an SPL build.
565
566config SPL_POWER_SUPPORT
567	bool "Support power drivers"
568	help
569	  Enable support for power control in SPL. This includes support
570	  for PMICs (Power-management Integrated Circuits) and some of the
571	  features provided by PMICs. In particular, voltage regulators can
572	  be used to enable/disable power and vary its voltage. That can be
573	  useful in SPL to turn on boot peripherals and adjust CPU voltage
574	  so that the clock speed can be increased. This enables the drivers
575	  in drivers/power, drivers/power/pmic and drivers/power/regulator
576	  as part of an SPL build.
577
578config SPL_PWM_SUPPORT
579	bool "Support PWM driver"
580	depends on SPL
581	help
582	  Enable support for pwm in SPL. This allows use pwm to control
583	  somethings, for example control voltage.
584
585config SPL_RAM_SUPPORT
586	bool "Support booting from RAM"
587	default y if MICROBLAZE || ARCH_SOCFPGA || TEGRA || ARCH_ZYNQ
588	help
589	  Enable booting of an image in RAM. The image can be preloaded or
590	  it can be loaded by SPL directly into RAM (e.g. using USB).
591
592config SPL_RAM_DEVICE
593	bool "Support booting from preloaded image in RAM"
594	depends on SPL_RAM_SUPPORT
595	default y if MICROBLAZE || ARCH_SOCFPGA || TEGRA || ARCH_ZYNQ
596	help
597	  Enable booting of an image already loaded in RAM. The image has to
598	  be already in memory when SPL takes over, e.g. loaded by the boot
599	  ROM.
600
601config SPL_RTC_SUPPORT
602	bool "Support RTC drivers"
603	help
604	  Enable RTC (Real-time Clock) support in SPL. This includes support
605	  for reading and setting the time. Some RTC devices also have some
606	  non-volatile (battery-backed) memory which is accessible if
607	  needed. This enables the drivers in drivers/rtc as part of an SPL
608	  build.
609
610config SPL_SATA_SUPPORT
611	bool "Support loading from SATA"
612	help
613	  Enable support for SATA (Serial AT attachment) in SPL. This allows
614	  use of SATA devices such as hard drives and flash drivers for
615	  loading U-Boot. SATA is used in higher-end embedded systems and
616	  can provide higher performance than MMC , at somewhat higher
617	  expense and power consumption. This enables loading from SATA
618	  using a configured device.
619
620config SPL_SERIAL_SUPPORT
621	bool "Support serial"
622	help
623	  Enable support for serial in SPL. This allows use of a serial UART
624	  for displaying messages while SPL is running. It also brings in
625	  printf() and panic() functions. This should normally be enabled
626	  unless there are space reasons not to. Even then, consider
627	  enabling USE_TINY_PRINTF which is a small printf() version.
628
629config SPL_SPI_FLASH_SUPPORT
630	bool "Support SPI flash drivers"
631	help
632	  Enable support for using SPI flash in SPL, and loading U-Boot from
633	  SPI flash. SPI flash (Serial Peripheral Bus flash) is named after
634	  the SPI bus that is used to connect it to a system. It is a simple
635	  but fast bidirectional 4-wire bus (clock, chip select and two data
636	  lines). This enables the drivers in drivers/mtd/spi as part of an
637	  SPL build. This normally requires SPL_SPI_SUPPORT.
638
639if SPL_SPI_FLASH_SUPPORT
640
641config SPL_SPI_FLASH_TINY
642	bool "Enable low footprint SPL SPI Flash support"
643	depends on !SPI_FLASH_BAR
644	help
645	 Enable lightweight SPL SPI Flash support that supports just reading
646	 data/images from flash. No support to write/erase flash. Enable
647	 this if you have SPL size limitations and don't need full
648	 fledged SPI flash support.
649
650config SPL_SPI_FLASH_SFDP_SUPPORT
651	bool "SFDP table parsing support for SPI NOR flashes"
652	depends on !SPI_FLASH_BAR && !SPL_SPI_FLASH_TINY
653	help
654	 Enable support for parsing and auto discovery of parameters for
655	 SPI NOR flashes using Serial Flash Discoverable Parameters (SFDP)
656	 tables as per JESD216 standard in SPL.
657
658config SPL_SPI_LOAD
659	bool "Support loading from SPI flash"
660	help
661	  Enable support for loading next stage, U-Boot or otherwise, from
662	  SPI NOR in U-Boot SPL.
663
664endif # SPL_SPI_FLASH_SUPPORT
665
666config SPL_SPI_SUPPORT
667	bool "Support SPI drivers"
668	help
669	  Enable support for using SPI in SPL. This is used for connecting
670	  to SPI flash for loading U-Boot. See SPL_SPI_FLASH_SUPPORT for
671	  more details on that. The SPI driver provides the transport for
672	  data between the SPI flash and the CPU. This option can be used to
673	  enable SPI drivers that are needed for other purposes also, such
674	  as a SPI PMIC.
675
676config SPL_USB_HOST_SUPPORT
677	bool "Support USB host drivers"
678	help
679	  Enable access to USB (Universal Serial Bus) host devices so that
680	  SPL can load U-Boot from a connected USB peripheral, such as a USB
681	  flash stick. While USB takes a little longer to start up than most
682	  buses, it is very flexible since many different types of storage
683	  device can be attached. This option enables the drivers in
684	  drivers/usb/host as part of an SPL build.
685
686config SPL_USB_SUPPORT
687	bool "Support loading from USB"
688	depends on SPL_USB_HOST_SUPPORT
689	help
690	  Enable support for USB devices in SPL. This allows use of USB
691	  devices such as hard drives and flash drivers for loading U-Boot.
692	  The actual drivers are enabled separately using the normal U-Boot
693	  config options. This enables loading from USB using a configured
694	  device.
695
696config SPL_USB_GADGET
697	bool "Suppport USB Gadget drivers"
698	help
699	  Enable USB Gadget API which allows to enable USB device functions
700	  in SPL.
701
702if SPL_USB_GADGET
703
704config SPL_USBETH_SUPPORT
705	bool "Support USB Ethernet drivers"
706	help
707	  Enable access to the USB network subsystem and associated
708	  drivers in SPL. This permits SPL to load U-Boot over a
709	  USB-connected Ethernet link (such as a USB Ethernet dongle) rather
710	  than from an onboard peripheral. Environment support is required
711	  since the network stack uses a number of environment variables.
712	  See also SPL_NET_SUPPORT and SPL_ETH_SUPPORT.
713
714config SPL_DFU
715	bool "Support DFU (Device Firmware Upgrade)"
716	select SPL_HASH_SUPPORT
717	select SPL_DFU_NO_RESET
718	depends on SPL_RAM_SUPPORT
719	help
720	  This feature enables the DFU (Device Firmware Upgarde) in SPL with
721	  RAM memory device support. The ROM code will load and execute
722	  the SPL built with dfu. The user can load binaries (u-boot/kernel) to
723	  selected device partition from host-pc using dfu-utils.
724	  This feature is useful to flash the binaries to factory or bare-metal
725	  boards using USB interface.
726
727choice
728	bool "DFU device selection"
729	depends on SPL_DFU
730
731config SPL_DFU_RAM
732	bool "RAM device"
733	depends on SPL_DFU && SPL_RAM_SUPPORT
734	help
735	 select RAM/DDR memory device for loading binary images
736	 (u-boot/kernel) to the selected device partition using
737	 DFU and execute the u-boot/kernel from RAM.
738
739endchoice
740
741config SPL_USB_SDP_SUPPORT
742	bool "Support SDP (Serial Download Protocol)"
743	help
744	  Enable Serial Download Protocol (SDP) device support in SPL. This
745	  allows to download images into memory and execute (jump to) them
746	  using the same protocol as implemented by the i.MX family's boot ROM.
747endif
748
749config SPL_WATCHDOG_SUPPORT
750	bool "Support watchdog drivers"
751	help
752	  Enable support for watchdog drivers in SPL. A watchdog is
753	  typically a hardware peripheral which can reset the system when it
754	  detects no activity for a while (such as a software crash). This
755	  enables the drivers in drivers/watchdog as part of an SPL build.
756
757config SPL_YMODEM_SUPPORT
758	bool "Support loading using Ymodem"
759	help
760	  While loading from serial is slow it can be a useful backup when
761	  there is no other option. The Ymodem protocol provides a reliable
762	  means of transmitting U-Boot over a serial line for using in SPL,
763	  with a checksum to ensure correctness.
764
765config SPL_ATF
766	bool "Support ARM Trusted Firmware"
767	depends on ARM64
768	help
769	  ATF(ARM Trusted Firmware) is a component for ARM AArch64 which
770	  is loaded by SPL (which is considered as BL2 in ATF terminology).
771	  More detail at: https://github.com/ARM-software/arm-trusted-firmware
772
773config SPL_OPTEE_SUPPORT
774	bool "Support OP-TEE Trusted OS"
775	depends on ARM
776	help
777	  OP-TEE is an open source Trusted OS  which is loaded by SPL.
778	  More detail at: https://github.com/OP-TEE/optee_os
779
780config SPL_ATF_NO_PLATFORM_PARAM
781        bool "Pass no platform parameter"
782	depends on SPL_ATF
783	help
784	  While we expect to call a pointer to a valid FDT (or NULL)
785	  as the platform parameter to an ATF, some ATF versions are
786	  not U-Boot aware and have an insufficiently robust parameter
787	  validation to gracefully reject a FDT being passed.
788
789	  If this option is enabled, the spl_atf os-type handler will
790	  always pass NULL for the platform parameter.
791
792	  If your ATF is affected, say Y.
793
794config SPL_OPTEE
795	bool "Support OP-TEE Trusted OS"
796	depends on ARM
797	help
798	  OP-TEE is an open source Trusted OS  which is loaded by SPL.
799	  More detail at: https://github.com/OP-TEE/optee_os
800
801config SPL_AB
802	bool "Support AB system boot"
803	depends on SPL
804	help
805	  Enable this config to support AB system boot.
806
807config SPL_LOAD_RKFW
808	bool "SPL support load rockchip firmware images"
809	depends on SPL
810	help
811	  This enables SPL support load rockchip firmware images.
812	  Please define both RKFW_TRUST_SECTOR and RKFW_U_BOOT_SECTOR
813	  for trust and U-Boot images.
814
815config RKFW_TRUST_SECTOR
816	hex "rockchip trust image load sector"
817	depends on SPL_LOAD_RKFW
818	default 0x6000
819
820config RKFW_U_BOOT_SECTOR
821	hex "rockchip uboot image load sector"
822	depends on SPL_LOAD_RKFW
823	default 0x4000
824
825config RKFW_BOOT_SECTOR
826        hex "rockchip boot image load sector"
827        depends on SPL_LOAD_RKFW
828        default 0xa000
829
830config SPL_KERNEL_ADDR
831	hex "Kernel load address in spl"
832	depends on SPL
833	default 0x280000
834	help
835	  Define the kernel address where load kernel image to.
836	  This is used to boot kernel in spl.
837
838config SPL_KERNEL_COMPRESS_ADDR
839	hex "The compressed kernel in spl"
840	depends on SPL && SPL_ROCKCHIP_HW_DECOMPRESS
841	help
842	  Load compressed kernel in this address, then call the
843	  decompress process to decompress the firmware.
844
845config SPL_FDT_ADDR
846	hex "Device tree blob load address in spl"
847	depends on SPL
848	default 0x01f00000
849	help
850	  Define the fdt address where load dtb image to.
851	  This is used to boot kernel in spl.
852
853config SPL_RAMDISK_ADDR
854	hex "Ramdisk load address in spl"
855	depends on SPL
856	default 0x0a200000
857	help
858	  Define the ramdisk address where load ramdisk image to.
859	  This is used to boot kernel in spl.
860
861config SPL_RAMDISK_COMPRESS_ADDR
862	hex "The compressed ramdisk in spl"
863	depends on SPL && SPL_ROCKCHIP_HW_DECOMPRESS
864	help
865	  Load compressed ramdisk in this address, then call the
866	  decompress process to decompress the firmware.
867
868config SPL_KERNEL_BOOT
869	bool "Enable boot kernel in SPL"
870	depends on SPL
871	help
872	  Enable boot kernel in SPL.
873
874config TPL
875	bool
876	depends on SUPPORT_TPL
877	prompt "Enable TPL"
878	help
879	  If you want to build TPL as well as the normal image and SPL, say Y.
880
881if TPL
882
883config TPL_BOARD_INIT
884	bool "Call board-specific initialization in TPL"
885	help
886	  If this option is enabled, U-Boot will call the function
887	  spl_board_init() from board_init_r(). This function should be
888	  provided by the board.
889
890config TPL_LDSCRIPT
891        string "Linker script for the TPL stage"
892	depends on TPL
893	help
894	  The TPL stage will usually require a different linker-script
895	  (as it runs from a different memory region) than the regular
896	  U-Boot stage.  Set this to the path of the linker-script to
897	  be used for TPL.
898
899	  May be left empty to trigger the Makefile infrastructure to
900	  fall back to the linker-script used for the SPL stage.
901
902config TPL_NEEDS_SEPARATE_TEXT_BASE
903        bool "TPL needs a separate text-base"
904	default n
905	depends on TPL
906	help
907	  Enable, if the TPL stage should not inherit its text-base
908	  from the SPL stage.  When enabled, a base address for the
909	  .text sections of the TPL stage has to be set below.
910
911config TPL_NEEDS_SEPARATE_STACK
912        bool "TPL needs a separate initial stack-pointer"
913	default n
914	depends on TPL
915	help
916	  Enable, if the TPL stage should not inherit its initial
917	  stack-pointer from the settings for the SPL stage.
918
919config TPL_TEXT_BASE
920        hex "Base address for the .text section of the TPL stage"
921	depends on TPL_NEEDS_SEPARATE_TEXT_BASE
922	help
923	  The base address for the .text section of the TPL stage.
924
925config TPL_MAX_SIZE
926        int "Maximum size (in bytes) for the TPL stage"
927	default 0
928	depends on TPL
929	help
930	  The maximum size (in bytes) of the TPL stage.
931
932config TPL_STACK
933        hex "Address of the initial stack-pointer for the TPL stage"
934	depends on TPL_NEEDS_SEPARATE_STACK
935	help
936	  The address of the initial stack-pointer for the TPL stage.
937	  Usually this will be the (aligned) top-of-stack.
938
939config TPL_BOOTROM_SUPPORT
940        bool "Support returning to the BOOTROM (from TPL)"
941	help
942	  Some platforms (e.g. the Rockchip RK3368) provide support in their
943	  ROM for loading the next boot-stage after performing basic setup
944	  from the TPL stage.
945
946	  Enable this option, to return to the BOOTROM through the
947	  BOOT_DEVICE_BOOTROM (or fall-through to the next boot device in the
948	  boot device list, if not implemented for a given board)
949
950config TPL_DRIVERS_MISC_SUPPORT
951	bool "Support misc drivers in TPL"
952	help
953	  Enable miscellaneous drivers in TPL. These drivers perform various
954	  tasks that don't fall nicely into other categories, Enable this
955	  option to build the drivers in drivers/misc as part of an TPL
956	  build, for those that support building in TPL (not all drivers do).
957
958config TPL_ENV_SUPPORT
959	bool "Support an environment"
960	help
961	  Enable environment support in TPL. See SPL_ENV_SUPPORT for details.
962
963config TPL_I2C_SUPPORT
964	bool "Support I2C"
965	help
966	  Enable support for the I2C bus in TPL. See SPL_I2C_SUPPORT for
967	  details.
968
969config TPL_LIBCOMMON_SUPPORT
970	bool "Support common libraries"
971	help
972	  Enable support for common U-Boot libraries within TPL. See
973	  SPL_LIBCOMMON_SUPPORT for details.
974
975config TPL_LIBGENERIC_SUPPORT
976	bool "Support generic libraries"
977	help
978	  Enable support for generic U-Boot libraries within TPL. See
979	  SPL_LIBGENERIC_SUPPORT for details.
980
981config TPL_TINY_FRAMEWORK
982	bool "Support not to use spl framework in TPL"
983	help
984	  Enable support for not using spl framework in TPL, to reduce the TPL size.
985
986config TPL_MPC8XXX_INIT_DDR_SUPPORT
987	bool "Support MPC8XXX DDR init"
988	help
989	  Enable support for DDR-SDRAM on the MPC8XXX family within TPL. See
990	  SPL_MPC8XXX_INIT_DDR_SUPPORT for details.
991
992config TPL_MMC_SUPPORT
993	bool "Support MMC"
994	depends on MMC
995	help
996	  Enable support for MMC within TPL. See SPL_MMC_SUPPORT for details.
997
998config TPL_NAND_SUPPORT
999	bool "Support NAND flash"
1000	help
1001	  Enable support for NAND in TPL. See SPL_NAND_SUPPORT for details.
1002
1003config TPL_SERIAL_SUPPORT
1004	bool "Support serial"
1005	help
1006	  Enable support for serial in TPL. See SPL_SERIAL_SUPPORT for
1007	  details.
1008
1009config TPL_SPI_FLASH_SUPPORT
1010	bool "Support SPI flash drivers"
1011	help
1012	  Enable support for using SPI flash in TPL. See SPL_SPI_FLASH_SUPPORT
1013	  for details.
1014
1015config TPL_SPI_SUPPORT
1016	bool "Support SPI drivers"
1017	help
1018	  Enable support for using SPI in TPL. See SPL_SPI_SUPPORT for
1019	  details.
1020
1021endif # TPL
1022
1023endif # SPL
1024endmenu
1025