blob: 6c95bfa42d33fd932ef82d46c7185f76a5564f0b [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
51config OBSOLETE
52 bool "Obsolete Options"
53 default n
54 help
55 Prompt for obsolete options. These options are for old, unsupported
56 features and are likely to go away in the future.
57
58config DEVELOPER
59 bool "Developer Options"
60 default n
61 help
62 Prompt for developer options. These options are only interesting for
63 libpayload developers.
64
Julius Werner50a81742014-05-15 11:57:38 -070065config REMOTEGDB
66 bool "Remote GDB stub"
67 default n
68 depends on GPL
69 help
70 Enable Remote GDB debugging support.
71
Gabe Blackd3890cc2012-03-11 01:57:53 -080072config CHROMEOS
73 bool "ChromeOS specific features"
74 default n
75 help
76 Enable ChromeOS specific features.
77
Stefan Reinauere5d30b72010-03-25 22:15:19 +000078endmenu
79
Jordan Crouse20c9cf12008-10-20 16:51:43 +000080menu "Architecture Options"
81
Patrick Georgid385ed22009-05-21 10:02:52 +000082choice
83 prompt "Target Architecture"
David Hendricks4b6be982012-11-30 13:56:31 -080084 default ARCH_X86
Patrick Georgid385ed22009-05-21 10:02:52 +000085
Gabe Black51edd542013-09-30 23:00:33 -070086config ARCH_ARM
87 bool "ARM"
Stefan Reinauer8af0d032012-12-14 13:05:21 -080088 help
Gabe Black51edd542013-09-30 23:00:33 -070089 Support the ARM architecture
Stefan Reinauer8af0d032012-12-14 13:05:21 -080090
David Hendricks4b6be982012-11-30 13:56:31 -080091config ARCH_X86
Patrick Georgid385ed22009-05-21 10:02:52 +000092 bool "x86"
93 help
94 Support the x86 architecture
95
Furquan Shaikh8c8c3772014-02-19 11:35:30 -080096config ARCH_ARM64
97 bool "ARM64"
98 help
99 Support the ARM64 architecture
100
Patrick Georgid385ed22009-05-21 10:02:52 +0000101endchoice
102
Patrick Georgi7f965832011-04-21 18:57:16 +0200103config MEMMAP_RAM_ONLY
104 bool "Only consider RAM entries in memory map for further processing"
105 default n
106
Jordan Crouse20c9cf12008-10-20 16:51:43 +0000107config MULTIBOOT
108 bool "Multiboot header support"
David Hendricks4b6be982012-11-30 13:56:31 -0800109 depends on ARCH_X86
Jordan Crouse20c9cf12008-10-20 16:51:43 +0000110 default y
111
112endmenu
113
Stefan Reinauer69863582008-08-08 13:45:03 +0000114menu "Standard Libraries"
115
116config LIBC
117 bool "Enable C library support"
118 default y
119
Patrick Georgi3b77b722011-07-07 15:41:53 +0200120config CURSES
121 bool "Build a curses library"
Stefan Reinauer69863582008-08-08 13:45:03 +0000122 default y
123
Patrick Georgi3b77b722011-07-07 15:41:53 +0200124choice
125 prompt "Curses implementation"
126 default PDCURSES
127 depends on CURSES
128
129config TINYCURSES
130 bool "Tinycurses"
131 help
132 Tinycurses was the first curses implementation for libpayload.
133 It features low memory consumption, static allocation of larger
134 data structures (so few or no memory allocation calls) and a
135 reduced feature set.
136
137config PDCURSES
138 bool "PDCurses"
Patrick Georgi3b77b722011-07-07 15:41:53 +0200139 help
140 libpayload's PDCurses port provides a full features curses
141 implementation, including libpanel, libmenu and libform (which
142 are taken from ncurses).
143 It requires more system resources, in particularily heap memory.
144
145endchoice
146
Stefan Reinauere5d30b72010-03-25 22:15:19 +0000147config LAR
148 bool "LAR support"
149 default n
150 depends on OBSOLETE
151 help
152 LAR is the archive format of (obsolete) coreboot v3
153
154config CBFS
155 bool "CBFS support"
156 default y
157 help
Patrick Georgi6de1ee4a2011-07-21 15:43:14 +0200158 CBFS is the archive format of coreboot
159
160config LZMA
161 bool "LZMA decoder"
162 default y
163 help
164 LZMA decoder implementation, usable eg. by CBFS,
165 but also externally.
Stefan Reinauer69863582008-08-08 13:45:03 +0000166endmenu
167
168menu "Console Options"
Uwe Hermann2d758b82008-03-31 15:21:24 +0000169
Gabe Black4bb07312012-10-05 11:43:39 -0700170config SKIP_CONSOLE_INIT
171 bool "Skip initializing the consoles at startup"
172 default n
173 help
174 Normally, libpayload will initialize console input/output on startup
175 before the payload itself gets control. This option disables that
176 behavior and leaves console initialization up to the payload.
177
Gabe Blacka54b6a62012-09-29 00:21:27 -0700178config CBMEM_CONSOLE
179 bool "Send output to the in memory CBMEM console"
180 default y
181
Jordan Crousef6145c32008-03-19 23:56:58 +0000182config SERIAL_CONSOLE
Uwe Hermann2d758b82008-03-31 15:21:24 +0000183 bool "See output on the serial port console"
184 default y
Jordan Crousef6145c32008-03-19 23:56:58 +0000185
Gabe Black9135cb42013-09-26 16:13:08 -0700186config 8250_SERIAL_CONSOLE
187 bool "8250, 16450, 16550, 16550A compatible serial port driver"
188 depends on SERIAL_CONSOLE
189 default y if ARCH_X86
190 default n if !ARCH_X86
Ronald G. Minnich7b694542013-02-15 08:13:29 -0800191
Gabe Blacka6aecc42014-04-10 01:07:28 -0700192config S5P_SERIAL_CONSOLE
193 bool "Exynos SOC, S5P compatible serial port driver"
194 depends on SERIAL_CONSOLE
195 default n
196
197config TEGRA_SERIAL_CONSOLE
198 bool "Tegra SOC compatible serial port driver"
199 depends on SERIAL_CONSOLE
200 default n
201
huang linab699842014-06-20 11:34:46 +0800202config RK_SERIAL_CONSOLE
203 bool "Rockchip SOC serial port driver"
204 depends on SERIAL_CONSOLE
205 default n
206
Vadim Bendebury897123a2014-05-27 18:28:59 -0700207config IPQ806X_SERIAL_CONSOLE
208 bool "IPQ806x SOC compatible serial port driver"
209 depends on SERIAL_CONSOLE
210 default n
211
Marcelo Povoa558e9b52014-02-18 14:17:38 -0800212config PL011_SERIAL_CONSOLE
213 bool "PL011 compatible serial port driver"
214 depends on 8250_SERIAL_CONSOLE
215 default n
216
Jordan Crousef6145c32008-03-19 23:56:58 +0000217config SERIAL_IOBASE
Gabe Black9135cb42013-09-26 16:13:08 -0700218 ## This default is currently not used on non-x86 systems.
219 hex "Default I/O base for the serial port (default 0x3f8)"
220 depends on SERIAL_CONSOLE && ARCH_X86
Uwe Hermann2d758b82008-03-31 15:21:24 +0000221 default 0x3f8
222
Jordan Crousef6145c32008-03-19 23:56:58 +0000223config SERIAL_SET_SPEED
224 bool "Override the serial console baud rate"
225 default n
Uwe Hermannfad8c2b2008-04-11 18:01:50 +0000226 depends on SERIAL_CONSOLE
Jordan Crousef6145c32008-03-19 23:56:58 +0000227
228config SERIAL_BAUD_RATE
229 int "Serial console baud rate (default 115200)"
Uwe Hermannfad8c2b2008-04-11 18:01:50 +0000230 depends on SERIAL_SET_SPEED
Jordan Crousef6145c32008-03-19 23:56:58 +0000231 default 115200
232
Ulf Jordan2aea11f2008-08-18 19:29:41 +0000233config SERIAL_ACS_FALLBACK
234 bool "Use plain ASCII characters for ACS"
235 default n
236 depends on SERIAL_CONSOLE
237 help
238 The alternate character set (ACS) is used for drawing lines and
239 displaying a couple of other special graphics characters. The
240 ACS characters generally look good on screen, but can be difficult
241 to cut and paste from a terminal window to a text editor.
Stefan Reinauer14e22772010-04-27 06:56:47 +0000242
Ulf Jordan2aea11f2008-08-18 19:29:41 +0000243 Say 'y' here if you want to always use plain ASCII characters to
Stefan Reinauer14e22772010-04-27 06:56:47 +0000244 approximate the appearance of ACS characters on the serial port
Ulf Jordan2aea11f2008-08-18 19:29:41 +0000245 console.
246
Jordan Crouse30939bd2008-04-10 22:49:02 +0000247config VIDEO_CONSOLE
248 bool "See output on a video console"
249 default y
250
251config VGA_VIDEO_CONSOLE
252 bool "VGA video console driver"
Stefan Reinauer8af0d032012-12-14 13:05:21 -0800253 depends on ARCH_X86 && VIDEO_CONSOLE
Uwe Hermann2d758b82008-03-31 15:21:24 +0000254 default y
Jordan Crousef6145c32008-03-19 23:56:58 +0000255
Peter Stuge4b1971c2008-10-08 14:47:41 +0000256config GEODELX_VIDEO_CONSOLE
257 bool "Geode LX video console driver"
Stefan Reinauer8af0d032012-12-14 13:05:21 -0800258 depends on ARCH_X86 && VIDEO_CONSOLE
Jordan Crouse54315532008-04-11 15:48:21 +0000259 default n
260
Stefan Reinauerb7002542010-03-25 18:56:26 +0000261config COREBOOT_VIDEO_CONSOLE
262 bool "coreboot video console driver"
263 depends on VIDEO_CONSOLE && !GEODELX_VIDEO_CONSOLE
264 default n
265 help
266 Say Y here if coreboot switched to a graphics mode and
267 your payload wants to use it.
268
Jordan Crousef6145c32008-03-19 23:56:58 +0000269config PC_KEYBOARD
Uwe Hermann2d758b82008-03-31 15:21:24 +0000270 bool "Allow input from a PC keyboard"
Marc Jones019bacb42014-12-23 15:22:30 -0700271 default y if ARCH_X86 # uses IO
272 default n
Jordan Crousef6145c32008-03-19 23:56:58 +0000273
Stefan Reinauerd84ef1e2008-09-26 18:37:26 +0000274config PC_KEYBOARD_LAYOUT_US
275 bool "English (US) keyboard layout"
276 depends on PC_KEYBOARD
277 default y
278
279config PC_KEYBOARD_LAYOUT_DE
280 bool "German keyboard layout"
281 depends on PC_KEYBOARD
282 default n
283
Stefan Reinauer69863582008-08-08 13:45:03 +0000284endmenu
285
286menu "Drivers"
287
288config PCI
289 bool "Support for PCI devices"
Stefan Reinauer8af0d032012-12-14 13:05:21 -0800290 depends on ARCH_X86 # for now
Stefan Reinauer69863582008-08-08 13:45:03 +0000291 default y
292
Uwe Hermannc16d24e2008-03-31 15:17:39 +0000293config NVRAM
Uwe Hermann2d758b82008-03-31 15:21:24 +0000294 bool "Support for reading/writing NVRAM bytes"
Stefan Reinauer8af0d032012-12-14 13:05:21 -0800295 depends on ARCH_X86 # for now
Uwe Hermann2d758b82008-03-31 15:21:24 +0000296 default y
Uwe Hermann8cc38d22008-03-27 23:26:40 +0000297
Uwe Hermann30d789b2008-03-31 20:21:49 +0000298config RTC_PORT_EXTENDED_VIA
299 bool "Extended RTC ports are 0x74/0x75"
300 default n
301 help
302 For recent chipsets with 256 NVRAM bytes, you have to access the
303 upper 128 bytes (128-255) using two different I/O ports,
304 usually 0x72/0x73.
Stefan Reinauer14e22772010-04-27 06:56:47 +0000305
Uwe Hermann30d789b2008-03-31 20:21:49 +0000306 On some chipsets this can be a different set of ports, though.
307 The VIA VT8237R for example only recognizes the ports 0x74/0x75
308 for accessing the high 128 NVRAM bytes (as seems to be the case for
309 multiple VIA chipsets).
Stefan Reinauer14e22772010-04-27 06:56:47 +0000310
Uwe Hermann30d789b2008-03-31 20:21:49 +0000311 If you want to read or write CMOS bytes on computers with one of
312 these chipsets, say 'y' here.
313
Stefan Reinauer69863582008-08-08 13:45:03 +0000314config SPEAKER
315 bool "Support for PC speaker"
Stefan Reinauer8af0d032012-12-14 13:05:21 -0800316 depends on ARCH_X86
Uwe Hermann2d758b82008-03-31 15:21:24 +0000317 default y
Jordan Crousef6145c32008-03-19 23:56:58 +0000318
Nico Huber1f6bd942012-08-30 15:36:57 +0200319config STORAGE
320 bool "Support for storage devices"
321 default y
322 help
323 Select this option if you want support for storage devices (like
324 hard drives, memory sticks or optical drives).
325
326config STORAGE_64BIT_LBA
327 bool "Use 64-bit integers to address sectors"
328 depends on STORAGE
329 default n
330 help
331 If this is selected, sectors will be addressed by an 64-bit integer.
332 Select this to support LBA-48 for ATA drives.
333
334config STORAGE_ATA
335 bool "Support ATA drives (i.e. hard drives)"
336 depends on STORAGE
337 default y
338 help
339 Select this option if you want support for ATA storage devices
340 (i.e. hard drives).
341
342config STORAGE_ATAPI
343 bool "Support ATAPI drives (i.e. optical drives)"
344 depends on STORAGE
345 default y
346 select STORAGE_ATA
347 help
348 Select this option if you want support for ATAPI storage devices
349 (i.e. optical drives like CD or DVD drives).
350
351config STORAGE_AHCI
352 bool "Support for AHCI host controllers"
353 depends on STORAGE && (STORAGE_ATA || STORAGE_ATAPI) && PCI
354 default y
355 help
356 Select this option if you want support for SATA controllers in
357 AHCI mode.
358
359config STORAGE_AHCI_ONLY_TESTED
360 bool "Only enable tested controllers"
361 depends on STORAGE_AHCI
362 default y
363 help
364 If this option is selected only AHCI controllers which are known
365 to work will be used.
366
Gabe Blackd4d29a12014-04-10 02:36:49 -0700367config TIMER_RDTSC
368 bool
369 default y
370 depends on ARCH_X86
371
372choice
373 prompt "Timer driver"
374 default TIMER_NONE
375 depends on !ARCH_X86
376
377config TIMER_NONE
378 bool "None"
379 help
380 The timer driver is provided by the payload itself.
381
382config TIMER_MCT
383 bool "Exynos MCT"
384
385config TIMER_TEGRA_1US
386 bool "Tegra 1us"
387
Vadim Bendebury8ec74a32014-05-21 16:28:57 -0700388config TIMER_IPQ806X
389 bool "Timer for ipq806x platforms"
390
huang linab699842014-06-20 11:34:46 +0800391config TIMER_RK
392 bool "Timer for Rockchip"
Gabe Blackd4d29a12014-04-10 02:36:49 -0700393endchoice
394
395config TIMER_MCT_HZ
396 int "Exynos MCT frequency"
397 depends on TIMER_MCT
398 default 24000000
399
400config TIMER_MCT_ADDRESS
401 hex "Exynos MCT base address"
402 depends on TIMER_MCT
403 default 0x101c0000
404
huang linab699842014-06-20 11:34:46 +0800405config TIMER_RK_ADDRESS
406 hex "Rockchip timer base address"
407 depends on TIMER_RK
408 default 0xff810020
409
Gabe Blackd4d29a12014-04-10 02:36:49 -0700410config TIMER_TEGRA_1US_ADDRESS
411 hex "Tegra u1s timer base address"
412 depends on TIMER_TEGRA_1US
413 default 0x60005010
414
Vadim Bendebury8ec74a32014-05-21 16:28:57 -0700415config IPQ806X_TIMER_FREQ
416 int "Hardware timer frequency"
417 default 32000
418 depends on TIMER_IPQ806X
419 help
420 IPQ hardware presently provides a single timer running at 32KHz, a
421 finer granulariry timer is available but is not yet enabled.
422
423config IPQ806X_TIMER_REG
424 hex "Timer register address"
425 default 0x0200A008
426 depends on TIMER_IPQ806X
427 help
428 Address of the register to read a free running timer value.
429
Patrick Georgid21f68b2008-09-02 16:06:22 +0000430config USB
431 bool "USB Support"
432 default n
433
434config USB_UHCI
435 bool "Support for USB UHCI controllers"
Stefan Reinauer8992e532013-05-02 16:16:41 -0700436 depends on USB && ARCH_X86
Patrick Georgid21f68b2008-09-02 16:06:22 +0000437 help
438 Select this option if you are going to use USB 1.1 on an Intel based
439 system.
440
441config USB_OHCI
442 bool "Support for USB OHCI controllers"
443 depends on USB
444 help
Stefan Reinauer8992e532013-05-02 16:16:41 -0700445 Select this option if you are going to use USB 1.1 on a non-Intel based
Patrick Georgid21f68b2008-09-02 16:06:22 +0000446 system.
Patrick Georgid21f68b2008-09-02 16:06:22 +0000447
448config USB_EHCI
449 bool "Support for USB EHCI controllers"
450 depends on USB
451 help
452 Select this option if you want to use USB 2.0
Patrick Georgid21f68b2008-09-02 16:06:22 +0000453
Patrick Georgi6615ef32010-08-13 09:18:58 +0000454config USB_XHCI
455 bool "Support for USB xHCI controllers"
456 depends on USB
457 help
458 Select this option if you want to use USB 3.0
459 NOTE: This option is not (fully) implemented yet
460
Patrick Georgid21f68b2008-09-02 16:06:22 +0000461config USB_HID
Stefan Reinauere5d30b72010-03-25 22:15:19 +0000462 bool "Support for USB keyboards"
Patrick Georgid21f68b2008-09-02 16:06:22 +0000463 depends on USB
Stefan Reinauere5d30b72010-03-25 22:15:19 +0000464 default y
465 help
466 Select this option if you want to use devices complying to the
467 USB HID (Human Interface Device) standard. Such devices are for
468 example keyboards and mice. Currently only keyboards are supported.
469 Say Y here unless you know exactly what you are doing.
Patrick Georgid21f68b2008-09-02 16:06:22 +0000470
471config USB_HUB
Stefan Reinauere5d30b72010-03-25 22:15:19 +0000472 bool "Support for USB hubs"
Patrick Georgid21f68b2008-09-02 16:06:22 +0000473 depends on USB
Stefan Reinauere5d30b72010-03-25 22:15:19 +0000474 default y
475 help
476 Select this option if you want to compile in support for USB hubs.
477 Say Y here unless you know exactly what you are doing.
Patrick Georgid21f68b2008-09-02 16:06:22 +0000478
479config USB_MSC
480 bool "Support for USB storage"
481 depends on USB
Stefan Reinauere5d30b72010-03-25 22:15:19 +0000482 default y
483 help
484 Select this option if you want to compile in support for USB mass
485 storage devices (USB memory sticks, hard drives, CDROM/DVD drives)
486 Say Y here unless you know exactly what you are doing.
Patrick Georgid21f68b2008-09-02 16:06:22 +0000487
Nico Huber0b78de22013-05-29 15:01:17 +0200488config USB_GEN_HUB
489 bool
Nico Huber90292652013-06-13 14:37:15 +0200490 default n if (!USB_HUB && !USB_XHCI)
491 default y if (USB_HUB || USB_XHCI)
Stefan Reinauer8992e532013-05-02 16:16:41 -0700492config USB_PCI
Julius Wernerd7c25b32013-09-04 17:20:32 -0700493 bool "Auto-scan PCI bus for USB host controllers"
494 depends on USB
Stefan Reinauer8992e532013-05-02 16:16:41 -0700495 default y if ARCH_X86
496 default n
497
Stefan Reinauere5d30b72010-03-25 22:15:19 +0000498endmenu
499
500menu "Debugging"
501 depends on DEVELOPER
502
503config DEBUG_MALLOC
504 bool "Debug memory allocator"
505 depends on USB
506 default n
507 help
508 Select this option if you want to debug the memory allocator. This
509 option logs all uses of the following functions:
510
511 void free(void *ptr);
512 void *malloc(size_t size);
513 void *calloc(size_t nmemb, size_t size);
514 void *realloc(void *ptr, size_t size);
515 void *memalign(size_t align, size_t size);
516
517 Say N here unless you are debugging memory allocator problems.
Patrick Georgid21f68b2008-09-02 16:06:22 +0000518
Jordan Crousef6145c32008-03-19 23:56:58 +0000519endmenu
Stefan Reinauer69863582008-08-08 13:45:03 +0000520
Gabe Black0af03d22012-03-19 03:06:46 -0700521config BIG_ENDIAN
522 default n
523 bool
524
525config LITTLE_ENDIAN
526 default n
527 bool
528
Gabe Blackd2679872013-01-18 15:49:00 -0800529# Whether the target system has an IO address space.
530config IO_ADDRESS_SPACE
531 default n
532 bool
533
Gabe Black0af03d22012-03-19 03:06:46 -0700534source "arch/Config.in"