637 lines
15 KiB
Plaintext
637 lines
15 KiB
Plaintext
##
|
|
## This file is part of the libpayload project.
|
|
##
|
|
## 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 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.
|
|
|
|
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 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_MIPS
|
|
bool "MIPS"
|
|
help
|
|
Support the MIPS architecture
|
|
|
|
endchoice
|
|
|
|
config MULTIBOOT
|
|
bool "Multiboot header support"
|
|
depends on ARCH_X86
|
|
default y
|
|
|
|
endmenu
|
|
|
|
menu "Standard Libraries"
|
|
|
|
config LIBC
|
|
bool "Enable C library support"
|
|
default y
|
|
|
|
config CURSES
|
|
bool "Build a curses library"
|
|
default y
|
|
|
|
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
|
|
|
|
config CBFS
|
|
bool "CBFS support"
|
|
default y
|
|
help
|
|
CBFS is the archive format of coreboot
|
|
|
|
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).
|
|
endmenu
|
|
|
|
menu "Console Options"
|
|
|
|
config SKIP_CONSOLE_INIT
|
|
bool "Skip initializing the consoles at startup"
|
|
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
|
|
|
|
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 BG4CD_SERIAL_CONSOLE
|
|
bool "Serial port driver for Marvell's BG4CD"
|
|
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
|
|
|
|
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 n
|
|
help
|
|
Say Y here if coreboot switched to a graphics mode and
|
|
your payload wants to use it.
|
|
|
|
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
|
|
|
|
endmenu
|
|
|
|
menu "Drivers"
|
|
|
|
config PCI
|
|
bool "Support for PCI devices"
|
|
depends on ARCH_X86 # for now
|
|
default y
|
|
|
|
config NVRAM
|
|
bool "Support for reading/writing NVRAM bytes"
|
|
depends on ARCH_X86 # for now
|
|
default y
|
|
|
|
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
|
|
|
|
config STORAGE
|
|
bool "Support for storage devices"
|
|
default y
|
|
help
|
|
Select this option if you want support for storage devices (like
|
|
hard drives, memory sticks or optical drives).
|
|
|
|
config STORAGE_64BIT_LBA
|
|
bool "Use 64-bit integers to address sectors"
|
|
depends on STORAGE
|
|
default n
|
|
help
|
|
If this is selected, sectors will be addressed by an 64-bit integer.
|
|
Select this to support LBA-48 for ATA drives.
|
|
|
|
config STORAGE_ATA
|
|
bool "Support ATA drives (i.e. hard drives)"
|
|
depends on STORAGE
|
|
default y
|
|
help
|
|
Select this option if you want support for ATA storage devices
|
|
(i.e. hard drives).
|
|
|
|
config STORAGE_ATAPI
|
|
bool "Support ATAPI drives (i.e. optical drives)"
|
|
depends on STORAGE
|
|
default y
|
|
select STORAGE_ATA
|
|
help
|
|
Select this option if you want support for ATAPI storage devices
|
|
(i.e. optical drives like CD or DVD drives).
|
|
|
|
config STORAGE_AHCI
|
|
bool "Support for AHCI host controllers"
|
|
depends on STORAGE && (STORAGE_ATA || STORAGE_ATAPI) && PCI
|
|
default y
|
|
help
|
|
Select this option if you want support for SATA controllers in
|
|
AHCI mode.
|
|
|
|
config STORAGE_AHCI_ONLY_TESTED
|
|
bool "Only enable tested controllers"
|
|
depends on STORAGE_AHCI
|
|
default y
|
|
help
|
|
If this option is selected only AHCI controllers which are known
|
|
to work will be used.
|
|
|
|
config TIMER_RDTSC
|
|
bool
|
|
default y
|
|
depends on ARCH_X86
|
|
|
|
choice
|
|
prompt "Timer driver"
|
|
default TIMER_NONE
|
|
depends on !ARCH_X86
|
|
|
|
config TIMER_NONE
|
|
bool "None"
|
|
help
|
|
The timer driver is provided by the payload itself.
|
|
|
|
config TIMER_MCT
|
|
bool "Exynos MCT"
|
|
|
|
config TIMER_TEGRA_1US
|
|
bool "Tegra 1us"
|
|
|
|
config TIMER_IPQ806X
|
|
bool "Timer for ipq806x platforms"
|
|
|
|
config TIMER_ARMADA38X
|
|
bool "Timer for armada38x platforms"
|
|
help
|
|
This is the timer driver for marvell armada38x
|
|
platforms.
|
|
|
|
config TIMER_RK
|
|
bool "Timer for Rockchip"
|
|
|
|
config TIMER_BG4CD
|
|
bool "Marvell BG4CD"
|
|
|
|
config TIMER_CYGNUS
|
|
bool "Timer for Cygnus"
|
|
|
|
config TIMER_IMG_PISTACHIO
|
|
bool "Timer for IMG Pistachio"
|
|
|
|
config TIMER_MTK
|
|
bool "Timer for MediaTek MT8173"
|
|
|
|
endchoice
|
|
|
|
config TIMER_MCT_HZ
|
|
int "Exynos MCT frequency"
|
|
depends on TIMER_MCT
|
|
default 24000000
|
|
|
|
config TIMER_MCT_ADDRESS
|
|
hex "Exynos MCT base address"
|
|
depends on TIMER_MCT
|
|
default 0x101c0000
|
|
|
|
config TIMER_RK_ADDRESS
|
|
hex "Rockchip timer base address"
|
|
depends on TIMER_RK
|
|
default 0xff810020
|
|
|
|
config TIMER_TEGRA_1US_ADDRESS
|
|
hex "Tegra u1s timer base address"
|
|
depends on TIMER_TEGRA_1US
|
|
default 0x60005010
|
|
|
|
config IPQ806X_TIMER_FREQ
|
|
int "Hardware timer frequency"
|
|
default 32000
|
|
depends on TIMER_IPQ806X
|
|
help
|
|
IPQ hardware presently provides a single timer running at 32KHz, a
|
|
finer granulariry timer is available but is not yet enabled.
|
|
|
|
config IPQ806X_TIMER_REG
|
|
hex "Timer register address"
|
|
default 0x0200A008
|
|
depends on TIMER_IPQ806X
|
|
help
|
|
Address of the register to read a free running timer value.
|
|
|
|
config ARMADA38X_TIMER_FREQ
|
|
int "Hardware timer frequency"
|
|
depends on TIMER_ARMADA38X
|
|
default 25000000
|
|
|
|
config ARMADA38X_TIMER_REG
|
|
hex "Timer register address"
|
|
default 0xF1020314
|
|
depends on TIMER_ARMADA38X
|
|
|
|
config IPROC_PERIPH_GLB_TIM_REG_BASE
|
|
hex "Cygnus timer base address"
|
|
depends on TIMER_CYGNUS
|
|
default 0x19020200
|
|
|
|
config TIMER_MTK_HZ
|
|
int "MediaTek GPT frequency"
|
|
depends on TIMER_MTK
|
|
default 13000000
|
|
help
|
|
Clock frequency of MediaTek General Purpose Timer.
|
|
|
|
config TIMER_MTK_ADDRESS
|
|
hex "MTK GPT register address"
|
|
depends on TIMER_MTK
|
|
default 0x10008048
|
|
help
|
|
Address of GPT4's counter register to read the FREERUN-mode timer value.
|
|
|
|
config USB
|
|
bool "USB Support"
|
|
default n
|
|
|
|
config USB_UHCI
|
|
bool "Support for USB UHCI controllers"
|
|
depends on USB && ARCH_X86
|
|
help
|
|
Select this option if you are going to use USB 1.1 on an Intel based
|
|
system.
|
|
|
|
config USB_OHCI
|
|
bool "Support for USB OHCI controllers"
|
|
depends on USB
|
|
help
|
|
Select this option if you are going to use USB 1.1 on a non-Intel based
|
|
system.
|
|
|
|
config USB_EHCI
|
|
bool "Support for USB EHCI controllers"
|
|
depends on USB
|
|
help
|
|
Select this option if you want to use USB 2.0
|
|
|
|
config USB_XHCI
|
|
bool "Support for USB xHCI controllers"
|
|
depends on USB
|
|
help
|
|
Select this option if you want to use USB 3.0
|
|
NOTE: This option is not (fully) implemented yet
|
|
|
|
config USB_XHCI_MTK_QUIRK
|
|
bool "Support for USB xHCI controllers on MTK SoC"
|
|
depends on USB_XHCI
|
|
help
|
|
Select this option if you want to use USB 3.0 on MTK platform.
|
|
|
|
config USB_DWC2
|
|
bool "Support for USB DesignWare HCD controllers"
|
|
depends on USB
|
|
help
|
|
Select this option if you want to use DesignWare USB 2.0 host controller
|
|
|
|
config USB_HID
|
|
bool "Support for USB keyboards"
|
|
depends on USB
|
|
default y
|
|
help
|
|
Select this option if you want to use devices complying to the
|
|
USB HID (Human Interface Device) standard. Such devices are for
|
|
example keyboards and mice. Currently only keyboards are supported.
|
|
Say Y here unless you know exactly what you are doing.
|
|
|
|
config USB_HUB
|
|
bool "Support for USB hubs"
|
|
depends on USB
|
|
default y
|
|
help
|
|
Select this option if you want to compile in support for USB hubs.
|
|
Say Y here unless you know exactly what you are doing.
|
|
|
|
config USB_EHCI_HOSTPC_ROOT_HUB_TT
|
|
bool "Support for USB EHCI ROOT HUB that has TT"
|
|
depends on USB_EHCI
|
|
default n
|
|
help
|
|
Select this option if USB EHCI root hub supports TT (Transaction
|
|
Translator).
|
|
To support this TT feature we read port-speed from non-standard
|
|
register HOSTPC (offset 84h of Operational Register base).
|
|
|
|
config USB_MSC
|
|
bool "Support for USB storage"
|
|
depends on USB
|
|
default y
|
|
help
|
|
Select this option if you want to compile in support for USB mass
|
|
storage devices (USB memory sticks, hard drives, CDROM/DVD drives)
|
|
Say Y here unless you know exactly what you are doing.
|
|
|
|
config USB_GEN_HUB
|
|
bool
|
|
default n if (!USB_HUB && !USB_XHCI)
|
|
default y if (USB_HUB || USB_XHCI)
|
|
config USB_PCI
|
|
bool "Auto-scan PCI bus for USB host controllers"
|
|
depends on USB
|
|
default y if ARCH_X86
|
|
default n
|
|
|
|
config UDC
|
|
bool "USB device mode support"
|
|
default n
|
|
help
|
|
Select this option to add support for running as
|
|
a USB device.
|
|
|
|
config UDC_CI
|
|
bool "ChipIdea driver for USB device mode"
|
|
depends on UDC
|
|
default n
|
|
help
|
|
Select this option to add the driver for ChipIdea
|
|
USB device controller.
|
|
|
|
config UDC_DWC2
|
|
bool "Designware driver for USB device mode"
|
|
depends on UDC
|
|
default n
|
|
help
|
|
Select this option to add the driver for Designware
|
|
USB device controller.
|
|
|
|
endmenu
|
|
|
|
menu "Debugging"
|
|
depends on DEVELOPER
|
|
|
|
config DEBUG_MALLOC
|
|
bool "Debug memory allocator"
|
|
depends on USB
|
|
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/mips/Kconfig"
|
|
source "arch/x86/Kconfig"
|