500 lines
13 KiB
Plaintext
500 lines
13 KiB
Plaintext
##
|
|
##
|
|
## 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 "ChromeOS Options"
|
|
default n
|
|
help
|
|
Select configuration defaults appropriate for ChromeOS 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
|
|
|
|
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 PCIE_MEDIATEK
|
|
bool "Support for PCIe devices on MediaTek platforms"
|
|
depends on PCI && !PCI_IO_OPS
|
|
default n
|
|
|
|
config PCIE_QCOM
|
|
bool "Support for PCIe devices on Qualcomm platforms"
|
|
depends on PCI && !PCI_IO_OPS
|
|
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"
|