soc/intel/elkhartlake/bootblock: Do initial SoC commit until bootblock
[coreboot.git] / payloads / libpayload / Kconfig
blobb5dc9a3c8b897ef06c569d9128edf92a35691b20
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 "Chrome OS Options"
60         default n
61         help
62           Select configuration defaults appropriate for Chrome OS 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 REMOTEGDB
83         bool "Remote GDB stub"
84         default n
85         depends on GPL
86         help
87           Enable Remote GDB debugging support.
89 config MEMMAP_RAM_ONLY
90         bool "Only consider RAM entries in memory map for further processing"
91         default n
93 endmenu
95 menu "Architecture Options"
97 choice
98         prompt "Target Architecture"
99         default ARCH_X86
101 config ARCH_ARM
102         bool "ARM"
103         help
104           Support the ARM architecture
106 config ARCH_X86
107         bool "x86"
108         help
109           Support the x86 architecture
111 config ARCH_ARM64
112         bool "ARM64"
113         help
114           Support the ARM64 architecture
116 endchoice
118 config MULTIBOOT
119         bool "Multiboot header support"
120         depends on ARCH_X86
121         default y if !CHROMEOS
123 config HEAP_SIZE
124         int "Heap size"
125         default 131072
126         help
127           This is the heap size (malloc'able size) available
128           to the payload.
130           If unsure, set to 131072 (128K)
132 config STACK_SIZE
133         int "Stack size"
134         default 16384
135         help
136           This is the stack size available to the payload.
138           If unsure, set to 16384 (16K)
140 config BASE_ADDRESS
141         hex "Base address"
142         default 0x04000000 if ARCH_ARM
143         default 0x80100000 if ARCH_ARM64
144         default 0x00100000 if ARCH_X86
145         help
146           This is the base address for the payload.
148           If unsure, set to 0x00100000 on x86,
149           0x04000000 on ARM or 0x80100000 on ARM64.
151 endmenu
153 config USE_MARCH_586
154         bool "Use march=586 qualifier to build"
155         default n
156         depends on ARCH_X86
157         help
158           Allow a platform or processor to select to be compiled using
159           the '-march=i586' option instead of the typical '-march=i686'
161 menu "Standard Libraries"
163 config LIBC
164         bool "Enable C library support"
165         default y
167 config CURSES
168         bool "Build a curses library"
169         default y if !CHROMEOS
171 choice
172         prompt "Curses implementation"
173         default PDCURSES
174         depends on CURSES
176 config TINYCURSES
177         bool "TinyCurses"
178         help
179           TinyCurses was the first curses implementation for libpayload.
180           It features low memory consumption, static allocation of larger
181           data structures (so few or no memory allocation calls) and a
182           reduced feature set.
184 config PDCURSES
185         bool "PDCurses"
186         help
187           libpayload's PDCurses port provides a full features curses
188           implementation, including libpanel, libmenu and libform (which
189           are taken from ncurses).
190           It requires more system resources, in particularily heap memory.
192 endchoice
194 config CBFS
195         bool "CBFS support"
196         default y
197         help
198           CBFS is the archive format of coreboot
200 config LZMA
201         bool "LZMA decoder"
202         default y
203         help
204           LZMA decoder implementation, usable eg. by CBFS,
205           but also externally.
207 config LZ4
208         bool "LZ4 decoder"
209         default y
210         help
211           Decoder implementation for the LZ4 compression algorithm.
212           Adds standalone functions (CBFS support coming soon).
213 endmenu
215 menu "Console Options"
217 config SKIP_CONSOLE_INIT
218         bool "Skip initializing the consoles at startup"
219         default y if CHROMEOS
220         default n
221         help
222           Normally, libpayload will initialize console input/output on startup
223           before the payload itself gets control. This option disables that
224           behavior and leaves console initialization up to the payload.
226 config CBMEM_CONSOLE
227         bool "Send output to the in memory CBMEM console"
228         default y
230 config SERIAL_CONSOLE
231         bool "See output on the serial port console"
232         default y
234 config 8250_SERIAL_CONSOLE
235         bool "8250-compatible serial port driver (including IO and MMIO)"
236         depends on SERIAL_CONSOLE
237         default y if ARCH_X86
239 config S5P_SERIAL_CONSOLE
240         bool "Exynos SOC, S5P compatible serial port driver"
241         depends on SERIAL_CONSOLE
242         default n
244 config IPQ806X_SERIAL_CONSOLE
245         bool "IPQ806x SOC compatible serial port driver"
246         depends on SERIAL_CONSOLE
247         default n
249 config IPQ40XX_SERIAL_CONSOLE
250         bool "IPQ40xx SOC compatible serial port driver"
251         depends on SERIAL_CONSOLE
252         default n
254 config QCS405_SERIAL_CONSOLE
255         bool "QCS405 SOC compatible serial port driver"
256         depends on SERIAL_CONSOLE
257         default n
259 config QUALCOMM_QUPV3_SERIAL_CONSOLE
260         bool "Qualcomm QUPV3 serial port driver"
261         depends on SERIAL_CONSOLE
262         default n
264 config PL011_SERIAL_CONSOLE
265         bool "PL011 compatible serial port driver"
266         depends on 8250_SERIAL_CONSOLE
267         default n
269 config SERIAL_IOBASE
270         ## This default is currently not used on non-x86 systems.
271         hex "Default I/O base for the serial port (default 0x3f8)"
272         depends on SERIAL_CONSOLE && ARCH_X86
273         default 0x3f8
275 config SERIAL_SET_SPEED
276         bool "Override the serial console baud rate"
277         default n
278         depends on SERIAL_CONSOLE
280 config SERIAL_BAUD_RATE
281         int "Serial console baud rate (default 115200)"
282         depends on SERIAL_SET_SPEED
283         default 115200
285 config SERIAL_ACS_FALLBACK
286         bool "Use plain ASCII characters for ACS"
287         default n
288         depends on SERIAL_CONSOLE
289         help
290           The alternate character set (ACS) is used for drawing lines and
291           displaying a couple of other special graphics characters.  The
292           ACS characters generally look good on screen, but can be difficult
293           to cut and paste from a terminal window to a text editor.
295           Say 'y' here if you want to always use plain ASCII characters to
296           approximate the appearance of ACS characters on the serial port
297           console.
299 config VIDEO_CONSOLE
300         bool "See output on a video console"
301         default y
303 config VGA_VIDEO_CONSOLE
304         bool "VGA video console driver"
305         depends on ARCH_X86 && VIDEO_CONSOLE
306         default y if !CHROMEOS
308 config GEODELX_VIDEO_CONSOLE
309         bool "Geode LX video console driver"
310         depends on ARCH_X86 && VIDEO_CONSOLE
311         default n
313 config COREBOOT_VIDEO_CONSOLE
314         bool "coreboot video console driver"
315         depends on VIDEO_CONSOLE && !GEODELX_VIDEO_CONSOLE
316         default y if CHROMEOS
317         default n
318         help
319           Say Y here if coreboot switched to a graphics mode and
320           your payload wants to use it.
322 config COREBOOT_VIDEO_CENTERED
323         bool "Center a classic 80x25 console on bigger screens"
324         depends on COREBOOT_VIDEO_CONSOLE
325         help
326           Say 'y' here if your payload is hardcoded to a 80x25 console. Otherwise
327           its output would look squeezed into the upper-left corner of the screen.
329 config FONT_SCALE_FACTOR
330         int "Scale factor for the included font"
331         depends on GEODELX_VIDEO_CONSOLE || COREBOOT_VIDEO_CONSOLE
332         default 0
333         help
334           By default (value of 0), the scale factor is automatically
335           calculated to ensure at least 130 columns (when possible).
337 config CBGFX_FAST_RESAMPLE
338         bool "CBGFX: use faster (less pretty) image scaling"
339         default n
340         help
341           When payloads use the CBGFX library to draw .BMPs on the screen,
342           they will be resampled with an anti-aliasing filter to scale to the
343           requested output size. The default implementation should normally be
344           fast enough, but if desired this option can make it about 50-100%
345           faster at the cost of quality. (It changes the 'a' parameter in the
346           Lanczos resampling algorithm from 3 to 2.)
348           Only affects .BMPs that aren't already provided at the right size.
350 config PC_I8042
351         bool "A common PC i8042 driver"
352         default y if PC_KEYBOARD || PC_MOUSE
353         default n
354         help
355           To be used by PC_KEYBOARD and PC_MOUSE.
357 config PC_MOUSE
358         bool "Allow input from a PC mouse"
359         default n if CHROMEOS
360         default y if ARCH_X86 # uses IO
361         default n
362         help
363           PS/2 mouse driver on top of PC_I8042.
365 config PC_KEYBOARD
366         bool "Allow input from a PC keyboard"
367         default y if ARCH_X86 # uses IO
368         default n
370 config PC_KEYBOARD_AT_TRANSLATED
371         bool "AT Translation keyboard device"
372         default n
374 config PC_KEYBOARD_LAYOUT_US
375         bool "English (US) keyboard layout"
376         depends on PC_KEYBOARD
377         default y
379 config PC_KEYBOARD_LAYOUT_DE
380         bool "German keyboard layout"
381         depends on PC_KEYBOARD
382         default n
384 endmenu
386 menu "Drivers"
388 config PCI
389         bool "Support for PCI devices"
390         depends on ARCH_X86 # for now
391         default y
393 config NVRAM
394         bool "Support for reading/writing NVRAM bytes"
395         depends on ARCH_X86 # for now
396         default y
398 config MOUSE_CURSOR
399         bool "Support for mouse cursor handling"
400         default y if PC_MOUSE
401         default n
402         help
403           Provides a common interface for various mouse cursor drivers.
404           * Supports up to 32 buttons.
405           * Supports 3 axis mice.
406           * Applies simple cursor acceleration.
407           * Allows to set cursor acceleration and cursor speed.
409 config RTC_PORT_EXTENDED_VIA
410         bool "Extended RTC ports are 0x74/0x75"
411         default n
412         help
413           For recent chipsets with 256 NVRAM bytes, you have to access the
414           upper 128 bytes (128-255) using two different I/O ports,
415           usually 0x72/0x73.
417           On some chipsets this can be a different set of ports, though.
418           The VIA VT8237R for example only recognizes the ports 0x74/0x75
419           for accessing the high 128 NVRAM bytes (as seems to be the case for
420           multiple VIA chipsets).
422           If you want to read or write CMOS bytes on computers with one of
423           these chipsets, say 'y' here.
425 config SPEAKER
426         bool "Support for PC speaker"
427         depends on ARCH_X86
428         default y if !CHROMEOS
430 source "drivers/timer/Kconfig"
431 source "drivers/storage/Kconfig"
432 source "drivers/usb/Kconfig"
434 endmenu
436 menu "Debugging"
437         depends on DEVELOPER
439 config DEBUG_MALLOC
440         bool "Debug memory allocator"
441         default n
442         help
443           Select this option if you want to debug the memory allocator. This
444           option logs all uses of the following functions:
446             void free(void *ptr);
447             void *malloc(size_t size);
448             void *calloc(size_t nmemb, size_t size);
449             void *realloc(void *ptr, size_t size);
450             void *memalign(size_t align, size_t size);
452           Say N here unless you are debugging memory allocator problems.
454 endmenu
456 config BIG_ENDIAN
457         default n
458         bool
460 config LITTLE_ENDIAN
461         default n
462         bool
464 config IO_ADDRESS_SPACE
465         default n
466         bool
467         help
468           This option is turned on if the target system has a separate
469           IO address space. This is typically only the case on x86.
471 source "arch/arm/Kconfig"
472 source "arch/arm64/Kconfig"
473 source "arch/x86/Kconfig"