| ## |
| ## |
| ## Copyright (C) 2008 Advanced Micro Devices, Inc. |
| ## Copyright (C) 2008 coresystems GmbH |
| ## |
| ## Redistribution and use in source and binary forms, with or without |
| ## modification, are permitted provided that the following conditions |
| ## are met: |
| ## 1. Redistributions of source code must retain the above copyright |
| ## notice, this list of conditions and the following disclaimer. |
| ## 2. Redistributions in binary form must reproduce the above copyright |
| ## notice, this list of conditions and the following disclaimer in the |
| ## documentation and/or other materials provided with the distribution. |
| ## 3. The name of the author may not be used to endorse or promote products |
| ## derived from this software without specific prior written permission. |
| ## |
| ## THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND |
| ## ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| ## IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
| ## ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE |
| ## FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
| ## DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
| ## OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
| ## HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
| ## LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
| ## OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
| ## SUCH DAMAGE. |
| ## |
| |
| mainmenu "Libpayload Configuration" |
| |
| menu "Generic Options" |
| |
| config GPL |
| bool "GPLv2-licensed Options" |
| default y if CHROMEOS |
| default n |
| help |
| Prompt for options that will build code licensed under the GNU General |
| Public License (version 2). This will subject the whole payload to the |
| terms of this license (including its provision to release all sources, |
| please see the LICENSE_GPL file for details). |
| |
| config EXPERIMENTAL |
| bool "Experimental Options" |
| default n |
| help |
| Prompt for experimental functionality. Attention: This is not likely |
| to work without problems |
| |
| config DEVELOPER |
| bool "Developer Options" |
| default n |
| help |
| Prompt for developer options. These options are only interesting for |
| libpayload developers. |
| |
| config CHROMEOS |
| bool "Chrome OS Options" |
| default n |
| help |
| Select configuration defaults appropriate for Chrome OS boards. |
| |
| choice |
| prompt "Compiler to use" |
| default COMPILER_GCC |
| help |
| This option allows you to select the compiler. |
| |
| config COMPILER_GCC |
| bool "GCC" |
| help |
| Use the GNU Compiler Collection (GCC). |
| |
| config COMPILER_LLVM_CLANG |
| bool "LLVM/clang" |
| help |
| Use LLVM/clang. |
| |
| endchoice |
| |
| config LTO |
| bool "Use link time optimization (LTO)" |
| default n |
| depends on COMPILER_GCC |
| help |
| Compile with link time optimization. This can often decrease the |
| final binary size, but may increase compilation time. |
| |
| config REMOTEGDB |
| bool "Remote GDB stub" |
| default n |
| depends on GPL |
| help |
| Enable Remote GDB debugging support. |
| |
| config MEMMAP_RAM_ONLY |
| bool "Only consider RAM entries in memory map for further processing" |
| default n |
| |
| endmenu |
| |
| menu "Architecture Options" |
| |
| choice |
| prompt "Target Architecture" |
| default ARCH_X86 |
| |
| config ARCH_ARM |
| bool "ARM" |
| help |
| Support the ARM architecture |
| |
| config ARCH_X86 |
| bool "x86" |
| help |
| Support the x86 architecture |
| |
| config ARCH_ARM64 |
| bool "ARM64" |
| help |
| Support the ARM64 architecture |
| |
| config ARCH_MOCK |
| bool "Mock architecture (for unit tests)" |
| help |
| This enables the mock architecture (for unit tests) that is intended |
| to be used for testing purposes, to either test payloads or libpayload itself. |
| It provides necessary headers, but requires mocking (providing implementation |
| for) arch-specific functions. |
| |
| endchoice |
| |
| config MULTIBOOT |
| bool "Multiboot header support" |
| depends on ARCH_X86 |
| default y if !CHROMEOS |
| |
| config HEAP_SIZE |
| int "Heap size" |
| default 131072 |
| help |
| This is the heap size (malloc'able size) available |
| to the payload. |
| |
| If unsure, set to 131072 (128K) |
| |
| config STACK_SIZE |
| int "Stack size" |
| default 16384 |
| help |
| This is the stack size available to the payload. |
| |
| If unsure, set to 16384 (16K) |
| |
| config BASE_ADDRESS |
| hex "Base address" |
| default 0x04000000 if ARCH_ARM |
| default 0x80100000 if ARCH_ARM64 |
| default 0x00100000 if ARCH_X86 |
| default 0x00000000 if ARCH_MOCK |
| help |
| This is the base address for the payload. |
| |
| If unsure, set to 0x00100000 on x86, |
| 0x04000000 on ARM or 0x80100000 on ARM64. |
| |
| endmenu |
| |
| config USE_MARCH_586 |
| bool "Use march=586 qualifier to build" |
| default n |
| depends on ARCH_X86 |
| help |
| Allow a platform or processor to select to be compiled using |
| the '-march=i586' option instead of the typical '-march=i686' |
| |
| menu "Standard Libraries" |
| |
| config LIBC |
| bool "Enable C library support" |
| default y |
| |
| config CURSES |
| bool "Build a curses library" |
| default y if !CHROMEOS |
| |
| choice |
| prompt "Curses implementation" |
| default PDCURSES |
| depends on CURSES |
| |
| config TINYCURSES |
| bool "TinyCurses" |
| help |
| TinyCurses was the first curses implementation for libpayload. |
| It features low memory consumption, static allocation of larger |
| data structures (so few or no memory allocation calls) and a |
| reduced feature set. |
| |
| config PDCURSES |
| bool "PDCurses" |
| help |
| libpayload's PDCurses port provides a full features curses |
| implementation, including libpanel, libmenu and libform (which |
| are taken from ncurses). |
| It requires more system resources, in particularily heap memory. |
| |
| endchoice |
| |
| source "libcbfs/Kconfig" |
| |
| config LZMA |
| bool "LZMA decoder" |
| default y |
| help |
| LZMA decoder implementation, usable eg. by CBFS, |
| but also externally. |
| |
| config LZ4 |
| bool "LZ4 decoder" |
| default y |
| help |
| Decoder implementation for the LZ4 compression algorithm. |
| Adds standalone functions (CBFS support coming soon). |
| |
| source "vboot/Kconfig" |
| |
| endmenu |
| |
| menu "Console Options" |
| |
| config SKIP_CONSOLE_INIT |
| bool "Skip initializing the consoles at startup" |
| default y if CHROMEOS |
| default n |
| help |
| Normally, libpayload will initialize console input/output on startup |
| before the payload itself gets control. This option disables that |
| behavior and leaves console initialization up to the payload. |
| |
| config CBMEM_CONSOLE |
| bool "Send output to the in memory CBMEM console" |
| default y |
| |
| config SERIAL_CONSOLE |
| bool "See output on the serial port console" |
| default y |
| |
| config 8250_SERIAL_CONSOLE |
| bool "8250-compatible serial port driver (including IO and MMIO)" |
| depends on SERIAL_CONSOLE |
| default y if ARCH_X86 |
| |
| config S5P_SERIAL_CONSOLE |
| bool "Exynos SOC, S5P compatible serial port driver" |
| depends on SERIAL_CONSOLE |
| default n |
| |
| config IPQ806X_SERIAL_CONSOLE |
| bool "IPQ806x SOC compatible serial port driver" |
| depends on SERIAL_CONSOLE |
| default n |
| |
| config IPQ40XX_SERIAL_CONSOLE |
| bool "IPQ40xx SOC compatible serial port driver" |
| depends on SERIAL_CONSOLE |
| default n |
| |
| config QCS405_SERIAL_CONSOLE |
| bool "QCS405 SOC compatible serial port driver" |
| depends on SERIAL_CONSOLE |
| default n |
| |
| config QUALCOMM_QUPV3_SERIAL_CONSOLE |
| bool "Qualcomm QUPV3 serial port driver" |
| depends on SERIAL_CONSOLE |
| default n |
| |
| config PL011_SERIAL_CONSOLE |
| bool "PL011 compatible serial port driver" |
| depends on 8250_SERIAL_CONSOLE |
| default n |
| |
| config SERIAL_IOBASE |
| ## This default is currently not used on non-x86 systems. |
| hex "Default I/O base for the serial port (default 0x3f8)" |
| depends on SERIAL_CONSOLE && ARCH_X86 |
| default 0x3f8 |
| |
| config SERIAL_SET_SPEED |
| bool "Override the serial console baud rate" |
| default n |
| depends on SERIAL_CONSOLE |
| |
| config SERIAL_BAUD_RATE |
| int "Serial console baud rate (default 115200)" |
| depends on SERIAL_SET_SPEED |
| default 115200 |
| |
| config SERIAL_ACS_FALLBACK |
| bool "Use plain ASCII characters for ACS" |
| default n |
| depends on SERIAL_CONSOLE |
| help |
| The alternate character set (ACS) is used for drawing lines and |
| displaying a couple of other special graphics characters. The |
| ACS characters generally look good on screen, but can be difficult |
| to cut and paste from a terminal window to a text editor. |
| |
| Say 'y' here if you want to always use plain ASCII characters to |
| approximate the appearance of ACS characters on the serial port |
| console. |
| |
| config VIDEO_CONSOLE |
| bool "See output on a video console" |
| default y |
| |
| config VGA_VIDEO_CONSOLE |
| bool "VGA video console driver" |
| depends on ARCH_X86 && VIDEO_CONSOLE |
| default y if !CHROMEOS |
| |
| config GEODELX_VIDEO_CONSOLE |
| bool "Geode LX video console driver" |
| depends on ARCH_X86 && VIDEO_CONSOLE |
| default n |
| |
| config COREBOOT_VIDEO_CONSOLE |
| bool "coreboot video console driver" |
| depends on VIDEO_CONSOLE && !GEODELX_VIDEO_CONSOLE |
| default y if CHROMEOS |
| default n |
| help |
| Say Y here if coreboot switched to a graphics mode and |
| your payload wants to use it. |
| |
| config COREBOOT_VIDEO_CENTERED |
| bool "Center a classic 80x25 console on bigger screens" |
| depends on COREBOOT_VIDEO_CONSOLE |
| help |
| Say 'y' here if your payload is hardcoded to a 80x25 console. Otherwise |
| its output would look squeezed into the upper-left corner of the screen. |
| |
| config FONT_SCALE_FACTOR |
| int "Scale factor for the included font" |
| depends on GEODELX_VIDEO_CONSOLE || COREBOOT_VIDEO_CONSOLE |
| default 0 |
| help |
| By default (value of 0), the scale factor is automatically |
| calculated to ensure at least 130 columns (when possible). |
| |
| config CBGFX_FAST_RESAMPLE |
| bool "CBGFX: use faster (less pretty) image scaling" |
| default n |
| help |
| When payloads use the CBGFX library to draw .BMPs on the screen, |
| they will be resampled with an anti-aliasing filter to scale to the |
| requested output size. The default implementation should normally be |
| fast enough, but if desired this option can make it about 50-100% |
| faster at the cost of quality. (It changes the 'a' parameter in the |
| Lanczos resampling algorithm from 3 to 2.) |
| |
| Only affects .BMPs that aren't already provided at the right size. |
| |
| config PC_I8042 |
| bool "A common PC i8042 driver" |
| default y if PC_KEYBOARD || PC_MOUSE |
| default n |
| help |
| To be used by PC_KEYBOARD and PC_MOUSE. |
| |
| config PC_MOUSE |
| bool "Allow input from a PC mouse" |
| default n if CHROMEOS |
| default y if ARCH_X86 # uses IO |
| default n |
| help |
| PS/2 mouse driver on top of PC_I8042. |
| |
| config PC_KEYBOARD |
| bool "Allow input from a PC keyboard" |
| default y if ARCH_X86 # uses IO |
| default n |
| |
| config PC_KEYBOARD_LAYOUT_US |
| bool "English (US) keyboard layout" |
| depends on PC_KEYBOARD |
| default y |
| |
| config PC_KEYBOARD_LAYOUT_DE |
| bool "German keyboard layout" |
| depends on PC_KEYBOARD |
| default n |
| |
| config PC_KEYBOARD_TRANSLATION |
| bool "Enable or Disable translation in PC keyboard set 2 on exit" |
| depends on PC_KEYBOARD |
| default y |
| |
| endmenu |
| |
| menu "Drivers" |
| |
| config PCI |
| bool "Support for PCI devices" |
| default y if ARCH_X86 |
| default n |
| |
| config PCI_IO_OPS |
| bool "Support for PCI devices with port IO" |
| depends on PCI && IO_ADDRESS_SPACE |
| default y if ARCH_X86 |
| default n |
| |
| config NVRAM |
| bool "Support for reading/writing NVRAM bytes" |
| depends on ARCH_X86 # for now |
| default y |
| |
| config MOUSE_CURSOR |
| bool "Support for mouse cursor handling" |
| default y if PC_MOUSE |
| default n |
| help |
| Provides a common interface for various mouse cursor drivers. |
| * Supports up to 32 buttons. |
| * Supports 3 axis mice. |
| * Applies simple cursor acceleration. |
| * Allows to set cursor acceleration and cursor speed. |
| |
| config RTC_PORT_EXTENDED_VIA |
| bool "Extended RTC ports are 0x74/0x75" |
| default n |
| help |
| For recent chipsets with 256 NVRAM bytes, you have to access the |
| upper 128 bytes (128-255) using two different I/O ports, |
| usually 0x72/0x73. |
| |
| On some chipsets this can be a different set of ports, though. |
| The VIA VT8237R for example only recognizes the ports 0x74/0x75 |
| for accessing the high 128 NVRAM bytes (as seems to be the case for |
| multiple VIA chipsets). |
| |
| If you want to read or write CMOS bytes on computers with one of |
| these chipsets, say 'y' here. |
| |
| config SPEAKER |
| bool "Support for PC speaker" |
| depends on ARCH_X86 |
| default y if !CHROMEOS |
| |
| source "drivers/timer/Kconfig" |
| source "drivers/storage/Kconfig" |
| source "drivers/usb/Kconfig" |
| |
| endmenu |
| |
| menu "Debugging" |
| depends on DEVELOPER |
| |
| config DEBUG_MALLOC |
| bool "Debug memory allocator" |
| default n |
| help |
| Select this option if you want to debug the memory allocator. This |
| option logs all uses of the following functions: |
| |
| void free(void *ptr); |
| void *malloc(size_t size); |
| void *calloc(size_t nmemb, size_t size); |
| void *realloc(void *ptr, size_t size); |
| void *memalign(size_t align, size_t size); |
| |
| Say N here unless you are debugging memory allocator problems. |
| |
| endmenu |
| |
| config BIG_ENDIAN |
| default n |
| bool |
| |
| config LITTLE_ENDIAN |
| default n |
| bool |
| |
| config IO_ADDRESS_SPACE |
| default n |
| bool |
| help |
| This option is turned on if the target system has a separate |
| IO address space. This is typically only the case on x86. |
| |
| source "arch/arm/Kconfig" |
| source "arch/arm64/Kconfig" |
| source "arch/x86/Kconfig" |
| source "arch/mock/Kconfig" |