blob: 7a502b5853b89b349150ed3f0d646c2f196ec647 [file] [log] [blame]
Uwe Hermann661e3802008-03-21 18:37:23 +00001##
Uwe Hermann661e3802008-03-21 18:37:23 +00002##
3## Copyright (C) 2008 Advanced Micro Devices, Inc.
Stefan Reinauer69863582008-08-08 13:45:03 +00004## Copyright (C) 2008 coresystems GmbH
Uwe Hermann661e3802008-03-21 18:37:23 +00005##
6## Redistribution and use in source and binary forms, with or without
7## modification, are permitted provided that the following conditions
8## are met:
9## 1. Redistributions of source code must retain the above copyright
10## notice, this list of conditions and the following disclaimer.
11## 2. Redistributions in binary form must reproduce the above copyright
12## notice, this list of conditions and the following disclaimer in the
13## documentation and/or other materials provided with the distribution.
14## 3. The name of the author may not be used to endorse or promote products
15## derived from this software without specific prior written permission.
16##
17## THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18## ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19## IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20## ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21## FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22## DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23## OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24## HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25## LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26## OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27## SUCH DAMAGE.
28##
Jordan Crousef6145c32008-03-19 23:56:58 +000029
30mainmenu "Libpayload Configuration"
31
Stefan Reinauere5d30b72010-03-25 22:15:19 +000032menu "Generic Options"
33
Julius Werner22adcd62014-06-11 14:16:35 -070034config GPL
35 bool "GPLv2-licensed Options"
Julius Werner58caa8b2016-05-16 16:37:56 -070036 default y if CHROMEOS
Julius Werner22adcd62014-06-11 14:16:35 -070037 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
Julius Werner58caa8b2016-05-16 16:37:56 -070058config CHROMEOS
59 bool "Chrome OS Options"
60 default n
61 help
62 Select configuration defaults appropriate for Chrome OS boards.
63
Patrick Georgib7d8f262015-07-06 09:04:42 +000064choice
65 prompt "Compiler to use"
66 default COMPILER_GCC
67 help
68 This option allows you to select the compiler.
69
70config COMPILER_GCC
71 bool "GCC"
72 help
73 Use the GNU Compiler Collection (GCC).
74
75config COMPILER_LLVM_CLANG
76 bool "LLVM/clang"
77 help
78 Use LLVM/clang.
79
80endchoice
81
Jacob Garber04540f12019-10-02 18:55:07 -060082config LTO
83 bool "Use link time optimization (LTO)"
84 default n
85 depends on COMPILER_GCC
86 help
87 Compile with link time optimization. This can often decrease the
88 final binary size, but may increase compilation time.
89
Julius Werner50a81742014-05-15 11:57:38 -070090config REMOTEGDB
91 bool "Remote GDB stub"
92 default n
93 depends on GPL
94 help
95 Enable Remote GDB debugging support.
96
Stefan Reinauer1e6b86b2016-03-12 12:14:46 -080097config MEMMAP_RAM_ONLY
98 bool "Only consider RAM entries in memory map for further processing"
99 default n
100
Stefan Reinauere5d30b72010-03-25 22:15:19 +0000101endmenu
102
Jordan Crouse20c9cf12008-10-20 16:51:43 +0000103menu "Architecture Options"
104
Patrick Georgid385ed22009-05-21 10:02:52 +0000105choice
106 prompt "Target Architecture"
David Hendricks4b6be982012-11-30 13:56:31 -0800107 default ARCH_X86
Patrick Georgid385ed22009-05-21 10:02:52 +0000108
Gabe Black51edd542013-09-30 23:00:33 -0700109config ARCH_ARM
110 bool "ARM"
Stefan Reinauer8af0d032012-12-14 13:05:21 -0800111 help
Gabe Black51edd542013-09-30 23:00:33 -0700112 Support the ARM architecture
Stefan Reinauer8af0d032012-12-14 13:05:21 -0800113
David Hendricks4b6be982012-11-30 13:56:31 -0800114config ARCH_X86
Patrick Georgid385ed22009-05-21 10:02:52 +0000115 bool "x86"
116 help
117 Support the x86 architecture
118
Furquan Shaikh8c8c3772014-02-19 11:35:30 -0800119config ARCH_ARM64
120 bool "ARM64"
121 help
122 Support the ARM64 architecture
123
Patrick Georgid385ed22009-05-21 10:02:52 +0000124endchoice
125
Jordan Crouse20c9cf12008-10-20 16:51:43 +0000126config MULTIBOOT
127 bool "Multiboot header support"
David Hendricks4b6be982012-11-30 13:56:31 -0800128 depends on ARCH_X86
Julius Werner58caa8b2016-05-16 16:37:56 -0700129 default y if !CHROMEOS
Jordan Crouse20c9cf12008-10-20 16:51:43 +0000130
Stefan Reinauer82184452016-03-12 16:18:17 -0800131config HEAP_SIZE
132 int "Heap size"
133 default 131072
134 help
135 This is the heap size (malloc'able size) available
136 to the payload.
137
138 If unsure, set to 131072 (128K)
139
140config STACK_SIZE
141 int "Stack size"
142 default 16384
143 help
144 This is the stack size available to the payload.
145
146 If unsure, set to 16384 (16K)
147
148config BASE_ADDRESS
149 hex "Base address"
150 default 0x04000000 if ARCH_ARM
151 default 0x80100000 if ARCH_ARM64
Stefan Reinauer82184452016-03-12 16:18:17 -0800152 default 0x00100000 if ARCH_X86
153 help
154 This is the base address for the payload.
155
Julius Wernerf96d9052019-08-16 15:35:39 -0700156 If unsure, set to 0x00100000 on x86,
Stefan Reinauer82184452016-03-12 16:18:17 -0800157 0x04000000 on ARM or 0x80100000 on ARM64.
158
Jordan Crouse20c9cf12008-10-20 16:51:43 +0000159endmenu
160
Lee Leahy6796d782017-06-20 14:33:28 -0700161config USE_MARCH_586
162 bool "Use march=586 qualifier to build"
163 default n
164 depends on ARCH_X86
165 help
166 Allow a platform or processor to select to be compiled using
167 the '-march=i586' option instead of the typical '-march=i686'
168
Stefan Reinauer69863582008-08-08 13:45:03 +0000169menu "Standard Libraries"
170
171config LIBC
172 bool "Enable C library support"
173 default y
174
Patrick Georgi3b77b722011-07-07 15:41:53 +0200175config CURSES
176 bool "Build a curses library"
Julius Werner58caa8b2016-05-16 16:37:56 -0700177 default y if !CHROMEOS
Stefan Reinauer69863582008-08-08 13:45:03 +0000178
Patrick Georgi3b77b722011-07-07 15:41:53 +0200179choice
180 prompt "Curses implementation"
181 default PDCURSES
182 depends on CURSES
183
184config TINYCURSES
Paul Menzeldc1b3c12015-09-26 12:30:08 +0200185 bool "TinyCurses"
Patrick Georgi3b77b722011-07-07 15:41:53 +0200186 help
Paul Menzeldc1b3c12015-09-26 12:30:08 +0200187 TinyCurses was the first curses implementation for libpayload.
Patrick Georgi3b77b722011-07-07 15:41:53 +0200188 It features low memory consumption, static allocation of larger
189 data structures (so few or no memory allocation calls) and a
190 reduced feature set.
191
192config PDCURSES
193 bool "PDCurses"
Patrick Georgi3b77b722011-07-07 15:41:53 +0200194 help
195 libpayload's PDCurses port provides a full features curses
196 implementation, including libpanel, libmenu and libform (which
197 are taken from ncurses).
198 It requires more system resources, in particularily heap memory.
199
200endchoice
201
Stefan Reinauere5d30b72010-03-25 22:15:19 +0000202config CBFS
203 bool "CBFS support"
204 default y
205 help
Patrick Georgi6de1ee4a2011-07-21 15:43:14 +0200206 CBFS is the archive format of coreboot
207
208config LZMA
209 bool "LZMA decoder"
210 default y
211 help
212 LZMA decoder implementation, usable eg. by CBFS,
213 but also externally.
Julius Wernerbf273912015-06-30 10:30:30 -0700214
215config LZ4
216 bool "LZ4 decoder"
217 default y
218 help
219 Decoder implementation for the LZ4 compression algorithm.
220 Adds standalone functions (CBFS support coming soon).
Stefan Reinauer69863582008-08-08 13:45:03 +0000221endmenu
222
223menu "Console Options"
Uwe Hermann2d758b82008-03-31 15:21:24 +0000224
Gabe Black4bb07312012-10-05 11:43:39 -0700225config SKIP_CONSOLE_INIT
226 bool "Skip initializing the consoles at startup"
Julius Werner58caa8b2016-05-16 16:37:56 -0700227 default y if CHROMEOS
Gabe Black4bb07312012-10-05 11:43:39 -0700228 default n
229 help
230 Normally, libpayload will initialize console input/output on startup
231 before the payload itself gets control. This option disables that
232 behavior and leaves console initialization up to the payload.
233
Gabe Blacka54b6a62012-09-29 00:21:27 -0700234config CBMEM_CONSOLE
235 bool "Send output to the in memory CBMEM console"
236 default y
237
Jordan Crousef6145c32008-03-19 23:56:58 +0000238config SERIAL_CONSOLE
Uwe Hermann2d758b82008-03-31 15:21:24 +0000239 bool "See output on the serial port console"
240 default y
Jordan Crousef6145c32008-03-19 23:56:58 +0000241
Gabe Black9135cb42013-09-26 16:13:08 -0700242config 8250_SERIAL_CONSOLE
Alexandru Gagniuc4d5317e2015-11-23 16:18:12 -0800243 bool "8250-compatible serial port driver (including IO and MMIO)"
Gabe Black9135cb42013-09-26 16:13:08 -0700244 depends on SERIAL_CONSOLE
Julius Werner58caa8b2016-05-16 16:37:56 -0700245 default y if ARCH_X86
Ronald G. Minnich7b694542013-02-15 08:13:29 -0800246
Gabe Blacka6aecc42014-04-10 01:07:28 -0700247config S5P_SERIAL_CONSOLE
248 bool "Exynos SOC, S5P compatible serial port driver"
249 depends on SERIAL_CONSOLE
250 default n
251
Vadim Bendebury897123a2014-05-27 18:28:59 -0700252config IPQ806X_SERIAL_CONSOLE
253 bool "IPQ806x SOC compatible serial port driver"
254 depends on SERIAL_CONSOLE
255 default n
256
Varadarajan Narayananc1ae7e92016-02-01 11:32:12 +0530257config IPQ40XX_SERIAL_CONSOLE
258 bool "IPQ40xx SOC compatible serial port driver"
259 depends on SERIAL_CONSOLE
260 default n
261
Prudhvi Yarlagadda1b054792019-03-22 12:38:20 +0530262config QCS405_SERIAL_CONSOLE
263 bool "QCS405 SOC compatible serial port driver"
264 depends on SERIAL_CONSOLE
265 default n
266
T Michael Turney45473dd2019-10-10 12:26:15 -0700267config QUALCOMM_QUPV3_SERIAL_CONSOLE
268 bool "Qualcomm QUPV3 serial port driver"
269 depends on SERIAL_CONSOLE
270 default n
271
Marcelo Povoa558e9b52014-02-18 14:17:38 -0800272config PL011_SERIAL_CONSOLE
273 bool "PL011 compatible serial port driver"
274 depends on 8250_SERIAL_CONSOLE
275 default n
276
Jordan Crousef6145c32008-03-19 23:56:58 +0000277config SERIAL_IOBASE
Gabe Black9135cb42013-09-26 16:13:08 -0700278 ## This default is currently not used on non-x86 systems.
279 hex "Default I/O base for the serial port (default 0x3f8)"
280 depends on SERIAL_CONSOLE && ARCH_X86
Uwe Hermann2d758b82008-03-31 15:21:24 +0000281 default 0x3f8
282
Jordan Crousef6145c32008-03-19 23:56:58 +0000283config SERIAL_SET_SPEED
284 bool "Override the serial console baud rate"
285 default n
Uwe Hermannfad8c2b2008-04-11 18:01:50 +0000286 depends on SERIAL_CONSOLE
Jordan Crousef6145c32008-03-19 23:56:58 +0000287
288config SERIAL_BAUD_RATE
289 int "Serial console baud rate (default 115200)"
Uwe Hermannfad8c2b2008-04-11 18:01:50 +0000290 depends on SERIAL_SET_SPEED
Jordan Crousef6145c32008-03-19 23:56:58 +0000291 default 115200
292
Ulf Jordan2aea11f2008-08-18 19:29:41 +0000293config SERIAL_ACS_FALLBACK
294 bool "Use plain ASCII characters for ACS"
295 default n
296 depends on SERIAL_CONSOLE
297 help
298 The alternate character set (ACS) is used for drawing lines and
299 displaying a couple of other special graphics characters. The
300 ACS characters generally look good on screen, but can be difficult
301 to cut and paste from a terminal window to a text editor.
Stefan Reinauer14e22772010-04-27 06:56:47 +0000302
Ulf Jordan2aea11f2008-08-18 19:29:41 +0000303 Say 'y' here if you want to always use plain ASCII characters to
Stefan Reinauer14e22772010-04-27 06:56:47 +0000304 approximate the appearance of ACS characters on the serial port
Ulf Jordan2aea11f2008-08-18 19:29:41 +0000305 console.
306
Jordan Crouse30939bd2008-04-10 22:49:02 +0000307config VIDEO_CONSOLE
308 bool "See output on a video console"
309 default y
310
311config VGA_VIDEO_CONSOLE
312 bool "VGA video console driver"
Stefan Reinauer8af0d032012-12-14 13:05:21 -0800313 depends on ARCH_X86 && VIDEO_CONSOLE
Julius Werner58caa8b2016-05-16 16:37:56 -0700314 default y if !CHROMEOS
Jordan Crousef6145c32008-03-19 23:56:58 +0000315
Peter Stuge4b1971c2008-10-08 14:47:41 +0000316config GEODELX_VIDEO_CONSOLE
317 bool "Geode LX video console driver"
Stefan Reinauer8af0d032012-12-14 13:05:21 -0800318 depends on ARCH_X86 && VIDEO_CONSOLE
Jordan Crouse54315532008-04-11 15:48:21 +0000319 default n
320
Stefan Reinauerb7002542010-03-25 18:56:26 +0000321config COREBOOT_VIDEO_CONSOLE
322 bool "coreboot video console driver"
323 depends on VIDEO_CONSOLE && !GEODELX_VIDEO_CONSOLE
Julius Werner58caa8b2016-05-16 16:37:56 -0700324 default y if CHROMEOS
Stefan Reinauerb7002542010-03-25 18:56:26 +0000325 default n
326 help
327 Say Y here if coreboot switched to a graphics mode and
328 your payload wants to use it.
329
Nico Huberde748422020-01-23 13:23:09 +0100330config COREBOOT_VIDEO_CENTERED
331 bool "Center a classic 80x25 console on bigger screens"
332 depends on COREBOOT_VIDEO_CONSOLE
333 help
334 Say 'y' here if your payload is hardcoded to a 80x25 console. Otherwise
335 its output would look squeezed into the upper-left corner of the screen.
336
Paul Kocialkowskid85e4852017-07-23 16:05:47 +0300337config FONT_SCALE_FACTOR
338 int "Scale factor for the included font"
339 depends on GEODELX_VIDEO_CONSOLE || COREBOOT_VIDEO_CONSOLE
340 default 0
341 help
342 By default (value of 0), the scale factor is automatically
343 calculated to ensure at least 130 columns (when possible).
344
Julius Werner7f878122020-06-24 19:43:36 -0700345config CBGFX_FAST_RESAMPLE
346 bool "CBGFX: use faster (less pretty) image scaling"
347 default n
348 help
349 When payloads use the CBGFX library to draw .BMPs on the screen,
350 they will be resampled with an anti-aliasing filter to scale to the
351 requested output size. The default implementation should normally be
352 fast enough, but if desired this option can make it about 50-100%
353 faster at the cost of quality. (It changes the 'a' parameter in the
354 Lanczos resampling algorithm from 3 to 2.)
355
356 Only affects .BMPs that aren't already provided at the right size.
357
Patrick Rudolphe6a38212017-03-01 19:07:37 +0100358config PC_I8042
359 bool "A common PC i8042 driver"
Patrick Rudolph5afc2932017-02-06 15:26:58 +0100360 default y if PC_KEYBOARD || PC_MOUSE
Patrick Rudolphe6a38212017-03-01 19:07:37 +0100361 default n
362 help
363 To be used by PC_KEYBOARD and PC_MOUSE.
364
Patrick Rudolph5afc2932017-02-06 15:26:58 +0100365config PC_MOUSE
366 bool "Allow input from a PC mouse"
Patrick Georgie8604b82018-05-17 17:57:14 +0200367 default n if CHROMEOS
Patrick Rudolph5afc2932017-02-06 15:26:58 +0100368 default y if ARCH_X86 # uses IO
369 default n
370 help
371 PS/2 mouse driver on top of PC_I8042.
372
Jordan Crousef6145c32008-03-19 23:56:58 +0000373config PC_KEYBOARD
Uwe Hermann2d758b82008-03-31 15:21:24 +0000374 bool "Allow input from a PC keyboard"
Marc Jones019bacb42014-12-23 15:22:30 -0700375 default y if ARCH_X86 # uses IO
376 default n
Jordan Crousef6145c32008-03-19 23:56:58 +0000377
Stefan Reinauerd84ef1e2008-09-26 18:37:26 +0000378config PC_KEYBOARD_LAYOUT_US
379 bool "English (US) keyboard layout"
380 depends on PC_KEYBOARD
381 default y
382
383config PC_KEYBOARD_LAYOUT_DE
384 bool "German keyboard layout"
385 depends on PC_KEYBOARD
386 default n
387
Stefan Reinauer69863582008-08-08 13:45:03 +0000388endmenu
389
390menu "Drivers"
391
392config PCI
393 bool "Support for PCI devices"
Stefan Reinauer8af0d032012-12-14 13:05:21 -0800394 depends on ARCH_X86 # for now
Stefan Reinauer69863582008-08-08 13:45:03 +0000395 default y
396
Uwe Hermannc16d24e2008-03-31 15:17:39 +0000397config NVRAM
Uwe Hermann2d758b82008-03-31 15:21:24 +0000398 bool "Support for reading/writing NVRAM bytes"
Stefan Reinauer8af0d032012-12-14 13:05:21 -0800399 depends on ARCH_X86 # for now
Uwe Hermann2d758b82008-03-31 15:21:24 +0000400 default y
Uwe Hermann8cc38d22008-03-27 23:26:40 +0000401
Patrick Rudolph837da6a2017-02-06 15:02:25 +0100402config MOUSE_CURSOR
403 bool "Support for mouse cursor handling"
Patrick Rudolph5afc2932017-02-06 15:26:58 +0100404 default y if PC_MOUSE
Patrick Rudolph837da6a2017-02-06 15:02:25 +0100405 default n
406 help
407 Provides a common interface for various mouse cursor drivers.
408 * Supports up to 32 buttons.
409 * Supports 3 axis mice.
410 * Applies simple cursor acceleration.
411 * Allows to set cursor acceleration and cursor speed.
412
Uwe Hermann30d789b2008-03-31 20:21:49 +0000413config RTC_PORT_EXTENDED_VIA
414 bool "Extended RTC ports are 0x74/0x75"
415 default n
416 help
417 For recent chipsets with 256 NVRAM bytes, you have to access the
418 upper 128 bytes (128-255) using two different I/O ports,
419 usually 0x72/0x73.
Stefan Reinauer14e22772010-04-27 06:56:47 +0000420
Uwe Hermann30d789b2008-03-31 20:21:49 +0000421 On some chipsets this can be a different set of ports, though.
422 The VIA VT8237R for example only recognizes the ports 0x74/0x75
423 for accessing the high 128 NVRAM bytes (as seems to be the case for
424 multiple VIA chipsets).
Stefan Reinauer14e22772010-04-27 06:56:47 +0000425
Uwe Hermann30d789b2008-03-31 20:21:49 +0000426 If you want to read or write CMOS bytes on computers with one of
427 these chipsets, say 'y' here.
428
Stefan Reinauer69863582008-08-08 13:45:03 +0000429config SPEAKER
430 bool "Support for PC speaker"
Stefan Reinauer8af0d032012-12-14 13:05:21 -0800431 depends on ARCH_X86
Julius Werner58caa8b2016-05-16 16:37:56 -0700432 default y if !CHROMEOS
Jordan Crousef6145c32008-03-19 23:56:58 +0000433
Antonello Dettoriaded2142016-07-27 12:41:04 +0200434source "drivers/timer/Kconfig"
435source "drivers/storage/Kconfig"
436source "drivers/usb/Kconfig"
huang lin41e24992015-05-20 17:27:10 +0800437
Stefan Reinauere5d30b72010-03-25 22:15:19 +0000438endmenu
439
440menu "Debugging"
441 depends on DEVELOPER
442
443config DEBUG_MALLOC
444 bool "Debug memory allocator"
Stefan Reinauere5d30b72010-03-25 22:15:19 +0000445 default n
446 help
447 Select this option if you want to debug the memory allocator. This
448 option logs all uses of the following functions:
449
450 void free(void *ptr);
451 void *malloc(size_t size);
452 void *calloc(size_t nmemb, size_t size);
453 void *realloc(void *ptr, size_t size);
454 void *memalign(size_t align, size_t size);
455
456 Say N here unless you are debugging memory allocator problems.
Patrick Georgid21f68b2008-09-02 16:06:22 +0000457
Jordan Crousef6145c32008-03-19 23:56:58 +0000458endmenu
Stefan Reinauer69863582008-08-08 13:45:03 +0000459
Gabe Black0af03d22012-03-19 03:06:46 -0700460config BIG_ENDIAN
461 default n
462 bool
463
464config LITTLE_ENDIAN
465 default n
466 bool
467
Gabe Blackd2679872013-01-18 15:49:00 -0800468config IO_ADDRESS_SPACE
469 default n
470 bool
Stefan Reinauer347a7522016-03-12 11:48:44 -0800471 help
472 This option is turned on if the target system has a separate
473 IO address space. This is typically only the case on x86.
Gabe Blackd2679872013-01-18 15:49:00 -0800474
Stefan Reinauerdee44202015-06-11 14:33:11 -0700475source "arch/arm/Kconfig"
476source "arch/arm64/Kconfig"
Stefan Reinauerdee44202015-06-11 14:33:11 -0700477source "arch/x86/Kconfig"