1menu "Console"
2
3config MENU
4	bool
5	help
6	  This is the library functionality to provide a text-based menu of
7	  choices for the user to make choices with.
8
9config CONSOLE_RECORD
10	bool "Console recording"
11	help
12	  This provides a way to record console output (and provide console
13	  input) through circular buffers. This is mostly useful for testing.
14	  Console output is recorded even when the console is silent.
15	  To enable console recording, call console_record_reset_enable()
16	  from your code.
17
18config CONSOLE_RECORD_INIT_F
19	bool "Enable console recording during pre-relocation init"
20	depends on CONSOLE_RECORD && SYS_MALLOC_F
21	default y
22	help
23	  This option enables console recording during pre-relocation init.
24	  CONFIG_SYS_MALLOC_F must be enabled to use this feature.
25
26config CONSOLE_RECORD_OUT_SIZE
27	hex "Output buffer size"
28	depends on CONSOLE_RECORD
29	default 0x400 if CONSOLE_RECORD
30	help
31	  Set the size of the console recording output buffer. When this fills
32	  up, no more data will be recorded until some is removed. The buffer
33	  is allocated immediately after the malloc() region is ready.
34
35config CONSOLE_RECORD_OUT_SIZE_F
36	hex "Output buffer size before relocation"
37	depends on CONSOLE_RECORD
38	default 0x400 if CONSOLE_RECORD
39	help
40	  Set the size of the console recording output buffer before
41	  relocation. When this fills up, no more data will be recorded until
42	  some is removed.  The buffer is allocated immediately after the early
43	  malloc() region is ready.
44
45config CONSOLE_RECORD_IN_SIZE
46	hex "Input buffer size"
47	depends on CONSOLE_RECORD
48	default 0x100 if CONSOLE_RECORD
49	help
50	  Set the size of the console recording input buffer. When this contains data,
51	  tstc() and getc() will use this in preference to real device input.
52	  The buffer is allocated immediately after the malloc() region is
53	  ready.
54
55config SYS_CBSIZE
56	int "Console input buffer size"
57	default 2048 if ARCH_TEGRA || ARCH_VERSAL || ARCH_ZYNQ || ARCH_ZYNQMP || \
58		RCAR_GEN3 || TARGET_SOCFPGA_SOC64
59	default 512 if ARCH_MX5 || ARCH_MX6 || ARCH_MX7 || FSL_LSCH2 || \
60		FSL_LSCH3 || X86
61	default 256 if M68K || PPC
62	default 1024
63	help
64	  Set the size of the console input buffer. This is used both in the
65	  case of reading input literally from the user in some manner as well
66	  as when we need to construct or modify that type of input, for
67	  example when constructing "bootargs" for the OS.
68
69config SYS_PBSIZE
70	int "Console output buffer size"
71	default 1024 if ARCH_SUNXI
72	default 1044
73	help
74	  Set the size of the console output buffer. This is used when we need
75	  to work with some form of a buffer while providing output in some
76	  form to the user.
77
78config DISABLE_CONSOLE
79	bool "Add functionality to disable console completely"
80	help
81		Disable console (in & out).
82
83config IDENT_STRING
84	string "Board specific string to be added to uboot version string"
85	help
86	  This options adds the board specific name to u-boot version.
87
88config LOGLEVEL
89	int "loglevel"
90	default 4
91	range 0 10
92	help
93	  All Messages with a loglevel smaller than the console loglevel will
94	  be compiled in. The loglevels are defined as follows:
95
96	    0 - emergency
97	    1 - alert
98	    2 - critical
99	    3 - error
100	    4 - warning
101	    5 - note
102	    6 - info
103	    7 - debug
104	    8 - debug content
105	    9 - debug hardware I/O
106
107config SPL_LOGLEVEL
108	int
109	depends on SPL
110	default LOGLEVEL
111
112config TPL_LOGLEVEL
113	int
114	depends on TPL
115	default LOGLEVEL
116
117config VPL_LOGLEVEL
118	int "loglevel for VPL"
119	depends on VPL
120	default LOGLEVEL
121	help
122	  All Messages with a loglevel smaller than the console loglevel will
123	  be compiled in to VPL. See LOGLEVEL for a list of available log
124	  levels. Setting this to a value above 4 may increase the code size
125	  significantly.
126
127config SILENT_CONSOLE
128	bool "Support a silent console"
129	help
130	  This option allows the console to be silenced, meaning that no
131	  output will appear on the console devices. This is controlled by
132	  setting the environment variable 'silent' to a non-empty value.
133	  Note this also silences the console when booting Linux.
134
135	  When the console is set up, the variable is checked, and the
136	  GD_FLG_SILENT flag is set. Changing the environment variable later
137	  will update the flag.
138
139config SPL_SILENT_CONSOLE
140	bool "Use a silent console in SPL"
141	default y if SILENT_CONSOLE && !SANDBOX
142	help
143	  This selects a silent console in SPL. When enabled it drops some
144	  output messages. The GD_FLG_SILENT flag is not used in SPL so there
145	  is no run-time control of console messages in SPL.
146
147	  Future work may allow the SPL console to be silenced completely using
148	  this option.
149
150config TPL_SILENT_CONSOLE
151	bool "Use a silent console in TPL"
152	default y if SILENT_CONSOLE && !SANDBOX
153	help
154	  This selects a silent console in TPL. When enabled it drops some
155	  output messages. The GD_FLG_SILENT flag is not used in TPL so there
156	  is no run-time control of console messages in TPL.
157
158	  Future work may allow the TPL console to be silenced completely using
159	  this option.
160
161config SILENT_U_BOOT_ONLY
162	bool "Only silence the U-Boot console"
163	depends on SILENT_CONSOLE
164	help
165	  Normally when the U-Boot console is silenced, Linux's console is
166	  also silenced (assuming the board boots into Linux). This option
167	  allows the linux console to operate normally, even if U-Boot's
168	  is silenced.
169
170config SILENT_CONSOLE_UPDATE_ON_SET
171	bool "Changes to the 'silent' environment variable update immediately"
172	depends on SILENT_CONSOLE
173	default y if SILENT_CONSOLE
174	help
175	  When the 'silent' environment variable is changed, update the
176	  console silence flag immediately. This allows 'setenv' to be used
177	  to silence or un-silence the console.
178
179	  The effect is that any change to the variable will affect the
180	  GD_FLG_SILENT flag.
181
182config SILENT_CONSOLE_UPDATE_ON_RELOC
183	bool "Allow flags to take effect on relocation"
184	depends on SILENT_CONSOLE
185	help
186	  In some cases the environment is not available until relocation
187	  (e.g. NAND). This option makes the value of the 'silent'
188	  environment variable take effect at relocation.
189
190config SILENT_CONSOLE_UNTIL_ENV
191	bool "Keep console silent until environment is loaded"
192	depends on SILENT_CONSOLE
193	help
194	  This option makes sure U-Boot will never use the console unless the
195	  environment from flash does not contain the 'silent' variable.  If
196	  set, the console is kept silent until after the environment was
197	  loaded.  Use this in combination with PRE_CONSOLE_BUFFER to print out
198	  earlier messages after loading the environment when allowed.
199
200config PRE_CONSOLE_BUFFER
201	bool "Buffer characters before the console is available"
202	help
203	  Prior to the console being initialised (i.e. serial UART
204	  initialised etc) all console output is silently discarded.
205	  Defining CONFIG_PRE_CONSOLE_BUFFER will cause U-Boot to
206	  buffer any console messages prior to the console being
207	  initialised to a buffer. The buffer is a circular buffer, so
208	  if it overflows, earlier output is discarded.
209
210	  Note that this is not currently supported in SPL. It would be
211	  useful to be able to share the pre-console buffer with SPL.
212
213config PRE_CON_BUF_SZ
214	int "Sets the size of the pre-console buffer"
215	depends on PRE_CONSOLE_BUFFER
216	default 4096
217	help
218	  The size of the pre-console buffer affects how much console output
219	  can be held before it overflows and starts discarding earlier
220	  output. Normally there is very little output at this early stage,
221	  unless debugging is enabled, so allow enough for ~10 lines of
222	  text.
223
224	  This is a useful feature if you are using a video console and
225	  want to see the full boot output on the console. Without this
226	  option only the post-relocation output will be displayed.
227
228config PRE_CON_BUF_ADDR
229	hex "Address of the pre-console buffer"
230	depends on PRE_CONSOLE_BUFFER
231	default 0x2f000000 if ARCH_SUNXI && MACH_SUN9I
232	default 0x4f000000 if ARCH_SUNXI && !MACH_SUN9I
233	default 0x0f000000 if ROCKCHIP_RK3288
234	default 0x0f200000 if ROCKCHIP_RK3399 || ROCKCHIP_RK3328
235	help
236	  This sets the start address of the pre-console buffer. This must
237	  be in available memory and is accessed before relocation and
238	  possibly before DRAM is set up. Therefore choose an address
239	  carefully.
240
241	  We should consider removing this option and allocating the memory
242	  in board_init_f_init_reserve() instead.
243
244config CONSOLE_FLUSH_SUPPORT
245	bool "Enable console flush support"
246	default y
247	help
248	  This enables compilation of flush() function for console flush support.
249
250config CONSOLE_FLUSH_ON_NEWLINE
251	bool "Flush console buffer on every newline character"
252	depends on DM_SERIAL
253	help
254	  This makes the serial core code flush the console device
255	  whenever a newline (\n) character has been emitted. This can
256	  be especially useful when "printf debugging", as otherwise
257	  lots of output could still be in the UART's FIFO by the time
258	  one hits the code which causes the CPU to hang or reset.
259
260config CONSOLE_MUX
261	bool "Enable console multiplexing"
262	default y if VIDEO || LCD
263	help
264	  This allows multiple devices to be used for each console 'file'.
265	  For example, stdout can be set to go to serial and video.
266	  Similarly, stdin can be set to come from serial and keyboard.
267	  Input can be provided from either source. Console multiplexing
268	  adds a small amount of size to U-Boot.  Changes to the environment
269	  variables stdout, stdin and stderr will take effect immediately.
270
271config SYS_CONSOLE_IS_IN_ENV
272	bool "Select console devices from the environment"
273	default y if CONSOLE_MUX
274	help
275	  This allows multiple input/output devices to be set at boot time.
276	  For example, if stdout is set to "serial,vidconsole" then output
277	  will be sent to both the serial and video devices on boot. The
278	  environment variables can be updated after boot to change the
279	  input/output devices.
280
281config SYS_CONSOLE_OVERWRITE_ROUTINE
282	bool "Allow board control over console overwriting"
283	help
284	  If this is enabled, and the board-specific function
285	  overwrite_console() returns 1, the stdin, stderr and stdout are
286	  switched to the serial port, else the settings in the environment
287	  are used. If this is not enabled, the console will not be switched
288	  to serial.
289
290config SYS_CONSOLE_ENV_OVERWRITE
291	bool "Update environment variables during console init"
292	depends on SYS_CONSOLE_IS_IN_ENV
293	help
294	  The console environment variables (stdout, stdin, stderr) can be
295	  used to determine the correct console devices on start-up. This
296	  option writes the console devices to these variables on console
297	  start-up (after relocation). This causes the environment to be
298	  updated to match the console devices actually chosen.
299
300config SYS_CONSOLE_INFO_QUIET
301	bool "Don't display the console devices on boot"
302	help
303	  Normally U-Boot displays the current settings for stdout, stdin
304	  and stderr on boot when the post-relocation console is set up.
305	  Enable this option to suppress this output. It can be obtained by
306	  calling stdio_print_current_devices() from board code.
307
308config SYS_STDIO_DEREGISTER
309	bool "Allow deregistering stdio devices"
310	default y if USB_KEYBOARD
311	help
312	  Generally there is no need to deregister stdio devices since they
313	  are never deactivated. But if a stdio device is used which can be
314	  removed (for example a USB keyboard) then this option can be
315	  enabled to ensure this is handled correctly.
316
317config SPL_SYS_STDIO_DEREGISTER
318	bool "Allow deregistering stdio devices in SPL"
319	help
320	  Generally there is no need to deregister stdio devices since they
321	  are never deactivated. But if a stdio device is used which can be
322	  removed (for example a USB keyboard) then this option can be
323	  enabled to ensure this is handled correctly. This is very rarely
324	  needed in SPL.
325
326config SYS_DEVICE_NULLDEV
327	bool "Enable a null device for stdio"
328	default y if SPLASH_SCREEN || SYS_STDIO_DEREGISTER
329	help
330	  Enable creation of a "nulldev" stdio device. This allows silent
331	  operation of the console by setting stdout to "nulldev". Enable
332	  this to use a serial console under board control.
333
334endmenu
335
336menu "Logging"
337
338config LOG
339	bool "Enable logging support"
340	depends on DM
341	help
342	  This enables support for logging of status and debug messages. These
343	  can be displayed on the console, recorded in a memory buffer, or
344	  discarded if not needed. Logging supports various categories and
345	  levels of severity.
346
347if LOG
348
349config LOG_MAX_LEVEL
350	int "Maximum log level to record"
351	default 6
352	range 0 9
353	help
354	  This selects the maximum log level that will be recorded. Any value
355	  higher than this will be ignored. If possible log statements below
356	  this level will be discarded at build time. Levels:
357
358	    0 - emergency
359	    1 - alert
360	    2 - critical
361	    3 - error
362	    4 - warning
363	    5 - note
364	    6 - info
365	    7 - debug
366	    8 - debug content
367	    9 - debug hardware I/O
368
369config LOG_DEFAULT_LEVEL
370	int "Default logging level to display"
371	default LOG_MAX_LEVEL
372	range 0 LOG_MAX_LEVEL
373	help
374	  This is the default logging level set when U-Boot starts. It can
375	  be adjusted later using the 'log level' command. Note that setting
376	  this to a value above LOG_MAX_LEVEL will be ineffective, since the
377	  higher levels are not compiled in to U-Boot.
378
379	    0 - emergency
380	    1 - alert
381	    2 - critical
382	    3 - error
383	    4 - warning
384	    5 - note
385	    6 - info
386	    7 - debug
387	    8 - debug content
388	    9 - debug hardware I/O
389
390config LOG_CONSOLE
391	bool "Allow log output to the console"
392	default y
393	help
394	  Enables a log driver which writes log records to the console.
395	  Generally the console is the serial port or LCD display. Only the
396	  log message is shown - other details like level, category, file and
397	  line number are omitted.
398
399config LOGF_FILE
400	bool "Show source file name in log messages by default"
401	help
402	  Show the source file name in log messages by default. This value
403	  can be overridden using the 'log format' command.
404
405config LOGF_LINE
406	bool "Show source line number in log messages by default"
407	help
408	  Show the source line number in log messages by default. This value
409	  can be overridden using the 'log format' command.
410
411config LOGF_FUNC
412	bool "Show function name in log messages by default"
413	help
414	  Show the function name in log messages by default. This value can
415	  be overridden using the 'log format' command.
416
417config LOGF_FUNC_PAD
418	int "Number of characters to use for function"
419	default 20
420	help
421	  Sets the field width to use when showing the function. Set this to
422	  a larger value if you have lots of long function names, and want
423	  things to line up.
424
425config LOG_SYSLOG
426	bool "Log output to syslog server"
427	depends on NET
428	help
429	  Enables a log driver which broadcasts log records via UDP port 514
430	  to syslog servers.
431
432config SPL_LOG
433	bool "Enable logging support in SPL"
434	depends on LOG && SPL
435	help
436	  This enables support for logging of status and debug messages. These
437	  can be displayed on the console, recorded in a memory buffer, or
438	  discarded if not needed. Logging supports various categories and
439	  levels of severity.
440
441if SPL_LOG
442
443config SPL_LOG_MAX_LEVEL
444	int "Maximum log level to record in SPL"
445	depends on SPL_LOG
446	default 3
447	range 0 9
448	help
449	  This selects the maximum log level that will be recorded. Any value
450	  higher than this will be ignored. If possible log statements below
451	  this level will be discarded at build time. Levels:
452
453	    0 - emergency
454	    1 - alert
455	    2 - critical
456	    3 - error
457	    4 - warning
458	    5 - note
459	    6 - info
460	    7 - debug
461	    8 - debug content
462	    9 - debug hardware I/O
463
464config SPL_LOG_CONSOLE
465	bool "Allow log output to the console in SPL"
466	default y
467	help
468	  Enables a log driver which writes log records to the console.
469	  Generally the console is the serial port or LCD display. Only the
470	  log message is shown - other details like level, category, file and
471	  line number are omitted.
472
473endif
474
475config TPL_LOG
476	bool "Enable logging support in TPL"
477	depends on LOG && TPL
478	help
479	  This enables support for logging of status and debug messages. These
480	  can be displayed on the console, recorded in a memory buffer, or
481	  discarded if not needed. Logging supports various categories and
482	  levels of severity.
483
484if TPL_LOG
485
486config TPL_LOG_MAX_LEVEL
487	int "Maximum log level to record in TPL"
488	depends on TPL_LOG
489	default 3
490	range 0 9
491	help
492	  This selects the maximum log level that will be recorded. Any value
493	  higher than this will be ignored. If possible log statements below
494	  this level will be discarded at build time. Levels:
495
496	    0 - emergency
497	    1 - alert
498	    2 - critical
499	    3 - error
500	    4 - warning
501	    5 - note
502	    6 - info
503	    7 - debug
504	    8 - debug content
505	    9 - debug hardware I/O
506
507config TPL_LOG_CONSOLE
508	bool "Allow log output to the console in TPL"
509	default y
510	help
511	  Enables a log driver which writes log records to the console.
512	  Generally the console is the serial port or LCD display. Only the
513	  log message is shown - other details like level, category, file and
514	  line number are omitted.
515
516endif
517
518config VPL_LOG
519	bool "Enable logging support in VPL"
520	depends on LOG && VPL
521	help
522	  This enables support for logging of status and debug messages. These
523	  can be displayed on the console, recorded in a memory buffer, or
524	  discarded if not needed. Logging supports various categories and
525	  levels of severity.
526
527if VPL_LOG
528
529config VPL_LOG_MAX_LEVEL
530	int "Maximum log level to record in VPL"
531	default 3
532	help
533	  This selects the maximum log level that will be recorded. Any value
534	  higher than this will be ignored. If possible log statements below
535	  this level will be discarded at build time. Levels:
536
537	    0 - emergency
538	    1 - alert
539	    2 - critical
540	    3 - error
541	    4 - warning
542	    5 - note
543	    6 - info
544	    7 - debug
545	    8 - debug content
546	    9 - debug hardware I/O
547
548config VPL_LOG_CONSOLE
549	bool "Allow log output to the console in VPL"
550	default y
551	help
552	  Enables a log driver which writes log records to the console.
553	  Generally the console is the serial port or LCD display. Only the
554	  log message is shown - other details like level, category, file and
555	  line number are omitted.
556
557endif
558
559config LOG_ERROR_RETURN
560	bool "Log all functions which return an error"
561	help
562	  When an error is returned in U-Boot it is sometimes difficult to
563	  figure out the root cause. For example, reading from SPI flash may
564	  fail due to a problem in the SPI controller or due to the flash part
565	  not returning the expected information. This option changes
566	  log_ret() to log any errors it sees. With this option disabled,
567	  log_ret() is a nop.
568
569	  You can add log_ret() to all functions which return an error code.
570
571config LOG_TEST
572	bool "Provide a test for logging"
573	depends on UNIT_TEST
574	default y if SANDBOX
575	help
576	  This enables a 'log test' command to test logging. It is normally
577	  executed from a pytest and simply outputs logging information
578	  in various different ways to test that the logging system works
579	  correctly with various settings.
580
581endif
582
583endmenu
584
585menu "Init options"
586
587config BOARD_TYPES
588	bool "Enable board_type entry in global data struct"
589	help
590	  If this option is enabled, a field will be added to the global
591	  data struct to store an unsigned long value for the type of
592	  platform that we have determined we are on, at run-time.
593
594config DISPLAY_CPUINFO
595	bool "Display information about the CPU during start up"
596	default y if ARC || ARM || NIOS2 || X86 || XTENSA || M68K
597	help
598	  Display information about the CPU that U-Boot is running on
599	  when U-Boot starts up. The function print_cpuinfo() is called
600	  to do this.
601
602config DISPLAY_BOARDINFO
603	bool "Display information about the board during early start up"
604	default y if ARC || ARM || M68K || MIPS || PPC || SANDBOX || XTENSA
605	help
606	  Display information about the board that U-Boot is running on
607	  when U-Boot starts up. The board function checkboard() is called
608	  to do this.
609
610config DISPLAY_BOARDINFO_LATE
611	bool "Display information about the board during late start up"
612	help
613	  Display information about the board that U-Boot is running on after
614	  the relocation phase. The board function checkboard() is called to do
615	  this.
616
617menu "Start-up hooks"
618
619config CYCLIC
620	bool "General-purpose cyclic execution mechanism"
621	help
622	  This enables a general-purpose cyclic execution infrastructure,
623	  to allow "small" (run-time wise) functions to be executed at
624	  a specified frequency. Things like LED blinking or watchdog
625	  triggering are examples for such tasks.
626
627if CYCLIC
628
629config CYCLIC_MAX_CPU_TIME_US
630	int "Sets the max allowed time for a cyclic function in us"
631	default 1000
632	help
633	  The max allowed time for a cyclic function in us. If a functions
634	  takes longer than this duration this function will get unregistered
635	  automatically.
636
637endif # CYCLIC
638
639config EVENT
640	bool
641	help
642	  This adds a framework for general purpose sending and processing of
643	  events, to allow interested parties to be alerted when something
644	  happens. This is an attempt to stem the flow of weak functions,
645	  hooks, functions in board_f.c and board_r.c and the Kconfig options
646	  below.
647
648	  See doc/develop/event.rst for more information.
649
650if EVENT
651
652config EVENT_DYNAMIC
653	bool
654	help
655	  Enable this to support adding an event spy at runtime, without adding
656	  it to the EVENT_SPY*() linker list. This increases code size slightly
657	  but provides more flexibility for boards and subsystems that need it.
658
659config EVENT_DEBUG
660	bool "Enable event debugging assistance"
661	default y if SANDBOX
662	help
663	  Enable this to get useful features for seeing what is happening with
664	  events, such as event-type names. This adds to the code size of
665	  U-Boot so can be turned off for production builds.
666
667config SPL_EVENT
668	bool  # General-purpose event-handling mechanism in SPL
669	depends on SPL
670	help
671	  This adds a framework for general purpose sending and processing of
672	  events, to allow interested parties to be alerted when something
673	  happens. This is an attempt to stem the flow of weak functions,
674	  hooks, functions in board_f.c and board_r.c and the Kconfig options
675	  below.
676
677	  See doc/develop/event.rst for more information.
678
679config SPL_EVENT_DYNAMIC
680	bool
681	depends on SPL_EVENT && EVENT_DYNAMIC
682	help
683	  Enable this to support adding an event spy at runtime, without adding
684	  it to the EVENT_SPY*() linker list. This increases code size slightly
685	  but provides more flexibility for boards and subsystems that need it.
686
687endif # EVENT
688
689config ARCH_EARLY_INIT_R
690	bool
691	help
692	  With this option U-Boot will call arch_early_init_r() soon after
693	  relocation. Driver model is running by this point, and the cache
694	  is on. Note that board_early_init_r() is called first, if
695	  enabled. This can be used to set up architecture-specific devices.
696
697config ARCH_MISC_INIT
698	bool "Call arch-specific init after relocation, when console is ready"
699	help
700	  With this option U-Boot will call arch_misc_init() after
701	  relocation to allow miscellaneous arch-dependent initialisation
702	  to be performed. This function should be defined by the board
703	  and will be called after the console is set up, after relocation.
704
705config BOARD_EARLY_INIT_F
706	bool "Call board-specific init before relocation"
707	help
708	  Some boards need to perform initialisation as soon as possible
709	  after boot. With this option, U-Boot calls board_early_init_f()
710	  after driver model is ready in the pre-relocation init sequence.
711	  Note that the normal serial console is not yet set up, but the
712	  debug UART will be available if enabled.
713
714config BOARD_EARLY_INIT_R
715	bool "Call board-specific init after relocation"
716	help
717	  Some boards need to perform initialisation as directly after
718	  relocation. With this option, U-Boot calls board_early_init_r()
719	  in the post-relocation init sequence.
720
721config BOARD_POSTCLK_INIT
722	bool "Call board_postclk_init"
723	help
724	  Some boards need this to initialize select items, after clocks /
725	  timebase and before env / serial.
726
727config BOARD_LATE_INIT
728	bool "Execute Board late init"
729	help
730	  Sometimes board require some initialization code that might
731	  require once the actual init done, example saving board specific env,
732	  boot-modes etc. which eventually done at late.
733
734	  So this config enable the late init code with the help of board_late_init
735	  function which should defined on respective boards.
736
737config CLOCKS
738	bool "Call set_cpu_clk_info"
739	depends on ARM
740
741config HWCONFIG
742	bool "hwconfig infrastructure"
743	default y if PPC || ARCH_LS1021A || FSL_LSCH2 || FSL_LSCH3
744
745config SYS_FSL_CLK
746	bool
747	depends on ARCH_LS1021A || FSL_LSCH2 || FSL_LSCH3 || \
748		(FSL_ESDHC_IMX && (ARCH_MX5 || ARCH_MX6 || ARCH_MX7))
749	default y
750	help
751	  Enable to call get_clocks() in board_init_f() for platforms other
752	  than PowerPC or M68k.  This is a legacy option.  If not TARGET_BRPPT2
753
754config LAST_STAGE_INIT
755	bool "Call board-specific as last setup step"
756	select EVENT
757	help
758	  Some boards need to perform initialisation immediately before control
759	  is passed to the command-line interpreter (e.g. for initializations
760	  that depend on later phases in the init sequence). With this option,
761	  U-Boot calls last_stage_init() before the command-line interpreter is
762	  started.
763
764config MISC_INIT_R
765	bool "Execute Misc Init"
766	default y if ARCH_KEYSTONE || ARCH_SUNXI || MPC85xx
767	default y if ARCH_OMAP2PLUS && !AM33XX
768	help
769	  Enabling this option calls 'misc_init_r' function
770
771config SYS_MALLOC_BOOTPARAMS
772	bool "Malloc a buffer to use for bootparams"
773	help
774	  In some cases rather than using a known location to store the
775	  bi_boot_params portion of gd we need to allocate it from our malloc pool.
776
777config SYS_BOOTPARAMS_LEN
778	hex "Size of the bootparam buffer to malloc in bytes"
779	depends on SYS_MALLOC_BOOTPARAMS
780	default 0x20000 if MIPS || RCAR_64
781	default 0x10000
782
783config ID_EEPROM
784	bool "Enable I2C connected system identifier EEPROM"
785	help
786	  A number of different systems and vendors enable a vendor-specified
787	  EEPROM that contains various identifying features.
788
789config SYS_EEPROM_BUS_NUM
790	int "I2C bus number of the system identifier EEPROM"
791	depends on ID_EEPROM
792	default 0
793
794choice
795	prompt "EEPROM starts with 'CCID' or 'NXID'"
796	depends on ID_EEPROM && (PPC || ARCH_LS1021A || FSL_LAYERSCAPE)
797	default SYS_I2C_EEPROM_NXID
798	help
799	  Specify if the Freescale / NXP ID EEPROM starts with 'CCID' or 'NXID'
800	  ASCII literal string.
801
802config SYS_I2C_EEPROM_CCID
803	bool "EEPROM starts with 'CCID'"
804
805config SYS_I2C_EEPROM_NXID
806	bool "EEPROM starts with 'NXID'"
807
808endchoice
809
810config PCI_INIT_R
811	bool "Enumerate PCI buses during init"
812	depends on PCI
813	help
814	  With this option U-Boot will call pci_init() soon after relocation,
815	  which will enumerate PCI buses. This is needed, for instance, in the
816	  case of DM PCI-based Ethernet devices, which will not be detected
817	  without having the enumeration performed earlier.
818
819config RESET_PHY_R
820	bool "Reset ethernet PHY during init"
821	help
822	  Implement reset_phy() in board code if required to reset the ethernet
823	  PHY.
824
825endmenu
826
827endmenu		# Init options
828
829menu "Security support"
830
831config HASH
832	bool # "Support hashing API (SHA1, SHA256, etc.)"
833	help
834	  This provides a way to hash data in memory using various supported
835	  algorithms (such as SHA1, MD5, CRC32). The API is defined in hash.h
836	  and the algorithms it supports are defined in common/hash.c. See
837	  also CMD_HASH for command-line access.
838
839config AVB_VERIFY
840	bool "Build Android Verified Boot operations"
841	depends on LIBAVB
842	depends on MMC
843	depends on PARTITION_UUIDS
844	help
845	  This option enables compilation of bootloader-dependent operations,
846	  used by Android Verified Boot 2.0 library (libavb). Includes:
847	    * Helpers to process strings in order to build OS bootargs.
848	    * Helpers to access MMC, similar to drivers/fastboot/fb_mmc.c.
849	    * Helpers to alloc/init/free avb ops.
850
851if AVB_VERIFY
852
853config AVB_BUF_ADDR
854	hex "Define AVB buffer address"
855	default FASTBOOT_BUF_ADDR
856	help
857	  AVB requires a buffer for memory transactions. This variable defines the
858	  buffer address.
859
860config AVB_BUF_SIZE
861	hex "Define AVB buffer SIZE"
862	default FASTBOOT_BUF_SIZE
863	help
864	  AVB requires a buffer for memory transactions. This variable defines the
865	  buffer size.
866
867endif # AVB_VERIFY
868
869config SCP03
870	bool "Build SCP03 - Secure Channel Protocol O3 - controls"
871	depends on OPTEE || SANDBOX
872	depends on TEE
873	help
874	  This option allows U-Boot to enable and or provision SCP03 on an OPTEE
875	  controlled Secured Element.
876
877config SPL_HASH
878	bool # "Support hashing API (SHA1, SHA256, etc.)"
879	help
880	  This provides a way to hash data in memory using various supported
881	  algorithms (such as SHA1, MD5, CRC32). The API is defined in hash.h
882	  and the algorithms it supports are defined in common/hash.c. See
883	  also CMD_HASH for command-line access.
884
885config TPL_HASH
886	bool # "Support hashing API (SHA1, SHA256, etc.)"
887	help
888	  This provides a way to hash data in memory using various supported
889	  algorithms (such as SHA1, MD5, CRC32). The API is defined in hash.h
890	  and the algorithms it supports are defined in common/hash.c. See
891	  also CMD_HASH for command-line access.
892
893config STACKPROTECTOR
894	bool "Stack Protector buffer overflow detection"
895	help
896	  Enable stack smash detection through compiler's stack-protector
897	  canary logic
898
899config SPL_STACKPROTECTOR
900	bool "Stack Protector buffer overflow detection for SPL"
901	depends on STACKPROTECTOR && SPL
902
903config TPL_STACKPROTECTOR
904	bool "Stack Protector buffer overflow detection for TPL"
905	depends on STACKPROTECTOR && TPL
906
907config BOARD_RNG_SEED
908	bool "Provide /chosen/rng-seed property to the linux kernel"
909	help
910	  Selecting this option requires the board to define a
911	  board_rng_seed() function, which should return a buffer
912	  which will be used to populate the /chosen/rng-seed property
913	  in the device tree for the OS being booted.
914
915	  It is up to the board code (and more generally the whole
916	  BSP) where and how to store (or generate) such a seed, how
917	  to ensure a given seed is only used once, how to create a
918	  new seed for use on subsequent boots, and whether or not the
919	  kernel should account any entropy from the given seed.
920
921endmenu
922
923menu "Update support"
924
925config UPDATE_COMMON
926	bool
927	select DFU_WRITE_ALT
928
929config UPDATE_TFTP
930	bool "Auto-update using fitImage via TFTP"
931	depends on FIT && OF_LIBFDT && !MTD_NOR_FLASH
932	select UPDATE_COMMON
933	help
934	  This option allows performing update of NOR with data in fitImage
935	  sent via TFTP boot.
936
937config UPDATE_TFTP_CNT_MAX
938	int "The number of connection retries during auto-update"
939	default 0
940	depends on UPDATE_TFTP || DFU_TFTP
941
942config UPDATE_TFTP_MSEC_MAX
943	int "Delay in mSec to wait for the TFTP server during auto-update"
944	default 100
945	depends on UPDATE_TFTP || DFU_TFTP
946
947config UPDATE_LOAD_ADDR
948	hex "Address in memory to load the update to"
949	depends on UPDATE_TFTP || DFU_TFTP
950	default 0x100000
951	help
952	  This option defines the location in memory to be used to load the
953	  update to, if 'loadaddr' is not set in the environment.
954
955config UPDATE_FIT
956	bool "Firmware update using fitImage"
957	depends on FIT && OF_LIBFDT
958	depends on DFU
959	select UPDATE_COMMON
960	help
961	  This option allows performing update of DFU-capable storage with
962	  data in fitImage.
963
964config ANDROID_AB
965	bool "Android A/B updates"
966	help
967	  If enabled, adds support for the new Android A/B update model. This
968	  allows the bootloader to select which slot to boot from based on the
969	  information provided by userspace via the Android boot_ctrl HAL. This
970	  allows a bootloader to try a new version of the system but roll back
971	  to previous version if the new one didn't boot all the way.
972
973config ANDROID_AB_BACKUP_OFFSET
974	hex "Offset of backup bootloader control"
975	depends on ANDROID_AB
976	default 0x0
977	help
978	  If non-zero, a backup bootloader message starting at this offset in
979	  the partition will tried in the event that the primary one (starting
980	  at offset 0) fails its checksum.
981
982endmenu
983
984menu "Blob list"
985
986config BLOBLIST
987	bool "Support for a bloblist"
988	select CRC32
989	help
990	  This enables support for a bloblist in U-Boot, which can be passed
991	  from TPL to SPL to U-Boot proper (and potentially to Linux). The
992	  blob list supports multiple binary blobs of data, each with a tag,
993	  so that different U-Boot components can store data which can survive
994	  through to the next phase of the boot.
995
996config SPL_BLOBLIST
997	bool "Support for a bloblist in SPL"
998	depends on BLOBLIST && SPL_LIBGENERIC_SUPPORT && SPL_LIBCOMMON_SUPPORT
999	select SPL_CRC32
1000	default y if SPL
1001	help
1002	  This enables a bloblist in SPL. If this is the first part of U-Boot
1003	  to run, then the bloblist is set up in SPL and passed to U-Boot
1004	  proper. If TPL also has a bloblist, then SPL uses the one from there.
1005
1006config TPL_BLOBLIST
1007	bool "Support for a bloblist in TPL"
1008	depends on BLOBLIST && TPL_LIBGENERIC_SUPPORT && TPL_LIBCOMMON_SUPPORT
1009	select TPL_CRC32
1010	default y if TPL
1011	help
1012	  This enables a bloblist in TPL. The bloblist is set up in TPL and
1013	  passed to SPL and U-Boot proper.
1014
1015config VPL_BLOBLIST
1016	bool "Support for a bloblist in VPL"
1017	depends on BLOBLIST && VPL_LIBGENERIC_SUPPORT && VPL_LIBCOMMON_SUPPORT
1018	default y if VPL
1019	help
1020	  This enables a bloblist in VPL. The bloblist is set up in VPL and
1021	  passed to SPL and U-Boot proper.
1022
1023if BLOBLIST
1024
1025choice
1026	prompt "Bloblist location"
1027	help
1028	  Select the location of the bloblist, via various means.
1029
1030config BLOBLIST_FIXED
1031	bool "Place bloblist at a fixed address in memory"
1032	help
1033	  Select this to used a fixed memory address for the bloblist. If the
1034	  bloblist exists at this address from a previous phase, it used as is.
1035	  If not it is created at this address in U-Boot.
1036
1037config BLOBLIST_ALLOC
1038	bool "Allocate bloblist"
1039	help
1040	  Allocate the bloblist using malloc(). This avoids the need to
1041	  specify a fixed address on systems where this is unknown or can
1042	  change at runtime.
1043
1044endchoice
1045
1046config BLOBLIST_ADDR
1047	hex "Address of bloblist"
1048	default 0xb000 if SANDBOX
1049	depends on BLOBLIST_FIXED
1050	help
1051	  Sets the address of the bloblist, set up by the first part of U-Boot
1052	  which runs. Subsequent U-Boot phases typically use the same address.
1053
1054	  This is not used if BLOBLIST_ALLOC is selected.
1055
1056config BLOBLIST_SIZE
1057	hex "Size of bloblist"
1058	default 0x400
1059	help
1060	  Sets the size of the bloblist in bytes. This must include all
1061	  overhead (alignment, bloblist header, record header). The bloblist
1062	  is set up in the first part of U-Boot to run (TPL, SPL or U-Boot
1063	  proper), and this sane bloblist is used for subsequent phases.
1064
1065config BLOBLIST_SIZE_RELOC
1066	hex "Size of bloblist after relocation"
1067	default BLOBLIST_SIZE if BLOBLIST_FIXED || BLOBLIST_ALLOC
1068	default 0x0 if BLOBLIST_PASSAGE
1069	help
1070	  Sets the size of the bloblist in bytes after relocation. Since U-Boot
1071	  has a lot more memory available then, it is possible to use a larger
1072	  size than the one set up by SPL. This bloblist is set up during the
1073	  relocation process.
1074
1075endif # BLOBLIST
1076
1077if SPL_BLOBLIST
1078
1079choice
1080	prompt "Bloblist location in SPL"
1081	help
1082	  Select the location of the bloblist, via various means. Typically
1083	  you should use the same value for SPL as for U-Boot, since they need
1084	  to look in the same place. But if BLOBLIST_ALLOC is used, then a
1085	  fresh bloblist will be created each time, since there is no shared
1086	  address (between phases) for the bloblist.
1087
1088config SPL_BLOBLIST_FIXED
1089	bool "Place bloblist at a fixed address in memory"
1090	help
1091	  Select this to used a fixed memory address for the bloblist. If the
1092	  bloblist exists at this address from a previous phase, it used as is.
1093	  If not it is created at this address in SPL.
1094
1095config SPL_BLOBLIST_ALLOC
1096	bool "Allocate bloblist"
1097	help
1098	  Allocate the bloblist using malloc(). This avoids the need to
1099	  specify a fixed address on systems where this is unknown or can
1100	  change at runtime.
1101
1102endchoice
1103
1104endif # SPL_BLOBLIST
1105
1106if TPL_BLOBLIST
1107
1108choice
1109	prompt "Bloblist location in TPL"
1110	help
1111	  Select the location of the bloblist, via various means. Typically
1112	  you should use the same value for TPL as for U-Boot, since they need
1113	  to look in the same place. But if BLOBLIST_ALLOC is used, then a
1114	  fresh bloblist will be created each time, since there is no shared
1115	  address (between phases) for the bloblist.
1116
1117config TPL_BLOBLIST_FIXED
1118	bool "Place bloblist at a fixed address in memory"
1119	help
1120	  Select this to used a fixed memory address for the bloblist. If the
1121	  bloblist exists at this address from a previous phase, it used as is.
1122	  If not it is created at this address in TPL.
1123
1124config TPL_BLOBLIST_ALLOC
1125	bool "Allocate bloblist"
1126	help
1127	  Allocate the bloblist using malloc(). This avoids the need to
1128	  specify a fixed address on systems where this is unknown or can
1129	  change at runtime.
1130
1131endchoice
1132
1133endif # TPL_BLOBLIST
1134
1135if VPL_BLOBLIST
1136
1137choice
1138	prompt "Bloblist location in VPL"
1139	help
1140	  Select the location of the bloblist, via various means. Typically
1141	  you should use the same value for VPL as for U-Boot, since they need
1142	  to look in the same place. But if BLOBLIST_ALLOC is used, then a
1143	  fresh bloblist will be created each time, since there is no shared
1144	  address (between phases) for the bloblist.
1145
1146config VPL_BLOBLIST_FIXED
1147	bool "Place bloblist at a fixed address in memory"
1148	help
1149	  Select this to used a fixed memory address for the bloblist. If the
1150	  bloblist exists at this address from a previous phase, it used as is.
1151	  If not it is created at this address in VPL.
1152
1153config VPL_BLOBLIST_ALLOC
1154	bool "Allocate bloblist"
1155	help
1156	  Allocate the bloblist using malloc(). This avoids the need to
1157	  specify a fixed address on systems where this is unknown or can
1158	  change at runtime.
1159
1160endchoice
1161
1162endif # VPL_BLOBLIST
1163
1164endmenu
1165
1166source "common/spl/Kconfig"
1167
1168config IMAGE_SIGN_INFO
1169	bool
1170	select SHA1
1171	select SHA256
1172	help
1173	  Enable image_sign_info helper functions.
1174
1175if IMAGE_SIGN_INFO
1176
1177config SPL_IMAGE_SIGN_INFO
1178	bool
1179	select SHA1
1180	select SHA256
1181	help
1182	  Enable image_sign_info helper functions in SPL.
1183
1184config VPL_IMAGE_SIGN_INFO
1185	bool
1186	select SHA1
1187	select SHA256
1188	help
1189	  Enable image_sign_info helper functions in SPL.
1190
1191endif
1192
1193config IO_TRACE
1194	bool
1195