blob: 51826ea9af9db41745c1493dd6a16318ad54cc63 [file] [log] [blame]
Uwe Hermann661e3802008-03-21 18:37:23 +00001##
2## This file is part of the libpayload project.
3##
4## Copyright (C) 2008 Advanced Micro Devices, Inc.
Stefan Reinauer69863582008-08-08 13:45:03 +00005## Copyright (C) 2008 coresystems GmbH
Uwe Hermann661e3802008-03-21 18:37:23 +00006##
7## Redistribution and use in source and binary forms, with or without
8## modification, are permitted provided that the following conditions
9## are met:
10## 1. Redistributions of source code must retain the above copyright
11## notice, this list of conditions and the following disclaimer.
12## 2. Redistributions in binary form must reproduce the above copyright
13## notice, this list of conditions and the following disclaimer in the
14## documentation and/or other materials provided with the distribution.
15## 3. The name of the author may not be used to endorse or promote products
16## derived from this software without specific prior written permission.
17##
18## THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
19## ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20## IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21## ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
22## FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23## DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24## OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25## HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26## LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27## OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28## SUCH DAMAGE.
29##
Jordan Crousef6145c32008-03-19 23:56:58 +000030
31mainmenu "Libpayload Configuration"
32
Stefan Reinauere5d30b72010-03-25 22:15:19 +000033menu "Generic Options"
34
Julius Werner22adcd62014-06-11 14:16:35 -070035config GPL
36 bool "GPLv2-licensed Options"
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).
43
Stefan Reinauere5d30b72010-03-25 22:15:19 +000044config 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
50
Stefan Reinauere5d30b72010-03-25 22:15:19 +000051config DEVELOPER
52 bool "Developer Options"
53 default n
54 help
55 Prompt for developer options. These options are only interesting for
56 libpayload developers.
57
Patrick Georgib7d8f262015-07-06 09:04:42 +000058choice
59 prompt "Compiler to use"
60 default COMPILER_GCC
61 help
62 This option allows you to select the compiler.
63
64config COMPILER_GCC
65 bool "GCC"
66 help
67 Use the GNU Compiler Collection (GCC).
68
69config COMPILER_LLVM_CLANG
70 bool "LLVM/clang"
71 help
72 Use LLVM/clang.
73
74endchoice
75
Julius Werner50a81742014-05-15 11:57:38 -070076config REMOTEGDB
77 bool "Remote GDB stub"
78 default n
79 depends on GPL
80 help
81 Enable Remote GDB debugging support.
82
Stefan Reinauer1e6b86b2016-03-12 12:14:46 -080083config MEMMAP_RAM_ONLY
84 bool "Only consider RAM entries in memory map for further processing"
85 default n
86
Stefan Reinauere5d30b72010-03-25 22:15:19 +000087endmenu
88
Jordan Crouse20c9cf12008-10-20 16:51:43 +000089menu "Architecture Options"
90
Patrick Georgid385ed22009-05-21 10:02:52 +000091choice
92 prompt "Target Architecture"
David Hendricks4b6be982012-11-30 13:56:31 -080093 default ARCH_X86
Patrick Georgid385ed22009-05-21 10:02:52 +000094
Gabe Black51edd542013-09-30 23:00:33 -070095config ARCH_ARM
96 bool "ARM"
Stefan Reinauer8af0d032012-12-14 13:05:21 -080097 help
Gabe Black51edd542013-09-30 23:00:33 -070098 Support the ARM architecture
Stefan Reinauer8af0d032012-12-14 13:05:21 -080099
David Hendricks4b6be982012-11-30 13:56:31 -0800100config ARCH_X86
Patrick Georgid385ed22009-05-21 10:02:52 +0000101 bool "x86"
102 help
103 Support the x86 architecture
104
Furquan Shaikh8c8c3772014-02-19 11:35:30 -0800105config ARCH_ARM64
106 bool "ARM64"
107 help
108 Support the ARM64 architecture
109
Ionela Voinescuce22c022014-09-24 17:05:33 +0100110config ARCH_MIPS
111 bool "MIPS"
112 help
113 Support the MIPS architecture
114
Patrick Georgid385ed22009-05-21 10:02:52 +0000115endchoice
116
Jordan Crouse20c9cf12008-10-20 16:51:43 +0000117config MULTIBOOT
118 bool "Multiboot header support"
David Hendricks4b6be982012-11-30 13:56:31 -0800119 depends on ARCH_X86
Jordan Crouse20c9cf12008-10-20 16:51:43 +0000120 default y
121
Stefan Reinauer82184452016-03-12 16:18:17 -0800122config HEAP_SIZE
123 int "Heap size"
124 default 131072
125 help
126 This is the heap size (malloc'able size) available
127 to the payload.
128
129 If unsure, set to 131072 (128K)
130
131config STACK_SIZE
132 int "Stack size"
133 default 16384
134 help
135 This is the stack size available to the payload.
136
137 If unsure, set to 16384 (16K)
138
139config BASE_ADDRESS
140 hex "Base address"
141 default 0x04000000 if ARCH_ARM
142 default 0x80100000 if ARCH_ARM64
143 default 0x00000000 if ARCH_MIPS
144 default 0x00100000 if ARCH_X86
145 help
146 This is the base address for the payload.
147
148 If unsure, set to 0x00100000 on x86, 0x00000000 on MIPS,
149 0x04000000 on ARM or 0x80100000 on ARM64.
150
Jordan Crouse20c9cf12008-10-20 16:51:43 +0000151endmenu
152
Stefan Reinauer69863582008-08-08 13:45:03 +0000153menu "Standard Libraries"
154
155config LIBC
156 bool "Enable C library support"
157 default y
158
Patrick Georgi3b77b722011-07-07 15:41:53 +0200159config CURSES
160 bool "Build a curses library"
Stefan Reinauer69863582008-08-08 13:45:03 +0000161 default y
162
Patrick Georgi3b77b722011-07-07 15:41:53 +0200163choice
164 prompt "Curses implementation"
165 default PDCURSES
166 depends on CURSES
167
168config TINYCURSES
Paul Menzeldc1b3c12015-09-26 12:30:08 +0200169 bool "TinyCurses"
Patrick Georgi3b77b722011-07-07 15:41:53 +0200170 help
Paul Menzeldc1b3c12015-09-26 12:30:08 +0200171 TinyCurses was the first curses implementation for libpayload.
Patrick Georgi3b77b722011-07-07 15:41:53 +0200172 It features low memory consumption, static allocation of larger
173 data structures (so few or no memory allocation calls) and a
174 reduced feature set.
175
176config PDCURSES
177 bool "PDCurses"
Patrick Georgi3b77b722011-07-07 15:41:53 +0200178 help
179 libpayload's PDCurses port provides a full features curses
180 implementation, including libpanel, libmenu and libform (which
181 are taken from ncurses).
182 It requires more system resources, in particularily heap memory.
183
184endchoice
185
Stefan Reinauere5d30b72010-03-25 22:15:19 +0000186config CBFS
187 bool "CBFS support"
188 default y
189 help
Patrick Georgi6de1ee4a2011-07-21 15:43:14 +0200190 CBFS is the archive format of coreboot
191
192config LZMA
193 bool "LZMA decoder"
194 default y
195 help
196 LZMA decoder implementation, usable eg. by CBFS,
197 but also externally.
Julius Wernerbf273912015-06-30 10:30:30 -0700198
199config LZ4
200 bool "LZ4 decoder"
201 default y
202 help
203 Decoder implementation for the LZ4 compression algorithm.
204 Adds standalone functions (CBFS support coming soon).
Stefan Reinauer69863582008-08-08 13:45:03 +0000205endmenu
206
207menu "Console Options"
Uwe Hermann2d758b82008-03-31 15:21:24 +0000208
Gabe Black4bb07312012-10-05 11:43:39 -0700209config SKIP_CONSOLE_INIT
210 bool "Skip initializing the consoles at startup"
211 default n
212 help
213 Normally, libpayload will initialize console input/output on startup
214 before the payload itself gets control. This option disables that
215 behavior and leaves console initialization up to the payload.
216
Gabe Blacka54b6a62012-09-29 00:21:27 -0700217config CBMEM_CONSOLE
218 bool "Send output to the in memory CBMEM console"
219 default y
220
Jordan Crousef6145c32008-03-19 23:56:58 +0000221config SERIAL_CONSOLE
Uwe Hermann2d758b82008-03-31 15:21:24 +0000222 bool "See output on the serial port console"
223 default y
Jordan Crousef6145c32008-03-19 23:56:58 +0000224
Gabe Black9135cb42013-09-26 16:13:08 -0700225config 8250_SERIAL_CONSOLE
Alexandru Gagniuc4d5317e2015-11-23 16:18:12 -0800226 bool "8250-compatible serial port driver (including IO and MMIO)"
Gabe Black9135cb42013-09-26 16:13:08 -0700227 depends on SERIAL_CONSOLE
Alexandru Gagniuc4d5317e2015-11-23 16:18:12 -0800228 default y
Ronald G. Minnich7b694542013-02-15 08:13:29 -0800229
Gabe Blacka6aecc42014-04-10 01:07:28 -0700230config S5P_SERIAL_CONSOLE
231 bool "Exynos SOC, S5P compatible serial port driver"
232 depends on SERIAL_CONSOLE
233 default n
234
Vadim Bendebury897123a2014-05-27 18:28:59 -0700235config IPQ806X_SERIAL_CONSOLE
236 bool "IPQ806x SOC compatible serial port driver"
237 depends on SERIAL_CONSOLE
238 default n
239
Varadarajan Narayananc1ae7e92016-02-01 11:32:12 +0530240config IPQ40XX_SERIAL_CONSOLE
241 bool "IPQ40xx SOC compatible serial port driver"
242 depends on SERIAL_CONSOLE
243 default n
244
Daisuke Nojirif8c87032014-10-09 09:56:43 -0700245config BG4CD_SERIAL_CONSOLE
246 bool "Serial port driver for Marvell's BG4CD"
247 depends on SERIAL_CONSOLE
248 default n
249
Marcelo Povoa558e9b52014-02-18 14:17:38 -0800250config PL011_SERIAL_CONSOLE
251 bool "PL011 compatible serial port driver"
252 depends on 8250_SERIAL_CONSOLE
253 default n
254
Jordan Crousef6145c32008-03-19 23:56:58 +0000255config SERIAL_IOBASE
Gabe Black9135cb42013-09-26 16:13:08 -0700256 ## This default is currently not used on non-x86 systems.
257 hex "Default I/O base for the serial port (default 0x3f8)"
258 depends on SERIAL_CONSOLE && ARCH_X86
Uwe Hermann2d758b82008-03-31 15:21:24 +0000259 default 0x3f8
260
Jordan Crousef6145c32008-03-19 23:56:58 +0000261config SERIAL_SET_SPEED
262 bool "Override the serial console baud rate"
263 default n
Uwe Hermannfad8c2b2008-04-11 18:01:50 +0000264 depends on SERIAL_CONSOLE
Jordan Crousef6145c32008-03-19 23:56:58 +0000265
266config SERIAL_BAUD_RATE
267 int "Serial console baud rate (default 115200)"
Uwe Hermannfad8c2b2008-04-11 18:01:50 +0000268 depends on SERIAL_SET_SPEED
Jordan Crousef6145c32008-03-19 23:56:58 +0000269 default 115200
270
Ulf Jordan2aea11f2008-08-18 19:29:41 +0000271config SERIAL_ACS_FALLBACK
272 bool "Use plain ASCII characters for ACS"
273 default n
274 depends on SERIAL_CONSOLE
275 help
276 The alternate character set (ACS) is used for drawing lines and
277 displaying a couple of other special graphics characters. The
278 ACS characters generally look good on screen, but can be difficult
279 to cut and paste from a terminal window to a text editor.
Stefan Reinauer14e22772010-04-27 06:56:47 +0000280
Ulf Jordan2aea11f2008-08-18 19:29:41 +0000281 Say 'y' here if you want to always use plain ASCII characters to
Stefan Reinauer14e22772010-04-27 06:56:47 +0000282 approximate the appearance of ACS characters on the serial port
Ulf Jordan2aea11f2008-08-18 19:29:41 +0000283 console.
284
Jordan Crouse30939bd2008-04-10 22:49:02 +0000285config VIDEO_CONSOLE
286 bool "See output on a video console"
287 default y
288
289config VGA_VIDEO_CONSOLE
290 bool "VGA video console driver"
Stefan Reinauer8af0d032012-12-14 13:05:21 -0800291 depends on ARCH_X86 && VIDEO_CONSOLE
Uwe Hermann2d758b82008-03-31 15:21:24 +0000292 default y
Jordan Crousef6145c32008-03-19 23:56:58 +0000293
Peter Stuge4b1971c2008-10-08 14:47:41 +0000294config GEODELX_VIDEO_CONSOLE
295 bool "Geode LX video console driver"
Stefan Reinauer8af0d032012-12-14 13:05:21 -0800296 depends on ARCH_X86 && VIDEO_CONSOLE
Jordan Crouse54315532008-04-11 15:48:21 +0000297 default n
298
Stefan Reinauerb7002542010-03-25 18:56:26 +0000299config COREBOOT_VIDEO_CONSOLE
300 bool "coreboot video console driver"
301 depends on VIDEO_CONSOLE && !GEODELX_VIDEO_CONSOLE
302 default n
303 help
304 Say Y here if coreboot switched to a graphics mode and
305 your payload wants to use it.
306
Jordan Crousef6145c32008-03-19 23:56:58 +0000307config PC_KEYBOARD
Uwe Hermann2d758b82008-03-31 15:21:24 +0000308 bool "Allow input from a PC keyboard"
Marc Jones019bacb42014-12-23 15:22:30 -0700309 default y if ARCH_X86 # uses IO
310 default n
Jordan Crousef6145c32008-03-19 23:56:58 +0000311
Stefan Reinauerd84ef1e2008-09-26 18:37:26 +0000312config PC_KEYBOARD_LAYOUT_US
313 bool "English (US) keyboard layout"
314 depends on PC_KEYBOARD
315 default y
316
317config PC_KEYBOARD_LAYOUT_DE
318 bool "German keyboard layout"
319 depends on PC_KEYBOARD
320 default n
321
Stefan Reinauer69863582008-08-08 13:45:03 +0000322endmenu
323
324menu "Drivers"
325
326config PCI
327 bool "Support for PCI devices"
Stefan Reinauer8af0d032012-12-14 13:05:21 -0800328 depends on ARCH_X86 # for now
Stefan Reinauer69863582008-08-08 13:45:03 +0000329 default y
330
Uwe Hermannc16d24e2008-03-31 15:17:39 +0000331config NVRAM
Uwe Hermann2d758b82008-03-31 15:21:24 +0000332 bool "Support for reading/writing NVRAM bytes"
Stefan Reinauer8af0d032012-12-14 13:05:21 -0800333 depends on ARCH_X86 # for now
Uwe Hermann2d758b82008-03-31 15:21:24 +0000334 default y
Uwe Hermann8cc38d22008-03-27 23:26:40 +0000335
Uwe Hermann30d789b2008-03-31 20:21:49 +0000336config RTC_PORT_EXTENDED_VIA
337 bool "Extended RTC ports are 0x74/0x75"
338 default n
339 help
340 For recent chipsets with 256 NVRAM bytes, you have to access the
341 upper 128 bytes (128-255) using two different I/O ports,
342 usually 0x72/0x73.
Stefan Reinauer14e22772010-04-27 06:56:47 +0000343
Uwe Hermann30d789b2008-03-31 20:21:49 +0000344 On some chipsets this can be a different set of ports, though.
345 The VIA VT8237R for example only recognizes the ports 0x74/0x75
346 for accessing the high 128 NVRAM bytes (as seems to be the case for
347 multiple VIA chipsets).
Stefan Reinauer14e22772010-04-27 06:56:47 +0000348
Uwe Hermann30d789b2008-03-31 20:21:49 +0000349 If you want to read or write CMOS bytes on computers with one of
350 these chipsets, say 'y' here.
351
Stefan Reinauer69863582008-08-08 13:45:03 +0000352config SPEAKER
353 bool "Support for PC speaker"
Stefan Reinauer8af0d032012-12-14 13:05:21 -0800354 depends on ARCH_X86
Uwe Hermann2d758b82008-03-31 15:21:24 +0000355 default y
Jordan Crousef6145c32008-03-19 23:56:58 +0000356
Antonello Dettoriaded2142016-07-27 12:41:04 +0200357source "drivers/timer/Kconfig"
358source "drivers/storage/Kconfig"
359source "drivers/usb/Kconfig"
huang lin41e24992015-05-20 17:27:10 +0800360
Stefan Reinauere5d30b72010-03-25 22:15:19 +0000361endmenu
362
363menu "Debugging"
364 depends on DEVELOPER
365
366config DEBUG_MALLOC
367 bool "Debug memory allocator"
368 depends on USB
369 default n
370 help
371 Select this option if you want to debug the memory allocator. This
372 option logs all uses of the following functions:
373
374 void free(void *ptr);
375 void *malloc(size_t size);
376 void *calloc(size_t nmemb, size_t size);
377 void *realloc(void *ptr, size_t size);
378 void *memalign(size_t align, size_t size);
379
380 Say N here unless you are debugging memory allocator problems.
Patrick Georgid21f68b2008-09-02 16:06:22 +0000381
Jordan Crousef6145c32008-03-19 23:56:58 +0000382endmenu
Stefan Reinauer69863582008-08-08 13:45:03 +0000383
Gabe Black0af03d22012-03-19 03:06:46 -0700384config BIG_ENDIAN
385 default n
386 bool
387
388config LITTLE_ENDIAN
389 default n
390 bool
391
Gabe Blackd2679872013-01-18 15:49:00 -0800392config IO_ADDRESS_SPACE
393 default n
394 bool
Stefan Reinauer347a7522016-03-12 11:48:44 -0800395 help
396 This option is turned on if the target system has a separate
397 IO address space. This is typically only the case on x86.
Gabe Blackd2679872013-01-18 15:49:00 -0800398
Stefan Reinauerdee44202015-06-11 14:33:11 -0700399source "arch/arm/Kconfig"
400source "arch/arm64/Kconfig"
401source "arch/mips/Kconfig"
402source "arch/x86/Kconfig"