xref: /openbmc/u-boot/common/Kconfig (revision 4aac44be)
1menu "Boot timing"
2
3config BOOTSTAGE
4	bool "Boot timing and reporting"
5	help
6	  Enable recording of boot time while booting. To use it, insert
7	  calls to bootstage_mark() with a suitable BOOTSTAGE_ID from
8	  bootstage.h. Only a single entry is recorded for each ID. You can
9	  give the entry a name with bootstage_mark_name(). You can also
10	  record elapsed time in a particular stage using bootstage_start()
11	  before starting and bootstage_accum() when finished. Bootstage will
12	  add up all the accumulated time and report it.
13
14	  Normally, IDs are defined in bootstage.h but a small number of
15	  additional 'user' IDs can be used by passing BOOTSTAGE_ID_ALLOC
16	  as the ID.
17
18	  Calls to show_boot_progress() will also result in log entries but
19	  these will not have names.
20
21config BOOTSTAGE_REPORT
22	bool "Display a detailed boot timing report before booting the OS"
23	depends on BOOTSTAGE
24	help
25	  Enable output of a boot time report just before the OS is booted.
26	  This shows how long it took U-Boot to go through each stage of the
27	  boot process. The report looks something like this:
28
29		Timer summary in microseconds:
30		       Mark    Elapsed  Stage
31			  0          0  reset
32		  3,575,678  3,575,678  board_init_f start
33		  3,575,695         17  arch_cpu_init A9
34		  3,575,777         82  arch_cpu_init done
35		  3,659,598     83,821  board_init_r start
36		  3,910,375    250,777  main_loop
37		 29,916,167 26,005,792  bootm_start
38		 30,361,327    445,160  start_kernel
39
40config BOOTSTAGE_USER_COUNT
41	hex "Number of boot ID numbers available for user use"
42	default 20
43	help
44	  This is the number of available user bootstage records.
45	  Each time you call bootstage_mark(BOOTSTAGE_ID_ALLOC, ...)
46	  a new ID will be allocated from this stash. If you exceed
47	  the limit, recording will stop.
48
49config BOOTSTAGE_FDT
50	bool "Store boot timing information in the OS device tree"
51	depends on BOOTSTAGE
52	help
53	  Stash the bootstage information in the FDT. A root 'bootstage'
54	  node is created with each bootstage id as a child. Each child
55	  has a 'name' property and either 'mark' containing the
56	  mark time in microseconds, or 'accum' containing the
57	  accumulated time for that bootstage id in microseconds.
58	  For example:
59
60		bootstage {
61			154 {
62				name = "board_init_f";
63				mark = <3575678>;
64			};
65			170 {
66				name = "lcd";
67				accum = <33482>;
68			};
69		};
70
71	  Code in the Linux kernel can find this in /proc/devicetree.
72
73config BOOTSTAGE_STASH
74	bool "Stash the boot timing information in memory before booting OS"
75	depends on BOOTSTAGE
76	help
77	  Some OSes do not support device tree. Bootstage can instead write
78	  the boot timing information in a binary format at a given address.
79	  This happens through a call to bootstage_stash(), typically in
80	  the CPU's cleanup_before_linux() function. You can use the
81	  'bootstage stash' and 'bootstage unstash' commands to do this on
82	  the command line.
83
84config BOOTSTAGE_STASH_ADDR
85	hex "Address to stash boot timing information"
86	default 0
87	help
88	  Provide an address which will not be overwritten by the OS when it
89	  starts, so that it can read this information when ready.
90
91config BOOTSTAGE_STASH_SIZE
92	hex "Size of boot timing stash region"
93	default 4096
94	help
95	  This should be large enough to hold the bootstage stash. A value of
96	  4096 (4KiB) is normally plenty.
97
98endmenu
99
100menu "Boot media"
101
102config NOR_BOOT
103	bool "Support for booting from NOR flash"
104	depends on NOR
105	help
106	  Enabling this will make a U-Boot binary that is capable of being
107	  booted via NOR.  In this case we will enable certain pinmux early
108	  as the ROM only partially sets up pinmux.  We also default to using
109	  NOR for environment.
110
111config NAND_BOOT
112	bool "Support for booting from NAND flash"
113	default n
114	help
115	  Enabling this will make a U-Boot binary that is capable of being
116	  booted via NAND flash. This is not a must, some SoCs need this,
117	  some not.
118
119config ONENAND_BOOT
120	bool "Support for booting from ONENAND"
121	default n
122	help
123	  Enabling this will make a U-Boot binary that is capable of being
124	  booted via ONENAND. This is not a must, some SoCs need this,
125	  some not.
126
127config QSPI_BOOT
128	bool "Support for booting from QSPI flash"
129	default n
130	help
131	  Enabling this will make a U-Boot binary that is capable of being
132	  booted via QSPI flash. This is not a must, some SoCs need this,
133	  some not.
134
135config SATA_BOOT
136	bool "Support for booting from SATA"
137	default n
138	help
139	  Enabling this will make a U-Boot binary that is capable of being
140	  booted via SATA. This is not a must, some SoCs need this,
141	  some not.
142
143config SD_BOOT
144	bool "Support for booting from SD/EMMC"
145	default n
146	help
147	  Enabling this will make a U-Boot binary that is capable of being
148	  booted via SD/EMMC. This is not a must, some SoCs need this,
149	  some not.
150
151config SPI_BOOT
152	bool "Support for booting from SPI flash"
153	default n
154	help
155	  Enabling this will make a U-Boot binary that is capable of being
156	  booted via SPI flash. This is not a must, some SoCs need this,
157	  some not.
158
159endmenu
160
161config BOOTDELAY
162	int "delay in seconds before automatically booting"
163	default 2
164	depends on AUTOBOOT
165	help
166	  Delay before automatically running bootcmd;
167	  set to 0 to autoboot with no delay, but you can stop it by key input.
168	  set to -1 to disable autoboot.
169	  set to -2 to autoboot with no delay and not check for abort
170
171	  See doc/README.autoboot for details.
172
173menu "Console"
174
175config MENU
176	bool
177	help
178	  This is the library functionality to provide a text-based menu of
179	  choices for the user to make choices with.
180
181config CONSOLE_RECORD
182	bool "Console recording"
183	help
184	  This provides a way to record console output (and provide console
185	  input) through circular buffers. This is mostly useful for testing.
186	  Console output is recorded even when the console is silent.
187	  To enable console recording, call console_record_reset_enable()
188	  from your code.
189
190config CONSOLE_RECORD_OUT_SIZE
191	hex "Output buffer size"
192	depends on CONSOLE_RECORD
193	default 0x400 if CONSOLE_RECORD
194	help
195	  Set the size of the console output buffer. When this fills up, no
196	  more data will be recorded until some is removed. The buffer is
197	  allocated immediately after the malloc() region is ready.
198
199config CONSOLE_RECORD_IN_SIZE
200	hex "Input buffer size"
201	depends on CONSOLE_RECORD
202	default 0x100 if CONSOLE_RECORD
203	help
204	  Set the size of the console input buffer. When this contains data,
205	  tstc() and getc() will use this in preference to real device input.
206	  The buffer is allocated immediately after the malloc() region is
207	  ready.
208
209config IDENT_STRING
210	string "Board specific string to be added to uboot version string"
211	help
212	  This options adds the board specific name to u-boot version.
213
214config SILENT_CONSOLE
215	bool "Support a silent console"
216	help
217	  This option allows the console to be silenced, meaning that no
218	  output will appear on the console devices. This is controlled by
219	  setting the environment vaariable 'silent' to a non-empty value.
220	  Note this also silences the console when booting Linux.
221
222	  When the console is set up, the variable is checked, and the
223	  GD_FLG_SILENT flag is set. Changing the environment variable later
224	  will update the flag.
225
226config SILENT_U_BOOT_ONLY
227	bool "Only silence the U-Boot console"
228	depends on SILENT_CONSOLE
229	help
230	  Normally when the U-Boot console is silenced, Linux's console is
231	  also silenced (assuming the board boots into Linux). This option
232	  allows the linux console to operate normally, even if U-Boot's
233	  is silenced.
234
235config SILENT_CONSOLE_UPDATE_ON_SET
236	bool "Changes to the 'silent' environment variable update immediately"
237	depends on SILENT_CONSOLE
238	default y if SILENT_CONSOLE
239	help
240	  When the 'silent' environment variable is changed, update the
241	  console silence flag immediately. This allows 'setenv' to be used
242	  to silence or un-silence the console.
243
244	  The effect is that any change to the variable will affect the
245	  GD_FLG_SILENT flag.
246
247config SILENT_CONSOLE_UPDATE_ON_RELOC
248	bool "Allow flags to take effect on relocation"
249	depends on SILENT_CONSOLE
250	help
251	  In some cases the environment is not available until relocation
252	  (e.g. NAND). This option makes the value of the 'silent'
253	  environment variable take effect at relocation.
254
255config PRE_CONSOLE_BUFFER
256	bool "Buffer characters before the console is available"
257	help
258	  Prior to the console being initialised (i.e. serial UART
259	  initialised etc) all console output is silently discarded.
260	  Defining CONFIG_PRE_CONSOLE_BUFFER will cause U-Boot to
261	  buffer any console messages prior to the console being
262	  initialised to a buffer. The buffer is a circular buffer, so
263	  if it overflows, earlier output is discarded.
264
265	  Note that this is not currently supported in SPL. It would be
266	  useful to be able to share the pre-console buffer with SPL.
267
268config PRE_CON_BUF_SZ
269	int "Sets the size of the pre-console buffer"
270	depends on PRE_CONSOLE_BUFFER
271	default 4096
272	help
273	  The size of the pre-console buffer affects how much console output
274	  can be held before it overflows and starts discarding earlier
275	  output. Normally there is very little output at this early stage,
276	  unless debugging is enabled, so allow enough for ~10 lines of
277	  text.
278
279	  This is a useful feature if you are using a video console and
280	  want to see the full boot output on the console. Without this
281	  option only the post-relocation output will be displayed.
282
283config PRE_CON_BUF_ADDR
284	hex "Address of the pre-console buffer"
285	depends on PRE_CONSOLE_BUFFER
286	default 0x2f000000 if ARCH_SUNXI && MACH_SUN9I
287	default 0x4f000000 if ARCH_SUNXI && !MACH_SUN9I
288	help
289	  This sets the start address of the pre-console buffer. This must
290	  be in available memory and is accessed before relocation and
291	  possibly before DRAM is set up. Therefore choose an address
292	  carefully.
293
294	  We should consider removing this option and allocating the memory
295	  in board_init_f_init_reserve() instead.
296
297config CONSOLE_MUX
298	bool "Enable console multiplexing"
299	default y if DM_VIDEO || VIDEO || LCD
300	help
301	  This allows multiple devices to be used for each console 'file'.
302	  For example, stdout can be set to go to serial and video.
303	  Similarly, stdin can be set to come from serial and keyboard.
304	  Input can be provided from either source. Console multiplexing
305	  adds a small amount of size to U-Boot.  Changes to the environment
306	  variables stdout, stdin and stderr will take effect immediately.
307
308config SYS_CONSOLE_IS_IN_ENV
309	bool "Select console devices from the environment"
310	default y if CONSOLE_MUX
311	help
312	  This allows multiple input/output devices to be set at boot time.
313	  For example, if stdout is set to "serial,video" then output will
314	  be sent to both the serial and video devices on boot. The
315	  environment variables can be updated after boot to change the
316	  input/output devices.
317
318config SYS_CONSOLE_OVERWRITE_ROUTINE
319	bool "Allow board control over console overwriting"
320	help
321	  If this is enabled, and the board-specific function
322	  overwrite_console() returns 1, the stdin, stderr and stdout are
323	  switched to the serial port, else the settings in the environment
324	  are used. If this is not enabled, the console will not be switched
325	  to serial.
326
327config SYS_CONSOLE_ENV_OVERWRITE
328	bool "Update environment variables during console init"
329	help
330	  The console environment variables (stdout, stdin, stderr) can be
331	  used to determine the correct console devices on start-up. This
332	  option writes the console devices to these variables on console
333	  start-up (after relocation). This causes the environment to be
334	  updated to match the console devices actually chosen.
335
336config SYS_CONSOLE_INFO_QUIET
337	bool "Don't display the console devices on boot"
338	help
339	  Normally U-Boot displays the current settings for stdout, stdin
340	  and stderr on boot when the post-relocation console is set up.
341	  Enable this option to supress this output. It can be obtained by
342	  calling stdio_print_current_devices() from board code.
343
344config SYS_STDIO_DEREGISTER
345	bool "Allow deregistering stdio devices"
346	default y if USB_KEYBOARD
347	help
348	  Generally there is no need to deregister stdio devices since they
349	  are never deactivated. But if a stdio device is used which can be
350	  removed (for example a USB keyboard) then this option can be
351	  enabled to ensure this is handled correctly.
352
353endmenu
354
355config DEFAULT_FDT_FILE
356	string "Default fdt file"
357	help
358	  This option is used to set the default fdt file to boot OS.
359
360config VERSION_VARIABLE
361	bool "add U-Boot environment variable vers"
362	default n
363	help
364	  If this variable is defined, an environment variable
365	  named "ver" is created by U-Boot showing the U-Boot
366	  version as printed by the "version" command.
367	  Any change to this variable will be reverted at the
368	  next reset.
369
370config BOARD_LATE_INIT
371	bool
372	help
373	  Sometimes board require some initialization code that might
374	  require once the actual init done, example saving board specific env,
375	  boot-modes etc. which eventually done at late.
376
377	  So this config enable the late init code with the help of board_late_init
378	  function which should defined on respective boards.
379
380config DISPLAY_CPUINFO
381	bool "Display information about the CPU during start up"
382	default y if ARM || BLACKFIN || NIOS2 || X86 || XTENSA || MPC5xxx
383	help
384	  Display information about the CPU that U-Boot is running on
385	  when U-Boot starts up. The function print_cpuinfo() is called
386	  to do this.
387
388config DISPLAY_BOARDINFO
389	bool "Display information about the board during start up"
390	default y if ARM || M68K || MIPS || PPC || SPARC || XTENSA
391	help
392	  Display information about the board that U-Boot is running on
393	  when U-Boot starts up. The board function checkboard() is called
394	  to do this.
395
396menu "Start-up hooks"
397
398config ARCH_EARLY_INIT_R
399	bool "Call arch-specific init soon after relocation"
400	default y if X86
401	help
402	  With this option U-Boot will call arch_early_init_r() soon after
403	  relocation. Driver model is running by this point, and the cache
404	  is on. Note that board_early_init_r() is called first, if
405	  enabled. This can be used to set up architecture-specific devices.
406
407config ARCH_MISC_INIT
408	bool "Call arch-specific init after relocation, when console is ready"
409	help
410	  With this option U-Boot will call arch_misc_init() after
411	  relocation to allow miscellaneous arch-dependent initialisation
412	  to be performed. This function should be defined by the board
413	  and will be called after the console is set up, after relocaiton.
414
415config BOARD_EARLY_INIT_F
416	bool "Call board-specific init before relocation"
417	default y if X86
418	help
419	  Some boards need to perform initialisation as soon as possible
420	  after boot. With this option, U-Boot calls board_early_init_f()
421	  after driver model is ready in the pre-relocation init sequence.
422	  Note that the normal serial console is not yet set up, but the
423	  debug UART will be available if enabled.
424
425endmenu
426
427source "common/spl/Kconfig"
428