3 ## Copyright (C) 2008 Advanced Micro Devices, Inc.
4 ## Copyright (C) 2008 coresystems GmbH
6 ## Redistribution and use in source and binary forms, with or without
7 ## modification, are permitted provided that the following conditions
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
30 mainmenu "Libpayload Configuration"
32 menu "Generic Options"
35 bool "GPLv2-licensed Options"
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).
45 bool "Experimental Options"
48 Prompt for experimental functionality. Attention: This is not likely
49 to work without problems
52 bool "Developer Options"
55 Prompt for developer options. These options are only interesting for
56 libpayload developers.
59 bool "ChromeOS Options"
62 Select configuration defaults appropriate for ChromeOS boards.
65 prompt "Compiler to use"
68 This option allows you to select the compiler.
73 Use the GNU Compiler Collection (GCC).
75 config COMPILER_LLVM_CLANG
83 bool "Use link time optimization (LTO)"
85 depends on COMPILER_GCC
87 Compile with link time optimization. This can often decrease the
88 final binary size, but may increase compilation time.
91 bool "Remote GDB stub"
95 Enable Remote GDB debugging support.
97 config MEMMAP_RAM_ONLY
98 bool "Only consider RAM entries in memory map for further processing"
103 menu "Architecture Options"
106 prompt "Target Architecture"
112 Support the ARM architecture
117 Support the x86 architecture
122 Support the ARM64 architecture
125 bool "Mock architecture (for unit tests)"
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.
135 bool "Multiboot header support"
137 default y if !CHROMEOS
143 This is the heap size (malloc'able size) available
146 If unsure, set to 131072 (128K)
152 This is the stack size available to the payload.
154 If unsure, set to 16384 (16K)
158 default 0x04000000 if ARCH_ARM
159 default 0x80100000 if ARCH_ARM64
160 default 0x00100000 if ARCH_X86
161 default 0x00000000 if ARCH_MOCK
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.
171 bool "Use march=586 qualifier to build"
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"
181 bool "Enable C library support"
185 bool "Build a curses library"
186 default y if !CHROMEOS
189 prompt "Curses implementation"
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
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.
211 source "libcbfs/Kconfig"
217 LZMA decoder implementation, usable eg. by CBFS,
224 Decoder implementation for the LZ4 compression algorithm.
225 Adds standalone functions (CBFS support coming soon).
227 source "vboot/Kconfig"
231 menu "Console Options"
233 config SKIP_CONSOLE_INIT
234 bool "Skip initializing the consoles at startup"
235 default y if CHROMEOS
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.
243 bool "Send output to the in memory CBMEM console"
246 config SERIAL_CONSOLE
247 bool "See output on the serial port console"
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
260 config IPQ806X_SERIAL_CONSOLE
261 bool "IPQ806x SOC compatible serial port driver"
262 depends on SERIAL_CONSOLE
265 config IPQ40XX_SERIAL_CONSOLE
266 bool "IPQ40xx SOC compatible serial port driver"
267 depends on SERIAL_CONSOLE
270 config QCS405_SERIAL_CONSOLE
271 bool "QCS405 SOC compatible serial port driver"
272 depends on SERIAL_CONSOLE
275 config QUALCOMM_QUPV3_SERIAL_CONSOLE
276 bool "Qualcomm QUPV3 serial port driver"
277 depends on SERIAL_CONSOLE
280 config PL011_SERIAL_CONSOLE
281 bool "PL011 compatible serial port driver"
282 depends on 8250_SERIAL_CONSOLE
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
291 config SERIAL_SET_SPEED
292 bool "Override the serial console baud rate"
294 depends on SERIAL_CONSOLE
296 config SERIAL_BAUD_RATE
297 int "Serial console baud rate (default 115200)"
298 depends on SERIAL_SET_SPEED
301 config SERIAL_ACS_FALLBACK
302 bool "Use plain ASCII characters for ACS"
304 depends on SERIAL_CONSOLE
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
316 bool "See output on a video console"
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
329 config COREBOOT_VIDEO_CONSOLE
330 bool "coreboot video console driver"
331 depends on VIDEO_CONSOLE && !GEODELX_VIDEO_CONSOLE
332 default y if CHROMEOS
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
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
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"
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.
367 bool "A common PC i8042 driver"
368 default y if PC_KEYBOARD || PC_MOUSE
371 To be used by PC_KEYBOARD and PC_MOUSE.
374 bool "Allow input from a PC mouse"
375 default n if CHROMEOS
376 default y if ARCH_X86 # uses IO
379 PS/2 mouse driver on top of PC_I8042.
382 bool "Allow input from a PC keyboard"
383 default y if ARCH_X86 # uses IO
386 config PC_KEYBOARD_LAYOUT_US
387 bool "English (US) keyboard layout"
388 depends on PC_KEYBOARD
391 config PC_KEYBOARD_LAYOUT_DE
392 bool "German keyboard layout"
393 depends on PC_KEYBOARD
396 config PC_KEYBOARD_TRANSLATION
397 bool "Enable or Disable translation in PC keyboard set 2 on exit"
398 depends on PC_KEYBOARD
406 bool "Support for PCI devices"
407 default y if ARCH_X86
411 bool "Support for PCI devices with port IO"
412 depends on PCI && IO_ADDRESS_SPACE
413 default y if ARCH_X86
417 bool "Support for PCIe devices on MediaTek platforms"
418 depends on PCI && !PCI_IO_OPS
422 bool "Support for PCIe devices on Qualcomm platforms"
423 depends on PCI && !PCI_IO_OPS
427 bool "Support for reading/writing NVRAM bytes"
428 depends on ARCH_X86 # for now
432 bool "Support for mouse cursor handling"
433 default y if PC_MOUSE
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"
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,
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.
459 bool "Support for PC speaker"
461 default y if !CHROMEOS
463 source "drivers/timer/Kconfig"
464 source "drivers/storage/Kconfig"
465 source "drivers/usb/Kconfig"
473 bool "Debug memory allocator"
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.
497 config IO_ADDRESS_SPACE
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"