mb/google/brya/var/omnigul: Modify NVMe and UFS Storage support
[coreboot.git] / payloads / libpayload / Kconfig
blobfcef18a7f0f7f52553c57703050872cd84b072b5
1 ##
2 ##
3 ## Copyright (C) 2008 Advanced Micro Devices, Inc.
4 ## Copyright (C) 2008 coresystems GmbH
5 ##
6 ## Redistribution and use in source and binary forms, with or without
7 ## modification, are permitted provided that the following conditions
8 ## are met:
9 ## 1. Redistributions of source code must retain the above copyright
10 ##    notice, this list of conditions and the following disclaimer.
11 ## 2. Redistributions in binary form must reproduce the above copyright
12 ##    notice, this list of conditions and the following disclaimer in the
13 ##    documentation and/or other materials provided with the distribution.
14 ## 3. The name of the author may not be used to endorse or promote products
15 ##    derived from this software without specific prior written permission.
17 ## THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18 ## ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 ## IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 ## ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21 ## FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22 ## DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23 ## OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24 ## HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 ## LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26 ## OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 ## SUCH DAMAGE.
30 mainmenu "Libpayload Configuration"
32 menu "Generic Options"
34 config GPL
35         bool "GPLv2-licensed Options"
36         default y if CHROMEOS
37         default n
38         help
39           Prompt for options that will build code licensed under the GNU General
40           Public License (version 2). This will subject the whole payload to the
41           terms of this license (including its provision to release all sources,
42           please see the LICENSE_GPL file for details).
44 config EXPERIMENTAL
45         bool "Experimental Options"
46         default n
47         help
48           Prompt for experimental functionality. Attention: This is not likely
49           to work without problems
51 config DEVELOPER
52         bool "Developer Options"
53         default n
54         help
55           Prompt for developer options. These options are only interesting for
56           libpayload developers.
58 config CHROMEOS
59         bool "ChromeOS Options"
60         default n
61         help
62           Select configuration defaults appropriate for ChromeOS boards.
64 choice
65         prompt "Compiler to use"
66         default COMPILER_GCC
67         help
68           This option allows you to select the compiler.
70 config COMPILER_GCC
71         bool "GCC"
72         help
73           Use the GNU Compiler Collection (GCC).
75 config COMPILER_LLVM_CLANG
76         bool "LLVM/clang"
77         help
78           Use LLVM/clang.
80 endchoice
82 config LTO
83         bool "Use link time optimization (LTO)"
84         default n
85         depends on COMPILER_GCC
86         help
87           Compile with link time optimization. This can often decrease the
88           final binary size, but may increase compilation time.
90 config REMOTEGDB
91         bool "Remote GDB stub"
92         default n
93         depends on GPL
94         help
95           Enable Remote GDB debugging support.
97 config MEMMAP_RAM_ONLY
98         bool "Only consider RAM entries in memory map for further processing"
99         default n
101 endmenu
103 menu "Architecture Options"
105 choice
106         prompt "Target Architecture"
107         default ARCH_X86
109 config ARCH_ARM
110         bool "ARM"
111         help
112           Support the ARM architecture
114 config ARCH_X86
115         bool "x86"
116         help
117           Support the x86 architecture
119 config ARCH_ARM64
120         bool "ARM64"
121         help
122           Support the ARM64 architecture
124 config ARCH_MOCK
125         bool "Mock architecture (for unit tests)"
126         help
127           This enables the mock architecture (for unit tests) that is intended
128           to be used for testing purposes, to either test payloads or libpayload itself.
129           It provides necessary headers, but requires mocking (providing implementation
130           for) arch-specific functions.
132 endchoice
134 config MULTIBOOT
135         bool "Multiboot header support"
136         depends on ARCH_X86
137         default y if !CHROMEOS
139 config HEAP_SIZE
140         int "Heap size"
141         default 131072
142         help
143           This is the heap size (malloc'able size) available
144           to the payload.
146           If unsure, set to 131072 (128K)
148 config STACK_SIZE
149         int "Stack size"
150         default 16384
151         help
152           This is the stack size available to the payload.
154           If unsure, set to 16384 (16K)
156 config BASE_ADDRESS
157         hex "Base address"
158         default 0x04000000 if ARCH_ARM
159         default 0x80100000 if ARCH_ARM64
160         default 0x00100000 if ARCH_X86
161         default 0x00000000 if ARCH_MOCK
162         help
163           This is the base address for the payload.
165           If unsure, set to 0x00100000 on x86,
166           0x04000000 on ARM or 0x80100000 on ARM64.
168 endmenu
170 config USE_MARCH_586
171         bool "Use march=586 qualifier to build"
172         default n
173         depends on ARCH_X86
174         help
175           Allow a platform or processor to select to be compiled using
176           the '-march=i586' option instead of the typical '-march=i686'
178 menu "Standard Libraries"
180 config LIBC
181         bool "Enable C library support"
182         default y
184 config CURSES
185         bool "Build a curses library"
186         default y if !CHROMEOS
188 choice
189         prompt "Curses implementation"
190         default PDCURSES
191         depends on CURSES
193 config TINYCURSES
194         bool "TinyCurses"
195         help
196           TinyCurses was the first curses implementation for libpayload.
197           It features low memory consumption, static allocation of larger
198           data structures (so few or no memory allocation calls) and a
199           reduced feature set.
201 config PDCURSES
202         bool "PDCurses"
203         help
204           libpayload's PDCurses port provides a full features curses
205           implementation, including libpanel, libmenu and libform (which
206           are taken from ncurses).
207           It requires more system resources, in particularily heap memory.
209 endchoice
211 source "libcbfs/Kconfig"
213 config LZMA
214         bool "LZMA decoder"
215         default y
216         help
217           LZMA decoder implementation, usable eg. by CBFS,
218           but also externally.
220 config LZ4
221         bool "LZ4 decoder"
222         default y
223         help
224           Decoder implementation for the LZ4 compression algorithm.
225           Adds standalone functions (CBFS support coming soon).
227 source "vboot/Kconfig"
229 endmenu
231 menu "Console Options"
233 config SKIP_CONSOLE_INIT
234         bool "Skip initializing the consoles at startup"
235         default y if CHROMEOS
236         default n
237         help
238           Normally, libpayload will initialize console input/output on startup
239           before the payload itself gets control. This option disables that
240           behavior and leaves console initialization up to the payload.
242 config CBMEM_CONSOLE
243         bool "Send output to the in memory CBMEM console"
244         default y
246 config SERIAL_CONSOLE
247         bool "See output on the serial port console"
248         default y
250 config 8250_SERIAL_CONSOLE
251         bool "8250-compatible serial port driver (including IO and MMIO)"
252         depends on SERIAL_CONSOLE
253         default y if ARCH_X86
255 config S5P_SERIAL_CONSOLE
256         bool "Exynos SOC, S5P compatible serial port driver"
257         depends on SERIAL_CONSOLE
258         default n
260 config IPQ806X_SERIAL_CONSOLE
261         bool "IPQ806x SOC compatible serial port driver"
262         depends on SERIAL_CONSOLE
263         default n
265 config IPQ40XX_SERIAL_CONSOLE
266         bool "IPQ40xx SOC compatible serial port driver"
267         depends on SERIAL_CONSOLE
268         default n
270 config QCS405_SERIAL_CONSOLE
271         bool "QCS405 SOC compatible serial port driver"
272         depends on SERIAL_CONSOLE
273         default n
275 config QUALCOMM_QUPV3_SERIAL_CONSOLE
276         bool "Qualcomm QUPV3 serial port driver"
277         depends on SERIAL_CONSOLE
278         default n
280 config PL011_SERIAL_CONSOLE
281         bool "PL011 compatible serial port driver"
282         depends on 8250_SERIAL_CONSOLE
283         default n
285 config SERIAL_IOBASE
286         ## This default is currently not used on non-x86 systems.
287         hex "Default I/O base for the serial port (default 0x3f8)"
288         depends on SERIAL_CONSOLE && ARCH_X86
289         default 0x3f8
291 config SERIAL_SET_SPEED
292         bool "Override the serial console baud rate"
293         default n
294         depends on SERIAL_CONSOLE
296 config SERIAL_BAUD_RATE
297         int "Serial console baud rate (default 115200)"
298         depends on SERIAL_SET_SPEED
299         default 115200
301 config SERIAL_ACS_FALLBACK
302         bool "Use plain ASCII characters for ACS"
303         default n
304         depends on SERIAL_CONSOLE
305         help
306           The alternate character set (ACS) is used for drawing lines and
307           displaying a couple of other special graphics characters.  The
308           ACS characters generally look good on screen, but can be difficult
309           to cut and paste from a terminal window to a text editor.
311           Say 'y' here if you want to always use plain ASCII characters to
312           approximate the appearance of ACS characters on the serial port
313           console.
315 config VIDEO_CONSOLE
316         bool "See output on a video console"
317         default y
319 config VGA_VIDEO_CONSOLE
320         bool "VGA video console driver"
321         depends on ARCH_X86 && VIDEO_CONSOLE
322         default y if !CHROMEOS
324 config GEODELX_VIDEO_CONSOLE
325         bool "Geode LX video console driver"
326         depends on ARCH_X86 && VIDEO_CONSOLE
327         default n
329 config COREBOOT_VIDEO_CONSOLE
330         bool "coreboot video console driver"
331         depends on VIDEO_CONSOLE && !GEODELX_VIDEO_CONSOLE
332         default y if CHROMEOS
333         default n
334         help
335           Say Y here if coreboot switched to a graphics mode and
336           your payload wants to use it.
338 config COREBOOT_VIDEO_CENTERED
339         bool "Center a classic 80x25 console on bigger screens"
340         depends on COREBOOT_VIDEO_CONSOLE
341         help
342           Say 'y' here if your payload is hardcoded to a 80x25 console. Otherwise
343           its output would look squeezed into the upper-left corner of the screen.
345 config FONT_SCALE_FACTOR
346         int "Scale factor for the included font"
347         depends on GEODELX_VIDEO_CONSOLE || COREBOOT_VIDEO_CONSOLE
348         default 0
349         help
350           By default (value of 0), the scale factor is automatically
351           calculated to ensure at least 130 columns (when possible).
353 config CBGFX_FAST_RESAMPLE
354         bool "CBGFX: use faster (less pretty) image scaling"
355         default n
356         help
357           When payloads use the CBGFX library to draw .BMPs on the screen,
358           they will be resampled with an anti-aliasing filter to scale to the
359           requested output size. The default implementation should normally be
360           fast enough, but if desired this option can make it about 50-100%
361           faster at the cost of quality. (It changes the 'a' parameter in the
362           Lanczos resampling algorithm from 3 to 2.)
364           Only affects .BMPs that aren't already provided at the right size.
366 config PC_I8042
367         bool "A common PC i8042 driver"
368         default y if PC_KEYBOARD || PC_MOUSE
369         default n
370         help
371           To be used by PC_KEYBOARD and PC_MOUSE.
373 config PC_MOUSE
374         bool "Allow input from a PC mouse"
375         default n if CHROMEOS
376         default y if ARCH_X86 # uses IO
377         default n
378         help
379           PS/2 mouse driver on top of PC_I8042.
381 config PC_KEYBOARD
382         bool "Allow input from a PC keyboard"
383         default y if ARCH_X86 # uses IO
384         default n
386 config PC_KEYBOARD_LAYOUT_US
387         bool "English (US) keyboard layout"
388         depends on PC_KEYBOARD
389         default y
391 config PC_KEYBOARD_LAYOUT_DE
392         bool "German keyboard layout"
393         depends on PC_KEYBOARD
394         default n
396 config PC_KEYBOARD_TRANSLATION
397         bool "Enable or Disable translation in PC keyboard set 2 on exit"
398         depends on PC_KEYBOARD
399         default y
401 endmenu
403 menu "Drivers"
405 config PCI
406         bool "Support for PCI devices"
407         default y if ARCH_X86
408         default n
410 config PCI_IO_OPS
411         bool "Support for PCI devices with port IO"
412         depends on PCI && IO_ADDRESS_SPACE
413         default y if ARCH_X86
414         default n
416 config PCIE_MEDIATEK
417         bool "Support for PCIe devices on MediaTek platforms"
418         depends on PCI && !PCI_IO_OPS
419         default n
421 config PCIE_QCOM
422         bool "Support for PCIe devices on Qualcomm platforms"
423         depends on PCI && !PCI_IO_OPS
424         default n
426 config NVRAM
427         bool "Support for reading/writing NVRAM bytes"
428         depends on ARCH_X86 # for now
429         default y
431 config MOUSE_CURSOR
432         bool "Support for mouse cursor handling"
433         default y if PC_MOUSE
434         default n
435         help
436           Provides a common interface for various mouse cursor drivers.
437           * Supports up to 32 buttons.
438           * Supports 3 axis mice.
439           * Applies simple cursor acceleration.
440           * Allows to set cursor acceleration and cursor speed.
442 config RTC_PORT_EXTENDED_VIA
443         bool "Extended RTC ports are 0x74/0x75"
444         default n
445         help
446           For recent chipsets with 256 NVRAM bytes, you have to access the
447           upper 128 bytes (128-255) using two different I/O ports,
448           usually 0x72/0x73.
450           On some chipsets this can be a different set of ports, though.
451           The VIA VT8237R for example only recognizes the ports 0x74/0x75
452           for accessing the high 128 NVRAM bytes (as seems to be the case for
453           multiple VIA chipsets).
455           If you want to read or write CMOS bytes on computers with one of
456           these chipsets, say 'y' here.
458 config SPEAKER
459         bool "Support for PC speaker"
460         depends on ARCH_X86
461         default y if !CHROMEOS
463 source "drivers/timer/Kconfig"
464 source "drivers/storage/Kconfig"
465 source "drivers/usb/Kconfig"
467 endmenu
469 menu "Debugging"
470         depends on DEVELOPER
472 config DEBUG_MALLOC
473         bool "Debug memory allocator"
474         default n
475         help
476           Select this option if you want to debug the memory allocator. This
477           option logs all uses of the following functions:
479             void free(void *ptr);
480             void *malloc(size_t size);
481             void *calloc(size_t nmemb, size_t size);
482             void *realloc(void *ptr, size_t size);
483             void *memalign(size_t align, size_t size);
485           Say N here unless you are debugging memory allocator problems.
487 endmenu
489 config BIG_ENDIAN
490         default n
491         bool
493 config LITTLE_ENDIAN
494         default n
495         bool
497 config IO_ADDRESS_SPACE
498         default n
499         bool
500         help
501           This option is turned on if the target system has a separate
502           IO address space. This is typically only the case on x86.
504 source "arch/arm/Kconfig"
505 source "arch/arm64/Kconfig"
506 source "arch/x86/Kconfig"
507 source "arch/mock/Kconfig"