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