blob: dcb1f4e721c5f22694213514c019d3669b2b9611 [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"
Julius Werner58caa8b2016-05-16 16:37:56 -070037 default y if CHROMEOS
Julius Werner22adcd62014-06-11 14:16:35 -070038 default n
39 help
40 Prompt for options that will build code licensed under the GNU General
41 Public License (version 2). This will subject the whole payload to the
42 terms of this license (including its provision to release all sources,
43 please see the LICENSE_GPL file for details).
44
Stefan Reinauere5d30b72010-03-25 22:15:19 +000045config EXPERIMENTAL
46 bool "Experimental Options"
47 default n
48 help
49 Prompt for experimental functionality. Attention: This is not likely
50 to work without problems
51
Stefan Reinauere5d30b72010-03-25 22:15:19 +000052config DEVELOPER
53 bool "Developer Options"
54 default n
55 help
56 Prompt for developer options. These options are only interesting for
57 libpayload developers.
58
Julius Werner58caa8b2016-05-16 16:37:56 -070059config CHROMEOS
60 bool "Chrome OS Options"
61 default n
62 help
63 Select configuration defaults appropriate for Chrome OS boards.
64
Patrick Georgib7d8f262015-07-06 09:04:42 +000065choice
66 prompt "Compiler to use"
67 default COMPILER_GCC
68 help
69 This option allows you to select the compiler.
70
71config COMPILER_GCC
72 bool "GCC"
73 help
74 Use the GNU Compiler Collection (GCC).
75
76config COMPILER_LLVM_CLANG
77 bool "LLVM/clang"
78 help
79 Use LLVM/clang.
80
81endchoice
82
Julius Werner50a81742014-05-15 11:57:38 -070083config REMOTEGDB
84 bool "Remote GDB stub"
85 default n
86 depends on GPL
87 help
88 Enable Remote GDB debugging support.
89
Stefan Reinauer1e6b86b2016-03-12 12:14:46 -080090config MEMMAP_RAM_ONLY
91 bool "Only consider RAM entries in memory map for further processing"
92 default n
93
Stefan Reinauere5d30b72010-03-25 22:15:19 +000094endmenu
95
Jordan Crouse20c9cf12008-10-20 16:51:43 +000096menu "Architecture Options"
97
Patrick Georgid385ed22009-05-21 10:02:52 +000098choice
99 prompt "Target Architecture"
David Hendricks4b6be982012-11-30 13:56:31 -0800100 default ARCH_X86
Patrick Georgid385ed22009-05-21 10:02:52 +0000101
Gabe Black51edd542013-09-30 23:00:33 -0700102config ARCH_ARM
103 bool "ARM"
Stefan Reinauer8af0d032012-12-14 13:05:21 -0800104 help
Gabe Black51edd542013-09-30 23:00:33 -0700105 Support the ARM architecture
Stefan Reinauer8af0d032012-12-14 13:05:21 -0800106
David Hendricks4b6be982012-11-30 13:56:31 -0800107config ARCH_X86
Patrick Georgid385ed22009-05-21 10:02:52 +0000108 bool "x86"
109 help
110 Support the x86 architecture
111
Furquan Shaikh8c8c3772014-02-19 11:35:30 -0800112config ARCH_ARM64
113 bool "ARM64"
114 help
115 Support the ARM64 architecture
116
Ionela Voinescuce22c022014-09-24 17:05:33 +0100117config ARCH_MIPS
118 bool "MIPS"
119 help
120 Support the MIPS architecture
121
Patrick Georgid385ed22009-05-21 10:02:52 +0000122endchoice
123
Jordan Crouse20c9cf12008-10-20 16:51:43 +0000124config MULTIBOOT
125 bool "Multiboot header support"
David Hendricks4b6be982012-11-30 13:56:31 -0800126 depends on ARCH_X86
Julius Werner58caa8b2016-05-16 16:37:56 -0700127 default y if !CHROMEOS
Jordan Crouse20c9cf12008-10-20 16:51:43 +0000128
Stefan Reinauer82184452016-03-12 16:18:17 -0800129config HEAP_SIZE
130 int "Heap size"
131 default 131072
132 help
133 This is the heap size (malloc'able size) available
134 to the payload.
135
136 If unsure, set to 131072 (128K)
137
138config STACK_SIZE
139 int "Stack size"
140 default 16384
141 help
142 This is the stack size available to the payload.
143
144 If unsure, set to 16384 (16K)
145
146config BASE_ADDRESS
147 hex "Base address"
148 default 0x04000000 if ARCH_ARM
149 default 0x80100000 if ARCH_ARM64
150 default 0x00000000 if ARCH_MIPS
151 default 0x00100000 if ARCH_X86
152 help
153 This is the base address for the payload.
154
155 If unsure, set to 0x00100000 on x86, 0x00000000 on MIPS,
156 0x04000000 on ARM or 0x80100000 on ARM64.
157
Jordan Crouse20c9cf12008-10-20 16:51:43 +0000158endmenu
159
Stefan Reinauer69863582008-08-08 13:45:03 +0000160menu "Standard Libraries"
161
162config LIBC
163 bool "Enable C library support"
164 default y
165
Patrick Georgi3b77b722011-07-07 15:41:53 +0200166config CURSES
167 bool "Build a curses library"
Julius Werner58caa8b2016-05-16 16:37:56 -0700168 default y if !CHROMEOS
Stefan Reinauer69863582008-08-08 13:45:03 +0000169
Patrick Georgi3b77b722011-07-07 15:41:53 +0200170choice
171 prompt "Curses implementation"
172 default PDCURSES
173 depends on CURSES
174
175config TINYCURSES
Paul Menzeldc1b3c12015-09-26 12:30:08 +0200176 bool "TinyCurses"
Patrick Georgi3b77b722011-07-07 15:41:53 +0200177 help
Paul Menzeldc1b3c12015-09-26 12:30:08 +0200178 TinyCurses was the first curses implementation for libpayload.
Patrick Georgi3b77b722011-07-07 15:41:53 +0200179 It features low memory consumption, static allocation of larger
180 data structures (so few or no memory allocation calls) and a
181 reduced feature set.
182
183config PDCURSES
184 bool "PDCurses"
Patrick Georgi3b77b722011-07-07 15:41:53 +0200185 help
186 libpayload's PDCurses port provides a full features curses
187 implementation, including libpanel, libmenu and libform (which
188 are taken from ncurses).
189 It requires more system resources, in particularily heap memory.
190
191endchoice
192
Stefan Reinauere5d30b72010-03-25 22:15:19 +0000193config CBFS
194 bool "CBFS support"
195 default y
196 help
Patrick Georgi6de1ee4a2011-07-21 15:43:14 +0200197 CBFS is the archive format of coreboot
198
199config LZMA
200 bool "LZMA decoder"
201 default y
202 help
203 LZMA decoder implementation, usable eg. by CBFS,
204 but also externally.
Julius Wernerbf273912015-06-30 10:30:30 -0700205
206config LZ4
207 bool "LZ4 decoder"
208 default y
209 help
210 Decoder implementation for the LZ4 compression algorithm.
211 Adds standalone functions (CBFS support coming soon).
Stefan Reinauer69863582008-08-08 13:45:03 +0000212endmenu
213
214menu "Console Options"
Uwe Hermann2d758b82008-03-31 15:21:24 +0000215
Gabe Black4bb07312012-10-05 11:43:39 -0700216config SKIP_CONSOLE_INIT
217 bool "Skip initializing the consoles at startup"
Julius Werner58caa8b2016-05-16 16:37:56 -0700218 default y if CHROMEOS
Gabe Black4bb07312012-10-05 11:43:39 -0700219 default n
220 help
221 Normally, libpayload will initialize console input/output on startup
222 before the payload itself gets control. This option disables that
223 behavior and leaves console initialization up to the payload.
224
Gabe Blacka54b6a62012-09-29 00:21:27 -0700225config CBMEM_CONSOLE
226 bool "Send output to the in memory CBMEM console"
227 default y
228
Jordan Crousef6145c32008-03-19 23:56:58 +0000229config SERIAL_CONSOLE
Uwe Hermann2d758b82008-03-31 15:21:24 +0000230 bool "See output on the serial port console"
231 default y
Jordan Crousef6145c32008-03-19 23:56:58 +0000232
Gabe Black9135cb42013-09-26 16:13:08 -0700233config 8250_SERIAL_CONSOLE
Alexandru Gagniuc4d5317e2015-11-23 16:18:12 -0800234 bool "8250-compatible serial port driver (including IO and MMIO)"
Gabe Black9135cb42013-09-26 16:13:08 -0700235 depends on SERIAL_CONSOLE
Julius Werner58caa8b2016-05-16 16:37:56 -0700236 default y if ARCH_X86
Ronald G. Minnich7b694542013-02-15 08:13:29 -0800237
Gabe Blacka6aecc42014-04-10 01:07:28 -0700238config S5P_SERIAL_CONSOLE
239 bool "Exynos SOC, S5P compatible serial port driver"
240 depends on SERIAL_CONSOLE
241 default n
242
Vadim Bendebury897123a2014-05-27 18:28:59 -0700243config IPQ806X_SERIAL_CONSOLE
244 bool "IPQ806x SOC compatible serial port driver"
245 depends on SERIAL_CONSOLE
246 default n
247
Varadarajan Narayananc1ae7e92016-02-01 11:32:12 +0530248config IPQ40XX_SERIAL_CONSOLE
249 bool "IPQ40xx SOC compatible serial port driver"
250 depends on SERIAL_CONSOLE
251 default n
252
Daisuke Nojirif8c87032014-10-09 09:56:43 -0700253config BG4CD_SERIAL_CONSOLE
254 bool "Serial port driver for Marvell's BG4CD"
255 depends on SERIAL_CONSOLE
256 default n
257
Marcelo Povoa558e9b52014-02-18 14:17:38 -0800258config PL011_SERIAL_CONSOLE
259 bool "PL011 compatible serial port driver"
260 depends on 8250_SERIAL_CONSOLE
261 default n
262
Jordan Crousef6145c32008-03-19 23:56:58 +0000263config SERIAL_IOBASE
Gabe Black9135cb42013-09-26 16:13:08 -0700264 ## This default is currently not used on non-x86 systems.
265 hex "Default I/O base for the serial port (default 0x3f8)"
266 depends on SERIAL_CONSOLE && ARCH_X86
Uwe Hermann2d758b82008-03-31 15:21:24 +0000267 default 0x3f8
268
Jordan Crousef6145c32008-03-19 23:56:58 +0000269config SERIAL_SET_SPEED
270 bool "Override the serial console baud rate"
271 default n
Uwe Hermannfad8c2b2008-04-11 18:01:50 +0000272 depends on SERIAL_CONSOLE
Jordan Crousef6145c32008-03-19 23:56:58 +0000273
274config SERIAL_BAUD_RATE
275 int "Serial console baud rate (default 115200)"
Uwe Hermannfad8c2b2008-04-11 18:01:50 +0000276 depends on SERIAL_SET_SPEED
Jordan Crousef6145c32008-03-19 23:56:58 +0000277 default 115200
278
Ulf Jordan2aea11f2008-08-18 19:29:41 +0000279config SERIAL_ACS_FALLBACK
280 bool "Use plain ASCII characters for ACS"
281 default n
282 depends on SERIAL_CONSOLE
283 help
284 The alternate character set (ACS) is used for drawing lines and
285 displaying a couple of other special graphics characters. The
286 ACS characters generally look good on screen, but can be difficult
287 to cut and paste from a terminal window to a text editor.
Stefan Reinauer14e22772010-04-27 06:56:47 +0000288
Ulf Jordan2aea11f2008-08-18 19:29:41 +0000289 Say 'y' here if you want to always use plain ASCII characters to
Stefan Reinauer14e22772010-04-27 06:56:47 +0000290 approximate the appearance of ACS characters on the serial port
Ulf Jordan2aea11f2008-08-18 19:29:41 +0000291 console.
292
Jordan Crouse30939bd2008-04-10 22:49:02 +0000293config VIDEO_CONSOLE
294 bool "See output on a video console"
295 default y
296
297config VGA_VIDEO_CONSOLE
298 bool "VGA video console driver"
Stefan Reinauer8af0d032012-12-14 13:05:21 -0800299 depends on ARCH_X86 && VIDEO_CONSOLE
Julius Werner58caa8b2016-05-16 16:37:56 -0700300 default y if !CHROMEOS
Jordan Crousef6145c32008-03-19 23:56:58 +0000301
Peter Stuge4b1971c2008-10-08 14:47:41 +0000302config GEODELX_VIDEO_CONSOLE
303 bool "Geode LX video console driver"
Stefan Reinauer8af0d032012-12-14 13:05:21 -0800304 depends on ARCH_X86 && VIDEO_CONSOLE
Jordan Crouse54315532008-04-11 15:48:21 +0000305 default n
306
Stefan Reinauerb7002542010-03-25 18:56:26 +0000307config COREBOOT_VIDEO_CONSOLE
308 bool "coreboot video console driver"
309 depends on VIDEO_CONSOLE && !GEODELX_VIDEO_CONSOLE
Julius Werner58caa8b2016-05-16 16:37:56 -0700310 default y if CHROMEOS
Stefan Reinauerb7002542010-03-25 18:56:26 +0000311 default n
312 help
313 Say Y here if coreboot switched to a graphics mode and
314 your payload wants to use it.
315
Jordan Crousef6145c32008-03-19 23:56:58 +0000316config PC_KEYBOARD
Uwe Hermann2d758b82008-03-31 15:21:24 +0000317 bool "Allow input from a PC keyboard"
Marc Jones019bacb42014-12-23 15:22:30 -0700318 default y if ARCH_X86 # uses IO
319 default n
Jordan Crousef6145c32008-03-19 23:56:58 +0000320
Stefan Reinauerd84ef1e2008-09-26 18:37:26 +0000321config PC_KEYBOARD_LAYOUT_US
322 bool "English (US) keyboard layout"
323 depends on PC_KEYBOARD
324 default y
325
326config PC_KEYBOARD_LAYOUT_DE
327 bool "German keyboard layout"
328 depends on PC_KEYBOARD
329 default n
330
Stefan Reinauer69863582008-08-08 13:45:03 +0000331endmenu
332
333menu "Drivers"
334
335config PCI
336 bool "Support for PCI devices"
Stefan Reinauer8af0d032012-12-14 13:05:21 -0800337 depends on ARCH_X86 # for now
Stefan Reinauer69863582008-08-08 13:45:03 +0000338 default y
339
Uwe Hermannc16d24e2008-03-31 15:17:39 +0000340config NVRAM
Uwe Hermann2d758b82008-03-31 15:21:24 +0000341 bool "Support for reading/writing NVRAM bytes"
Stefan Reinauer8af0d032012-12-14 13:05:21 -0800342 depends on ARCH_X86 # for now
Uwe Hermann2d758b82008-03-31 15:21:24 +0000343 default y
Uwe Hermann8cc38d22008-03-27 23:26:40 +0000344
Uwe Hermann30d789b2008-03-31 20:21:49 +0000345config RTC_PORT_EXTENDED_VIA
346 bool "Extended RTC ports are 0x74/0x75"
347 default n
348 help
349 For recent chipsets with 256 NVRAM bytes, you have to access the
350 upper 128 bytes (128-255) using two different I/O ports,
351 usually 0x72/0x73.
Stefan Reinauer14e22772010-04-27 06:56:47 +0000352
Uwe Hermann30d789b2008-03-31 20:21:49 +0000353 On some chipsets this can be a different set of ports, though.
354 The VIA VT8237R for example only recognizes the ports 0x74/0x75
355 for accessing the high 128 NVRAM bytes (as seems to be the case for
356 multiple VIA chipsets).
Stefan Reinauer14e22772010-04-27 06:56:47 +0000357
Uwe Hermann30d789b2008-03-31 20:21:49 +0000358 If you want to read or write CMOS bytes on computers with one of
359 these chipsets, say 'y' here.
360
Stefan Reinauer69863582008-08-08 13:45:03 +0000361config SPEAKER
362 bool "Support for PC speaker"
Stefan Reinauer8af0d032012-12-14 13:05:21 -0800363 depends on ARCH_X86
Julius Werner58caa8b2016-05-16 16:37:56 -0700364 default y if !CHROMEOS
Jordan Crousef6145c32008-03-19 23:56:58 +0000365
Antonello Dettoriaded2142016-07-27 12:41:04 +0200366source "drivers/timer/Kconfig"
367source "drivers/storage/Kconfig"
368source "drivers/usb/Kconfig"
huang lin41e24992015-05-20 17:27:10 +0800369
Stefan Reinauere5d30b72010-03-25 22:15:19 +0000370endmenu
371
372menu "Debugging"
373 depends on DEVELOPER
374
375config DEBUG_MALLOC
376 bool "Debug memory allocator"
377 depends on USB
378 default n
379 help
380 Select this option if you want to debug the memory allocator. This
381 option logs all uses of the following functions:
382
383 void free(void *ptr);
384 void *malloc(size_t size);
385 void *calloc(size_t nmemb, size_t size);
386 void *realloc(void *ptr, size_t size);
387 void *memalign(size_t align, size_t size);
388
389 Say N here unless you are debugging memory allocator problems.
Patrick Georgid21f68b2008-09-02 16:06:22 +0000390
Jordan Crousef6145c32008-03-19 23:56:58 +0000391endmenu
Stefan Reinauer69863582008-08-08 13:45:03 +0000392
Gabe Black0af03d22012-03-19 03:06:46 -0700393config BIG_ENDIAN
394 default n
395 bool
396
397config LITTLE_ENDIAN
398 default n
399 bool
400
Gabe Blackd2679872013-01-18 15:49:00 -0800401config IO_ADDRESS_SPACE
402 default n
403 bool
Stefan Reinauer347a7522016-03-12 11:48:44 -0800404 help
405 This option is turned on if the target system has a separate
406 IO address space. This is typically only the case on x86.
Gabe Blackd2679872013-01-18 15:49:00 -0800407
Stefan Reinauerdee44202015-06-11 14:33:11 -0700408source "arch/arm/Kconfig"
409source "arch/arm64/Kconfig"
410source "arch/mips/Kconfig"
411source "arch/x86/Kconfig"