blob: 466a4f277432cf73ee6d48edab2ddf543543c9c4 [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
Gabe Blacka6aecc42014-04-10 01:07:28 -0700171config S5P_SERIAL_CONSOLE
172 bool "Exynos SOC, S5P compatible serial port driver"
173 depends on SERIAL_CONSOLE
174 default n
175
176config TEGRA_SERIAL_CONSOLE
177 bool "Tegra SOC compatible serial port driver"
178 depends on SERIAL_CONSOLE
179 default n
180
Jordan Crousef6145c32008-03-19 23:56:58 +0000181config SERIAL_IOBASE
Gabe Black9135cb42013-09-26 16:13:08 -0700182 ## This default is currently not used on non-x86 systems.
183 hex "Default I/O base for the serial port (default 0x3f8)"
184 depends on SERIAL_CONSOLE && ARCH_X86
Uwe Hermann2d758b82008-03-31 15:21:24 +0000185 default 0x3f8
186
Jordan Crousef6145c32008-03-19 23:56:58 +0000187config SERIAL_SET_SPEED
188 bool "Override the serial console baud rate"
189 default n
Uwe Hermannfad8c2b2008-04-11 18:01:50 +0000190 depends on SERIAL_CONSOLE
Jordan Crousef6145c32008-03-19 23:56:58 +0000191
192config SERIAL_BAUD_RATE
193 int "Serial console baud rate (default 115200)"
Uwe Hermannfad8c2b2008-04-11 18:01:50 +0000194 depends on SERIAL_SET_SPEED
Jordan Crousef6145c32008-03-19 23:56:58 +0000195 default 115200
196
Ulf Jordan2aea11f2008-08-18 19:29:41 +0000197config SERIAL_ACS_FALLBACK
198 bool "Use plain ASCII characters for ACS"
199 default n
200 depends on SERIAL_CONSOLE
201 help
202 The alternate character set (ACS) is used for drawing lines and
203 displaying a couple of other special graphics characters. The
204 ACS characters generally look good on screen, but can be difficult
205 to cut and paste from a terminal window to a text editor.
Stefan Reinauer14e22772010-04-27 06:56:47 +0000206
Ulf Jordan2aea11f2008-08-18 19:29:41 +0000207 Say 'y' here if you want to always use plain ASCII characters to
Stefan Reinauer14e22772010-04-27 06:56:47 +0000208 approximate the appearance of ACS characters on the serial port
Ulf Jordan2aea11f2008-08-18 19:29:41 +0000209 console.
210
Jordan Crouse30939bd2008-04-10 22:49:02 +0000211config VIDEO_CONSOLE
212 bool "See output on a video console"
213 default y
214
215config VGA_VIDEO_CONSOLE
216 bool "VGA video console driver"
Stefan Reinauer8af0d032012-12-14 13:05:21 -0800217 depends on ARCH_X86 && VIDEO_CONSOLE
Uwe Hermann2d758b82008-03-31 15:21:24 +0000218 default y
Jordan Crousef6145c32008-03-19 23:56:58 +0000219
Peter Stuge4b1971c2008-10-08 14:47:41 +0000220config GEODELX_VIDEO_CONSOLE
221 bool "Geode LX video console driver"
Stefan Reinauer8af0d032012-12-14 13:05:21 -0800222 depends on ARCH_X86 && VIDEO_CONSOLE
Jordan Crouse54315532008-04-11 15:48:21 +0000223 default n
224
Stefan Reinauerb7002542010-03-25 18:56:26 +0000225config COREBOOT_VIDEO_CONSOLE
226 bool "coreboot video console driver"
227 depends on VIDEO_CONSOLE && !GEODELX_VIDEO_CONSOLE
228 default n
229 help
230 Say Y here if coreboot switched to a graphics mode and
231 your payload wants to use it.
232
Jordan Crousef6145c32008-03-19 23:56:58 +0000233config PC_KEYBOARD
Uwe Hermann2d758b82008-03-31 15:21:24 +0000234 bool "Allow input from a PC keyboard"
Uwe Hermann2d758b82008-03-31 15:21:24 +0000235 default y
Jordan Crousef6145c32008-03-19 23:56:58 +0000236
Stefan Reinauerd84ef1e2008-09-26 18:37:26 +0000237config PC_KEYBOARD_LAYOUT_US
238 bool "English (US) keyboard layout"
239 depends on PC_KEYBOARD
240 default y
241
242config PC_KEYBOARD_LAYOUT_DE
243 bool "German keyboard layout"
244 depends on PC_KEYBOARD
245 default n
246
Stefan Reinauer69863582008-08-08 13:45:03 +0000247endmenu
248
249menu "Drivers"
250
251config PCI
252 bool "Support for PCI devices"
Stefan Reinauer8af0d032012-12-14 13:05:21 -0800253 depends on ARCH_X86 # for now
Stefan Reinauer69863582008-08-08 13:45:03 +0000254 default y
255
Uwe Hermannc16d24e2008-03-31 15:17:39 +0000256config NVRAM
Uwe Hermann2d758b82008-03-31 15:21:24 +0000257 bool "Support for reading/writing NVRAM bytes"
Stefan Reinauer8af0d032012-12-14 13:05:21 -0800258 depends on ARCH_X86 # for now
Uwe Hermann2d758b82008-03-31 15:21:24 +0000259 default y
Uwe Hermann8cc38d22008-03-27 23:26:40 +0000260
Uwe Hermann30d789b2008-03-31 20:21:49 +0000261config RTC_PORT_EXTENDED_VIA
262 bool "Extended RTC ports are 0x74/0x75"
263 default n
264 help
265 For recent chipsets with 256 NVRAM bytes, you have to access the
266 upper 128 bytes (128-255) using two different I/O ports,
267 usually 0x72/0x73.
Stefan Reinauer14e22772010-04-27 06:56:47 +0000268
Uwe Hermann30d789b2008-03-31 20:21:49 +0000269 On some chipsets this can be a different set of ports, though.
270 The VIA VT8237R for example only recognizes the ports 0x74/0x75
271 for accessing the high 128 NVRAM bytes (as seems to be the case for
272 multiple VIA chipsets).
Stefan Reinauer14e22772010-04-27 06:56:47 +0000273
Uwe Hermann30d789b2008-03-31 20:21:49 +0000274 If you want to read or write CMOS bytes on computers with one of
275 these chipsets, say 'y' here.
276
Stefan Reinauer69863582008-08-08 13:45:03 +0000277config SPEAKER
278 bool "Support for PC speaker"
Stefan Reinauer8af0d032012-12-14 13:05:21 -0800279 depends on ARCH_X86
Uwe Hermann2d758b82008-03-31 15:21:24 +0000280 default y
Jordan Crousef6145c32008-03-19 23:56:58 +0000281
Nico Huber1f6bd942012-08-30 15:36:57 +0200282config STORAGE
283 bool "Support for storage devices"
284 default y
285 help
286 Select this option if you want support for storage devices (like
287 hard drives, memory sticks or optical drives).
288
289config STORAGE_64BIT_LBA
290 bool "Use 64-bit integers to address sectors"
291 depends on STORAGE
292 default n
293 help
294 If this is selected, sectors will be addressed by an 64-bit integer.
295 Select this to support LBA-48 for ATA drives.
296
297config STORAGE_ATA
298 bool "Support ATA drives (i.e. hard drives)"
299 depends on STORAGE
300 default y
301 help
302 Select this option if you want support for ATA storage devices
303 (i.e. hard drives).
304
305config STORAGE_ATAPI
306 bool "Support ATAPI drives (i.e. optical drives)"
307 depends on STORAGE
308 default y
309 select STORAGE_ATA
310 help
311 Select this option if you want support for ATAPI storage devices
312 (i.e. optical drives like CD or DVD drives).
313
314config STORAGE_AHCI
315 bool "Support for AHCI host controllers"
316 depends on STORAGE && (STORAGE_ATA || STORAGE_ATAPI) && PCI
317 default y
318 help
319 Select this option if you want support for SATA controllers in
320 AHCI mode.
321
322config STORAGE_AHCI_ONLY_TESTED
323 bool "Only enable tested controllers"
324 depends on STORAGE_AHCI
325 default y
326 help
327 If this option is selected only AHCI controllers which are known
328 to work will be used.
329
Gabe Blackd4d29a12014-04-10 02:36:49 -0700330config TIMER_RDTSC
331 bool
332 default y
333 depends on ARCH_X86
334
335choice
336 prompt "Timer driver"
337 default TIMER_NONE
338 depends on !ARCH_X86
339
340config TIMER_NONE
341 bool "None"
342 help
343 The timer driver is provided by the payload itself.
344
345config TIMER_MCT
346 bool "Exynos MCT"
347
348config TIMER_TEGRA_1US
349 bool "Tegra 1us"
350
351endchoice
352
353config TIMER_MCT_HZ
354 int "Exynos MCT frequency"
355 depends on TIMER_MCT
356 default 24000000
357
358config TIMER_MCT_ADDRESS
359 hex "Exynos MCT base address"
360 depends on TIMER_MCT
361 default 0x101c0000
362
363config TIMER_TEGRA_1US_ADDRESS
364 hex "Tegra u1s timer base address"
365 depends on TIMER_TEGRA_1US
366 default 0x60005010
367
Patrick Georgid21f68b2008-09-02 16:06:22 +0000368config USB
369 bool "USB Support"
370 default n
371
372config USB_UHCI
373 bool "Support for USB UHCI controllers"
Stefan Reinauer8992e532013-05-02 16:16:41 -0700374 depends on USB && ARCH_X86
Patrick Georgid21f68b2008-09-02 16:06:22 +0000375 help
376 Select this option if you are going to use USB 1.1 on an Intel based
377 system.
378
379config USB_OHCI
380 bool "Support for USB OHCI controllers"
381 depends on USB
382 help
Stefan Reinauer8992e532013-05-02 16:16:41 -0700383 Select this option if you are going to use USB 1.1 on a non-Intel based
Patrick Georgid21f68b2008-09-02 16:06:22 +0000384 system.
Patrick Georgid21f68b2008-09-02 16:06:22 +0000385
386config USB_EHCI
387 bool "Support for USB EHCI controllers"
388 depends on USB
389 help
390 Select this option if you want to use USB 2.0
Patrick Georgid21f68b2008-09-02 16:06:22 +0000391
Patrick Georgi6615ef32010-08-13 09:18:58 +0000392config USB_XHCI
393 bool "Support for USB xHCI controllers"
394 depends on USB
395 help
396 Select this option if you want to use USB 3.0
397 NOTE: This option is not (fully) implemented yet
398
Patrick Georgid21f68b2008-09-02 16:06:22 +0000399config USB_HID
Stefan Reinauere5d30b72010-03-25 22:15:19 +0000400 bool "Support for USB keyboards"
Patrick Georgid21f68b2008-09-02 16:06:22 +0000401 depends on USB
Stefan Reinauere5d30b72010-03-25 22:15:19 +0000402 default y
403 help
404 Select this option if you want to use devices complying to the
405 USB HID (Human Interface Device) standard. Such devices are for
406 example keyboards and mice. Currently only keyboards are supported.
407 Say Y here unless you know exactly what you are doing.
Patrick Georgid21f68b2008-09-02 16:06:22 +0000408
409config USB_HUB
Stefan Reinauere5d30b72010-03-25 22:15:19 +0000410 bool "Support for USB hubs"
Patrick Georgid21f68b2008-09-02 16:06:22 +0000411 depends on USB
Stefan Reinauere5d30b72010-03-25 22:15:19 +0000412 default y
413 help
414 Select this option if you want to compile in support for USB hubs.
415 Say Y here unless you know exactly what you are doing.
Patrick Georgid21f68b2008-09-02 16:06:22 +0000416
417config USB_MSC
418 bool "Support for USB storage"
419 depends on USB
Stefan Reinauere5d30b72010-03-25 22:15:19 +0000420 default y
421 help
422 Select this option if you want to compile in support for USB mass
423 storage devices (USB memory sticks, hard drives, CDROM/DVD drives)
424 Say Y here unless you know exactly what you are doing.
Patrick Georgid21f68b2008-09-02 16:06:22 +0000425
Nico Huber0b78de22013-05-29 15:01:17 +0200426config USB_GEN_HUB
427 bool
Nico Huber90292652013-06-13 14:37:15 +0200428 default n if (!USB_HUB && !USB_XHCI)
429 default y if (USB_HUB || USB_XHCI)
Stefan Reinauer8992e532013-05-02 16:16:41 -0700430config USB_PCI
Julius Wernerd7c25b32013-09-04 17:20:32 -0700431 bool "Auto-scan PCI bus for USB host controllers"
432 depends on USB
Stefan Reinauer8992e532013-05-02 16:16:41 -0700433 default y if ARCH_X86
434 default n
435
Stefan Reinauere5d30b72010-03-25 22:15:19 +0000436endmenu
437
438menu "Debugging"
439 depends on DEVELOPER
440
441config DEBUG_MALLOC
442 bool "Debug memory allocator"
443 depends on USB
444 default n
445 help
446 Select this option if you want to debug the memory allocator. This
447 option logs all uses of the following functions:
448
449 void free(void *ptr);
450 void *malloc(size_t size);
451 void *calloc(size_t nmemb, size_t size);
452 void *realloc(void *ptr, size_t size);
453 void *memalign(size_t align, size_t size);
454
455 Say N here unless you are debugging memory allocator problems.
Patrick Georgid21f68b2008-09-02 16:06:22 +0000456
Jordan Crousef6145c32008-03-19 23:56:58 +0000457endmenu
Stefan Reinauer69863582008-08-08 13:45:03 +0000458
Gabe Black0af03d22012-03-19 03:06:46 -0700459config BIG_ENDIAN
460 default n
461 bool
462
463config LITTLE_ENDIAN
464 default n
465 bool
466
Gabe Blackd2679872013-01-18 15:49:00 -0800467# Whether the target system has an IO address space.
468config IO_ADDRESS_SPACE
469 default n
470 bool
471
Gabe Black0af03d22012-03-19 03:06:46 -0700472source "arch/Config.in"