blob: 2a5048cbabd8a3dd4142cd45911e9bd0003dbc17 [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
35config EXPERIMENTAL
36 bool "Experimental Options"
37 default n
38 help
39 Prompt for experimental functionality. Attention: This is not likely
40 to work without problems
41
42config OBSOLETE
43 bool "Obsolete Options"
44 default n
45 help
46 Prompt for obsolete options. These options are for old, unsupported
47 features and are likely to go away in the future.
48
49config DEVELOPER
50 bool "Developer Options"
51 default n
52 help
53 Prompt for developer options. These options are only interesting for
54 libpayload developers.
55
Gabe Blackd3890cc2012-03-11 01:57:53 -080056config CHROMEOS
57 bool "ChromeOS specific features"
58 default n
59 help
60 Enable ChromeOS specific features.
61
Stefan Reinauere5d30b72010-03-25 22:15:19 +000062endmenu
63
Jordan Crouse20c9cf12008-10-20 16:51:43 +000064menu "Architecture Options"
65
Patrick Georgid385ed22009-05-21 10:02:52 +000066choice
67 prompt "Target Architecture"
David Hendricks4b6be982012-11-30 13:56:31 -080068 default ARCH_X86
Patrick Georgid385ed22009-05-21 10:02:52 +000069
Gabe Black51edd542013-09-30 23:00:33 -070070config ARCH_ARM
71 bool "ARM"
Stefan Reinauer8af0d032012-12-14 13:05:21 -080072 help
Gabe Black51edd542013-09-30 23:00:33 -070073 Support the ARM architecture
Stefan Reinauer8af0d032012-12-14 13:05:21 -080074
David Hendricks4b6be982012-11-30 13:56:31 -080075config ARCH_X86
Patrick Georgid385ed22009-05-21 10:02:52 +000076 bool "x86"
77 help
78 Support the x86 architecture
79
Patrick Georgid385ed22009-05-21 10:02:52 +000080endchoice
81
Patrick Georgi7f965832011-04-21 18:57:16 +020082config MEMMAP_RAM_ONLY
83 bool "Only consider RAM entries in memory map for further processing"
84 default n
85
Jordan Crouse20c9cf12008-10-20 16:51:43 +000086config MULTIBOOT
87 bool "Multiboot header support"
David Hendricks4b6be982012-11-30 13:56:31 -080088 depends on ARCH_X86
Jordan Crouse20c9cf12008-10-20 16:51:43 +000089 default y
90
91endmenu
92
Stefan Reinauer69863582008-08-08 13:45:03 +000093menu "Standard Libraries"
94
95config LIBC
96 bool "Enable C library support"
97 default y
98
Patrick Georgi3b77b722011-07-07 15:41:53 +020099config CURSES
100 bool "Build a curses library"
Stefan Reinauer69863582008-08-08 13:45:03 +0000101 default y
102
Patrick Georgi3b77b722011-07-07 15:41:53 +0200103choice
104 prompt "Curses implementation"
105 default PDCURSES
106 depends on CURSES
107
108config TINYCURSES
109 bool "Tinycurses"
110 help
111 Tinycurses was the first curses implementation for libpayload.
112 It features low memory consumption, static allocation of larger
113 data structures (so few or no memory allocation calls) and a
114 reduced feature set.
115
116config PDCURSES
117 bool "PDCurses"
Patrick Georgi3b77b722011-07-07 15:41:53 +0200118 help
119 libpayload's PDCurses port provides a full features curses
120 implementation, including libpanel, libmenu and libform (which
121 are taken from ncurses).
122 It requires more system resources, in particularily heap memory.
123
124endchoice
125
Stefan Reinauere5d30b72010-03-25 22:15:19 +0000126config LAR
127 bool "LAR support"
128 default n
129 depends on OBSOLETE
130 help
131 LAR is the archive format of (obsolete) coreboot v3
132
133config CBFS
134 bool "CBFS support"
135 default y
136 help
Patrick Georgi6de1ee4a2011-07-21 15:43:14 +0200137 CBFS is the archive format of coreboot
138
139config LZMA
140 bool "LZMA decoder"
141 default y
142 help
143 LZMA decoder implementation, usable eg. by CBFS,
144 but also externally.
Stefan Reinauer69863582008-08-08 13:45:03 +0000145endmenu
146
147menu "Console Options"
Uwe Hermann2d758b82008-03-31 15:21:24 +0000148
Gabe Black4bb07312012-10-05 11:43:39 -0700149config SKIP_CONSOLE_INIT
150 bool "Skip initializing the consoles at startup"
151 default n
152 help
153 Normally, libpayload will initialize console input/output on startup
154 before the payload itself gets control. This option disables that
155 behavior and leaves console initialization up to the payload.
156
Gabe Blacka54b6a62012-09-29 00:21:27 -0700157config CBMEM_CONSOLE
158 bool "Send output to the in memory CBMEM console"
159 default y
160
Jordan Crousef6145c32008-03-19 23:56:58 +0000161config SERIAL_CONSOLE
Uwe Hermann2d758b82008-03-31 15:21:24 +0000162 bool "See output on the serial port console"
163 default y
Jordan Crousef6145c32008-03-19 23:56:58 +0000164
Gabe Black9135cb42013-09-26 16:13:08 -0700165config 8250_SERIAL_CONSOLE
166 bool "8250, 16450, 16550, 16550A compatible serial port driver"
167 depends on SERIAL_CONSOLE
168 default y if ARCH_X86
169 default n if !ARCH_X86
Ronald G. Minnich7b694542013-02-15 08:13:29 -0800170
Jordan Crousef6145c32008-03-19 23:56:58 +0000171config SERIAL_IOBASE
Gabe Black9135cb42013-09-26 16:13:08 -0700172 ## This default is currently not used on non-x86 systems.
173 hex "Default I/O base for the serial port (default 0x3f8)"
174 depends on SERIAL_CONSOLE && ARCH_X86
Uwe Hermann2d758b82008-03-31 15:21:24 +0000175 default 0x3f8
176
Jordan Crousef6145c32008-03-19 23:56:58 +0000177config SERIAL_SET_SPEED
178 bool "Override the serial console baud rate"
179 default n
Uwe Hermannfad8c2b2008-04-11 18:01:50 +0000180 depends on SERIAL_CONSOLE
Jordan Crousef6145c32008-03-19 23:56:58 +0000181
182config SERIAL_BAUD_RATE
183 int "Serial console baud rate (default 115200)"
Uwe Hermannfad8c2b2008-04-11 18:01:50 +0000184 depends on SERIAL_SET_SPEED
Jordan Crousef6145c32008-03-19 23:56:58 +0000185 default 115200
186
Ulf Jordan2aea11f2008-08-18 19:29:41 +0000187config SERIAL_ACS_FALLBACK
188 bool "Use plain ASCII characters for ACS"
189 default n
190 depends on SERIAL_CONSOLE
191 help
192 The alternate character set (ACS) is used for drawing lines and
193 displaying a couple of other special graphics characters. The
194 ACS characters generally look good on screen, but can be difficult
195 to cut and paste from a terminal window to a text editor.
Stefan Reinauer14e22772010-04-27 06:56:47 +0000196
Ulf Jordan2aea11f2008-08-18 19:29:41 +0000197 Say 'y' here if you want to always use plain ASCII characters to
Stefan Reinauer14e22772010-04-27 06:56:47 +0000198 approximate the appearance of ACS characters on the serial port
Ulf Jordan2aea11f2008-08-18 19:29:41 +0000199 console.
200
Jordan Crouse30939bd2008-04-10 22:49:02 +0000201config VIDEO_CONSOLE
202 bool "See output on a video console"
203 default y
204
205config VGA_VIDEO_CONSOLE
206 bool "VGA video console driver"
Stefan Reinauer8af0d032012-12-14 13:05:21 -0800207 depends on ARCH_X86 && VIDEO_CONSOLE
Uwe Hermann2d758b82008-03-31 15:21:24 +0000208 default y
Jordan Crousef6145c32008-03-19 23:56:58 +0000209
Peter Stuge4b1971c2008-10-08 14:47:41 +0000210config GEODELX_VIDEO_CONSOLE
211 bool "Geode LX video console driver"
Stefan Reinauer8af0d032012-12-14 13:05:21 -0800212 depends on ARCH_X86 && VIDEO_CONSOLE
Jordan Crouse54315532008-04-11 15:48:21 +0000213 default n
214
Stefan Reinauerb7002542010-03-25 18:56:26 +0000215config COREBOOT_VIDEO_CONSOLE
216 bool "coreboot video console driver"
217 depends on VIDEO_CONSOLE && !GEODELX_VIDEO_CONSOLE
218 default n
219 help
220 Say Y here if coreboot switched to a graphics mode and
221 your payload wants to use it.
222
Jordan Crousef6145c32008-03-19 23:56:58 +0000223config PC_KEYBOARD
Uwe Hermann2d758b82008-03-31 15:21:24 +0000224 bool "Allow input from a PC keyboard"
Uwe Hermann2d758b82008-03-31 15:21:24 +0000225 default y
Jordan Crousef6145c32008-03-19 23:56:58 +0000226
Stefan Reinauerd84ef1e2008-09-26 18:37:26 +0000227config PC_KEYBOARD_LAYOUT_US
228 bool "English (US) keyboard layout"
229 depends on PC_KEYBOARD
230 default y
231
232config PC_KEYBOARD_LAYOUT_DE
233 bool "German keyboard layout"
234 depends on PC_KEYBOARD
235 default n
236
Stefan Reinauer69863582008-08-08 13:45:03 +0000237endmenu
238
239menu "Drivers"
240
241config PCI
242 bool "Support for PCI devices"
Stefan Reinauer8af0d032012-12-14 13:05:21 -0800243 depends on ARCH_X86 # for now
Stefan Reinauer69863582008-08-08 13:45:03 +0000244 default y
245
Uwe Hermannc16d24e2008-03-31 15:17:39 +0000246config NVRAM
Uwe Hermann2d758b82008-03-31 15:21:24 +0000247 bool "Support for reading/writing NVRAM bytes"
Stefan Reinauer8af0d032012-12-14 13:05:21 -0800248 depends on ARCH_X86 # for now
Uwe Hermann2d758b82008-03-31 15:21:24 +0000249 default y
Uwe Hermann8cc38d22008-03-27 23:26:40 +0000250
Uwe Hermann30d789b2008-03-31 20:21:49 +0000251config RTC_PORT_EXTENDED_VIA
252 bool "Extended RTC ports are 0x74/0x75"
253 default n
254 help
255 For recent chipsets with 256 NVRAM bytes, you have to access the
256 upper 128 bytes (128-255) using two different I/O ports,
257 usually 0x72/0x73.
Stefan Reinauer14e22772010-04-27 06:56:47 +0000258
Uwe Hermann30d789b2008-03-31 20:21:49 +0000259 On some chipsets this can be a different set of ports, though.
260 The VIA VT8237R for example only recognizes the ports 0x74/0x75
261 for accessing the high 128 NVRAM bytes (as seems to be the case for
262 multiple VIA chipsets).
Stefan Reinauer14e22772010-04-27 06:56:47 +0000263
Uwe Hermann30d789b2008-03-31 20:21:49 +0000264 If you want to read or write CMOS bytes on computers with one of
265 these chipsets, say 'y' here.
266
Stefan Reinauer69863582008-08-08 13:45:03 +0000267config SPEAKER
268 bool "Support for PC speaker"
Stefan Reinauer8af0d032012-12-14 13:05:21 -0800269 depends on ARCH_X86
Uwe Hermann2d758b82008-03-31 15:21:24 +0000270 default y
Jordan Crousef6145c32008-03-19 23:56:58 +0000271
Nico Huber1f6bd942012-08-30 15:36:57 +0200272config STORAGE
273 bool "Support for storage devices"
274 default y
275 help
276 Select this option if you want support for storage devices (like
277 hard drives, memory sticks or optical drives).
278
279config STORAGE_64BIT_LBA
280 bool "Use 64-bit integers to address sectors"
281 depends on STORAGE
282 default n
283 help
284 If this is selected, sectors will be addressed by an 64-bit integer.
285 Select this to support LBA-48 for ATA drives.
286
287config STORAGE_ATA
288 bool "Support ATA drives (i.e. hard drives)"
289 depends on STORAGE
290 default y
291 help
292 Select this option if you want support for ATA storage devices
293 (i.e. hard drives).
294
295config STORAGE_ATAPI
296 bool "Support ATAPI drives (i.e. optical drives)"
297 depends on STORAGE
298 default y
299 select STORAGE_ATA
300 help
301 Select this option if you want support for ATAPI storage devices
302 (i.e. optical drives like CD or DVD drives).
303
304config STORAGE_AHCI
305 bool "Support for AHCI host controllers"
306 depends on STORAGE && (STORAGE_ATA || STORAGE_ATAPI) && PCI
307 default y
308 help
309 Select this option if you want support for SATA controllers in
310 AHCI mode.
311
312config STORAGE_AHCI_ONLY_TESTED
313 bool "Only enable tested controllers"
314 depends on STORAGE_AHCI
315 default y
316 help
317 If this option is selected only AHCI controllers which are known
318 to work will be used.
319
Patrick Georgid21f68b2008-09-02 16:06:22 +0000320config USB
321 bool "USB Support"
322 default n
323
324config USB_UHCI
325 bool "Support for USB UHCI controllers"
Stefan Reinauer8992e532013-05-02 16:16:41 -0700326 depends on USB && ARCH_X86
Patrick Georgid21f68b2008-09-02 16:06:22 +0000327 help
328 Select this option if you are going to use USB 1.1 on an Intel based
329 system.
330
331config USB_OHCI
332 bool "Support for USB OHCI controllers"
333 depends on USB
334 help
Stefan Reinauer8992e532013-05-02 16:16:41 -0700335 Select this option if you are going to use USB 1.1 on a non-Intel based
Patrick Georgid21f68b2008-09-02 16:06:22 +0000336 system.
Patrick Georgid21f68b2008-09-02 16:06:22 +0000337
338config USB_EHCI
339 bool "Support for USB EHCI controllers"
340 depends on USB
341 help
342 Select this option if you want to use USB 2.0
Patrick Georgid21f68b2008-09-02 16:06:22 +0000343
Patrick Georgi6615ef32010-08-13 09:18:58 +0000344config USB_XHCI
345 bool "Support for USB xHCI controllers"
346 depends on USB
347 help
348 Select this option if you want to use USB 3.0
349 NOTE: This option is not (fully) implemented yet
350
Patrick Georgid21f68b2008-09-02 16:06:22 +0000351config USB_HID
Stefan Reinauere5d30b72010-03-25 22:15:19 +0000352 bool "Support for USB keyboards"
Patrick Georgid21f68b2008-09-02 16:06:22 +0000353 depends on USB
Stefan Reinauere5d30b72010-03-25 22:15:19 +0000354 default y
355 help
356 Select this option if you want to use devices complying to the
357 USB HID (Human Interface Device) standard. Such devices are for
358 example keyboards and mice. Currently only keyboards are supported.
359 Say Y here unless you know exactly what you are doing.
Patrick Georgid21f68b2008-09-02 16:06:22 +0000360
361config USB_HUB
Stefan Reinauere5d30b72010-03-25 22:15:19 +0000362 bool "Support for USB hubs"
Patrick Georgid21f68b2008-09-02 16:06:22 +0000363 depends on USB
Stefan Reinauere5d30b72010-03-25 22:15:19 +0000364 default y
365 help
366 Select this option if you want to compile in support for USB hubs.
367 Say Y here unless you know exactly what you are doing.
Patrick Georgid21f68b2008-09-02 16:06:22 +0000368
369config USB_MSC
370 bool "Support for USB storage"
371 depends on USB
Stefan Reinauere5d30b72010-03-25 22:15:19 +0000372 default y
373 help
374 Select this option if you want to compile in support for USB mass
375 storage devices (USB memory sticks, hard drives, CDROM/DVD drives)
376 Say Y here unless you know exactly what you are doing.
Patrick Georgid21f68b2008-09-02 16:06:22 +0000377
Nico Huber0b78de22013-05-29 15:01:17 +0200378config USB_GEN_HUB
379 bool
Nico Huber90292652013-06-13 14:37:15 +0200380 default n if (!USB_HUB && !USB_XHCI)
381 default y if (USB_HUB || USB_XHCI)
Stefan Reinauer8992e532013-05-02 16:16:41 -0700382config USB_PCI
Julius Wernerd7c25b32013-09-04 17:20:32 -0700383 bool "Auto-scan PCI bus for USB host controllers"
384 depends on USB
Stefan Reinauer8992e532013-05-02 16:16:41 -0700385 default y if ARCH_X86
386 default n
387
Stefan Reinauere5d30b72010-03-25 22:15:19 +0000388endmenu
389
390menu "Debugging"
391 depends on DEVELOPER
392
393config DEBUG_MALLOC
394 bool "Debug memory allocator"
395 depends on USB
396 default n
397 help
398 Select this option if you want to debug the memory allocator. This
399 option logs all uses of the following functions:
400
401 void free(void *ptr);
402 void *malloc(size_t size);
403 void *calloc(size_t nmemb, size_t size);
404 void *realloc(void *ptr, size_t size);
405 void *memalign(size_t align, size_t size);
406
407 Say N here unless you are debugging memory allocator problems.
Patrick Georgid21f68b2008-09-02 16:06:22 +0000408
Jordan Crousef6145c32008-03-19 23:56:58 +0000409endmenu
Stefan Reinauer69863582008-08-08 13:45:03 +0000410
Gabe Black0af03d22012-03-19 03:06:46 -0700411config BIG_ENDIAN
412 default n
413 bool
414
415config LITTLE_ENDIAN
416 default n
417 bool
418
Gabe Blackd2679872013-01-18 15:49:00 -0800419# Whether the target system has an IO address space.
420config IO_ADDRESS_SPACE
421 default n
422 bool
423
Gabe Black0af03d22012-03-19 03:06:46 -0700424source "arch/Config.in"