1menu "TPL configuration options"
2	depends on TPL
3
4config TPL_SIZE_LIMIT
5	hex "Maximum size of TPL image"
6	default 0x0
7	help
8	  Specifies the maximum length of the U-Boot TPL image.
9	  If this value is zero, it is ignored.
10
11config TPL_BINMAN_SYMBOLS
12	bool "Support binman symbols in TPL"
13	depends on TPL_FRAMEWORK && BINMAN
14	default y
15	help
16	  This enables use of symbols in TPL which refer to other entries in
17	  the same binman image as the TPL. These can be declared with the
18	  binman_sym_declare(type, entry, prop) macro and accessed by the
19	  binman_sym(type, entry, prop) macro defined in binman_sym.h.
20
21	  See tools/binman/binman.rst for a detailed explanation.
22
23config TPL_BINMAN_UBOOT_SYMBOLS
24	bool "Declare binman symbols for U-Boot phases in TPL"
25	depends on TPL_BINMAN_SYMBOLS
26	default n if ARCH_IMX8M
27	default y
28	help
29	  This enables use of symbols in TPL which refer to U-Boot phases,
30	  enabling TPL to obtain the location and size of its next phase simply
31	  by calling spl_get_image_pos() and spl_get_image_size().
32
33	  For this to work, you must have all U-Boot phases in the same binman
34	  image, so binman can update TPL with the locations of everything.
35
36config TPL_FRAMEWORK
37	bool "Support TPL based upon the common SPL framework"
38	default y if SPL_FRAMEWORK
39	help
40	  Enable the SPL framework under common/spl/ for TPL builds.
41	  This framework supports MMC, NAND and YMODEM and other methods
42	  loading of U-Boot's SPL stage. If unsure, say Y.
43
44config TPL_BANNER_PRINT
45	bool "Enable output of the TPL banner 'U-Boot TPL ...'"
46	default y
47	help
48	  If this option is enabled, TPL will print the banner with version
49	  info. Disabling this option could be useful to reduce TPL boot time
50	  (e.g. approx. 6 ms faster, when output on i.MX6 with 115200 baud).
51
52config TPL_HANDOFF
53	bool "Pass hand-off information from TPL to SPL and U-Boot proper"
54	depends on HANDOFF && TPL_BLOBLIST
55	default y
56	help
57	  This option enables TPL to write handoff information. This can be
58	  used to pass information like the size of SDRAM from TPL to U-Boot
59	  proper. The information is also available to SPL if it is useful
60	  there.
61
62config TPL_BOARD_INIT
63	bool "Call board-specific initialization in TPL"
64	help
65	  If this option is enabled, U-Boot will call the function
66	  spl_board_init() from board_init_r(). This function should be
67	  provided by the board.
68
69config TPL_BOOTCOUNT_LIMIT
70	bool "Support bootcount in TPL"
71	depends on TPL_ENV_SUPPORT
72	help
73	  If this option is enabled, the TPL will support bootcount.
74	  For example, it may be useful to choose the device to boot.
75
76config TPL_SYS_MALLOC_SIMPLE
77	bool
78	prompt "Only use malloc_simple functions in the TPL"
79	help
80	  Say Y here to only use the *_simple malloc functions from
81	  malloc_simple.c, rather then using the versions from dlmalloc.c;
82	  this will make the TPL binary smaller at the cost of more heap
83	  usage as the *_simple malloc functions do not re-use free-ed mem.
84
85config TPL_SEPARATE_BSS
86	bool "BSS section is in a different memory region from text"
87	default y if SPL_SEPARATE_BSS
88	help
89	  Some platforms need a large BSS region in TPL and can provide this
90	  because RAM is already set up. In this case BSS can be moved to RAM.
91	  This option should then be enabled so that the correct device tree
92	  location is used. Normally we put the device tree at the end of BSS
93	  but with this option enabled, it goes at _image_binary_end.
94
95config TPL_LDSCRIPT
96	string "Linker script for the TPL stage"
97	default "arch/arm/cpu/armv8/u-boot-spl.lds" if ARM64
98	default "arch/\$(ARCH)/cpu/u-boot-spl.lds"
99	help
100	  The TPL stage will usually require a different linker-script
101	  (as it runs from a different memory region) than the regular
102	  U-Boot stage.  Set this to the path of the linker-script to
103	  be used for TPL.
104
105	  May be left empty to trigger the Makefile infrastructure to
106	  fall back to the linker-script used for the SPL stage.
107
108config TPL_NEEDS_SEPARATE_STACK
109	bool "TPL needs a separate initial stack-pointer"
110	help
111	  Enable, if the TPL stage should not inherit its initial
112	  stack-pointer from the settings for the SPL stage.
113
114config TPL_POWER
115	bool "Support power drivers"
116	help
117	  Enable support for power control in TPL. This includes support
118	  for PMICs (Power-management Integrated Circuits) and some of the
119	  features provided by PMICs. In particular, voltage regulators can
120	  be used to enable/disable power and vary its voltage. That can be
121	  useful in TPL to turn on boot peripherals and adjust CPU voltage
122	  so that the clock speed can be increased. This enables the drivers
123	  in drivers/power, drivers/power/pmic and drivers/power/regulator
124	  as part of an TPL build.
125
126config TPL_TEXT_BASE
127	hex "Base address for the .text section of the TPL stage"
128	default 0
129	help
130	  The base address for the .text section of the TPL stage.
131
132config TPL_MAX_SIZE
133	hex "Maximum size (in bytes) for the TPL stage"
134	default 0x2e000 if ROCKCHIP_RK3399
135	default 0x8000 if ROCKCHIP_RK3288 || ROCKCHIP_RV1126
136	default 0x7000 if ROCKCHIP_RK322X || ROCKCHIP_RK3328 || ROCKCHIP_RK3368
137	default 0x2800 if ROCKCHIP_PX30
138	default 0x0
139	help
140	  The maximum size (in bytes) of the TPL stage.
141
142config TPL_STACK
143	hex "Address of the initial stack-pointer for the TPL stage"
144	depends on TPL_NEEDS_SEPARATE_STACK
145	help
146	  The address of the initial stack-pointer for the TPL stage.
147	  Usually this will be the (aligned) top-of-stack.
148
149config TPL_READ_ONLY
150	bool
151	depends on TPL_OF_PLATDATA
152	select TPL_OF_PLATDATA_NO_BIND
153	select TPL_OF_PLATDATA_RT
154	help
155	  Some platforms (e.g. x86 Apollo Lake) load SPL into a read-only
156	  section of memory. This means that of-platdata must make a copy (in
157	  writeable memory) of anything it wants to modify, such as
158	  device-private data.
159
160config TPL_BOOTROM_SUPPORT
161	bool "Support returning to the BOOTROM (from TPL)"
162	help
163	  Some platforms (e.g. the Rockchip RK3368) provide support in their
164	  ROM for loading the next boot-stage after performing basic setup
165	  from the TPL stage.
166
167	  Enable this option, to return to the BOOTROM through the
168	  BOOT_DEVICE_BOOTROM (or fall-through to the next boot device in the
169	  boot device list, if not implemented for a given board)
170
171config TPL_CRC32
172	bool "Support CRC32 in TPL"
173	default y if TPL_ENV_SUPPORT || TPL_BLOBLIST
174	help
175	  Enable this to support CRC32 in uImages or FIT images within SPL.
176	  This is a 32-bit checksum value that can be used to verify images.
177	  For FIT images, this is the least secure type of checksum, suitable
178	  for detected accidental image corruption. For secure applications you
179	  should consider SHA1 or SHA256.
180
181config TPL_DRIVERS_MISC
182	bool "Support misc drivers in TPL"
183	help
184	  Enable miscellaneous drivers in TPL. These drivers perform various
185	  tasks that don't fall nicely into other categories, Enable this
186	  option to build the drivers in drivers/misc as part of an TPL
187	  build, for those that support building in TPL (not all drivers do).
188
189config TPL_ENV_SUPPORT
190	bool "Support an environment"
191	help
192	  Enable environment support in TPL. See SPL_ENV_SUPPORT for details.
193
194config TPL_GPIO
195	bool "Support GPIO in TPL"
196	help
197	  Enable support for GPIOs (General-purpose Input/Output) in TPL.
198	  GPIOs allow U-Boot to read the state of an input line (high or
199	  low) and set the state of an output line. This can be used to
200	  drive LEDs, control power to various system parts and read user
201	  input. GPIOs can be useful in TPL to enable a 'sign-of-life' LED,
202	  for example. Enable this option to build the drivers in
203	  drivers/gpio as part of an TPL build.
204
205config TPL_I2C
206	bool "Support I2C"
207	help
208	  Enable support for the I2C bus in TPL. See SPL_I2C for
209	  details.
210
211config TPL_LIBCOMMON_SUPPORT
212	bool "Support common libraries"
213	help
214	  Enable support for common U-Boot libraries within TPL. See
215	  SPL_LIBCOMMON_SUPPORT for details.
216
217config TPL_LIBGENERIC_SUPPORT
218	bool "Support generic libraries"
219	help
220	  Enable support for generic U-Boot libraries within TPL. See
221	  SPL_LIBGENERIC_SUPPORT for details.
222
223config TPL_MPC8XXX_INIT_DDR
224	bool "Support MPC8XXX DDR init"
225	help
226	  Enable support for DDR-SDRAM on the MPC8XXX family within TPL. See
227	  SPL_MPC8XXX_INIT_DDR for details.
228
229config TPL_MMC
230	bool "Support MMC"
231	depends on MMC
232	help
233	  Enable support for MMC within TPL. See SPL_MMC for details.
234
235config TPL_NAND_SUPPORT
236	bool "Support NAND flash"
237	help
238	  Enable support for NAND in TPL. See SPL_NAND_SUPPORT for details.
239
240config TPL_PCI
241	bool "Support PCI drivers"
242	help
243	  Enable support for PCI in TPL. For platforms that need PCI to boot,
244	  or must perform some init using PCI in SPL, this provides the
245	  necessary driver support. This enables the drivers in drivers/pci
246	  as part of a TPL build.
247
248config TPL_PCH
249	bool "Support PCH drivers"
250	help
251	  Enable support for PCH (Platform Controller Hub) devices in TPL.
252	  These are used to set up GPIOs and the SPI peripheral early in
253	  boot. This enables the drivers in drivers/pch as part of a TPL
254	  build.
255
256config TPL_RAM_SUPPORT
257	bool "Support booting from RAM"
258	help
259	  Enable booting of an image in RAM. The image can be preloaded or
260	  it can be loaded by TPL directly into RAM (e.g. using USB).
261
262config TPL_RAM_DEVICE
263	bool "Support booting from preloaded image in RAM"
264	depends on TPL_RAM_SUPPORT
265	help
266	  Enable booting of an image already loaded in RAM. The image has to
267	  be already in memory when TPL takes over, e.g. loaded by the boot
268	  ROM.
269
270config TPL_RTC
271	bool "Support RTC drivers"
272	help
273	  Enable RTC (Real-time Clock) support in TPL. This includes support
274	  for reading and setting the time. Some RTC devices also have some
275	  non-volatile (battery-backed) memory which is accessible if
276	  needed. This enables the drivers in drivers/rtc as part of an TPL
277	  build.
278
279config TPL_SERIAL
280	bool "Support serial"
281	select TPL_PRINTF
282	select TPL_STRTO
283	help
284	  Enable support for serial in TPL. See SPL_SERIAL for
285	  details.
286
287config TPL_SPI_FLASH_SUPPORT
288	bool "Support SPI flash drivers"
289	help
290	  Enable support for using SPI flash in TPL. See SPL_SPI_FLASH_SUPPORT
291	  for details.
292
293config TPL_SPI_FLASH_TINY
294	bool "Enable low footprint TPL SPI Flash support"
295	depends on TPL_SPI_FLASH_SUPPORT && !SPI_FLASH_BAR
296	default y if SPI_FLASH
297	help
298	 Enable lightweight TPL SPI Flash support that supports just reading
299	 data/images from flash. No support to write/erase flash. Enable
300	 this if you have TPL size limitations and don't need full-fledged
301	 SPI flash support.
302
303config TPL_SPI_LOAD
304	bool "Support loading from SPI flash"
305	depends on TPL_SPI_FLASH_SUPPORT
306	help
307	  Enable support for loading next stage, U-Boot or otherwise, from
308	  SPI NOR in U-Boot TPL.
309
310config TPL_SPI
311	bool "Support SPI drivers"
312	help
313	  Enable support for using SPI in TPL. See SPL_SPI for
314	  details.
315
316config TPL_DM_SPI
317	bool "Support SPI DM drivers in TPL"
318	help
319	  Enable support for SPI DM drivers in TPL.
320
321config TPL_DM_SPI_FLASH
322	bool "Support SPI DM FLASH drivers in TPL"
323	help
324	  Enable support for SPI DM flash drivers in TPL.
325
326config TPL_YMODEM_SUPPORT
327	bool "Support loading using Ymodem"
328	depends on TPL_SERIAL
329	help
330	  While loading from serial is slow it can be a useful backup when
331	  there is no other option. The Ymodem protocol provides a reliable
332	  means of transmitting U-Boot over a serial line for using in TPL,
333	  with a checksum to ensure correctness.
334
335endmenu
336