ca7b898c4f5261b5dec81db0bacf4b24d391f0de
[coreboot.git] / src / Kconfig
1 ##
2 ## This file is part of the coreboot project.
3 ##
4 ## Copyright (C) 2009-2010 coresystems GmbH
5 ##
6 ## This program is free software; you can redistribute it and/or modify
7 ## it under the terms of the GNU General Public License as published by
8 ## the Free Software Foundation; version 2 of the License.
9 ##
10 ## This program is distributed in the hope that it will be useful,
11 ## but WITHOUT ANY WARRANTY; without even the implied warranty of
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 ## GNU General Public License for more details.
14 ##
15 ## You should have received a copy of the GNU General Public License
16 ## along with this program; if not, write to the Free Software
17 ## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
18 ##
19
20 mainmenu "Coreboot Configuration"
21
22 menu "General setup"
23
24 config EXPERT
25         bool "Expert mode"
26         help
27           This allows you to select certain advanced configuration options.
28
29           Warning: Only enable this option if you really know what you are
30           doing! You have been warned!
31
32 config LOCALVERSION
33         string "Local version string"
34         help
35           Append an extra string to the end of the coreboot version.
36
37           This can be useful if, for instance, you want to append the
38           respective board's hostname or some other identifying string to
39           the coreboot version number, so that you can easily distinguish
40           boot logs of different boards from each other.
41
42 config CBFS_PREFIX
43         string "CBFS prefix to use"
44         default "fallback"
45         help
46           Select the prefix to all files put into the image. It's "fallback"
47           by default, "normal" is a common alternative.
48
49 choice
50         prompt "Compiler"
51         default COMPILER_GCC
52         help
53           This option allows you to select the compiler used for building
54           coreboot.
55
56 config COMPILER_GCC
57         bool "GCC"
58 config COMPILER_LLVM_CLANG
59         bool "LLVM/clang"
60 endchoice
61
62 config SCANBUILD_ENABLE
63         bool "Build with scan-build for static analysis"
64         default n
65         help
66           Changes the build process to scan-build is used.
67           Requires scan-build in path.
68
69 config SCANBUILD_REPORT_LOCATION
70         string "Directory to put scan-build report in"
71         default ""
72         depends on SCANBUILD_ENABLE
73         help
74           Where the scan-build report should be stored
75
76 config CCACHE
77         bool "ccache"
78         default n
79         help
80           Enables the use of ccache for faster builds.
81           Requires ccache in path.
82
83 config SCONFIG_GENPARSER
84         bool "Generate SCONFIG parser using flex and bison"
85         default n
86         depends on EXPERT
87         help
88           Enable this option if you are working on the sconfig
89           device tree parser and made changes to sconfig.l and
90           sconfig.y. 
91           Otherwise, say N.
92
93 config USE_OPTION_TABLE
94         bool "Use CMOS for configuration values"
95         default n
96         depends on HAVE_OPTION_TABLE
97         help
98           Enable this option if coreboot shall read options from the "CMOS"
99           NVRAM instead of using hard coded values.
100
101 endmenu
102
103 source src/mainboard/Kconfig
104
105 # This option is used to set the architecture of a mainboard to X86.
106 # It is usually set in mainboard/*/Kconfig.
107 config ARCH_X86
108         bool
109         default n
110
111 if ARCH_X86
112 source src/arch/x86/Kconfig
113 endif
114
115 menu "Chipset"
116
117 comment "CPU"
118 source src/cpu/Kconfig
119 comment "Northbridge"
120 source src/northbridge/Kconfig
121 comment "Southbridge"
122 source src/southbridge/Kconfig
123 comment "Super I/O"
124 source src/superio/Kconfig
125 comment "Devices"
126 source src/devices/Kconfig
127 comment "Embedded Controllers"
128 source src/ec/Kconfig
129
130 endmenu
131
132 menu "Generic Drivers"
133 source src/drivers/Kconfig
134 endmenu
135
136 config PCI_BUS_SEGN_BITS
137         int
138         default 0
139
140 config PCI_ROM_RUN
141         bool
142         default n
143
144 config HEAP_SIZE
145         hex
146         default 0x4000
147
148 config MAX_CPUS
149         int
150         default 1
151
152 config MMCONF_SUPPORT_DEFAULT
153         bool
154         default n
155
156 config MMCONF_SUPPORT
157         bool
158         default n
159
160 source src/console/Kconfig
161
162 config HAVE_ACPI_RESUME
163         bool
164         default n
165
166 config HAVE_ACPI_SLIC
167         bool
168         default n
169
170 config ACPI_SSDTX_NUM
171         int
172         default 0
173
174 config HAVE_HARD_RESET
175         bool
176         default y if BOARD_HAS_HARD_RESET
177         default n
178         help
179           This variable specifies whether a given board has a hard_reset
180           function, no matter if it's provided by board code or chipset code.
181
182 config HAVE_INIT_TIMER
183         bool
184         default n if UDELAY_IO
185         default y
186
187 config HAVE_MAINBOARD_RESOURCES
188         bool
189         default n
190
191 config USE_OPTION_TABLE
192         bool
193         default n
194
195 config HAVE_OPTION_TABLE
196         bool
197         default n
198         help
199           This variable specifies whether a given board has a cmos.layout
200           file containing NVRAM/CMOS bit definitions.
201           It defaults to 'n' but can be selected in mainboard/*/Kconfig.
202
203 config PIRQ_ROUTE
204         bool
205         default n
206
207 config HAVE_SMI_HANDLER
208         bool
209         default n
210
211 config PCI_IO_CFG_EXT
212         bool
213         default n
214
215 config IOAPIC
216         bool
217         default n
218
219 # TODO: Can probably be removed once all chipsets have kconfig options for it.
220 config VIDEO_MB
221         int
222         default 0
223
224 config USE_WATCHDOG_ON_BOOT
225         bool
226         default n
227
228 config VGA
229         bool
230         default n
231         help
232           Build board-specific VGA code.
233
234 config GFXUMA
235         bool
236         default n
237         help
238           Enable Unified Memory Architecture for graphics.
239
240 # TODO
241 # menu "Drivers"
242 #
243 # endmenu
244
245 config HAVE_ACPI_TABLES
246         bool
247         help
248           This variable specifies whether a given board has ACPI table support.
249           It is usually set in mainboard/*/Kconfig.
250           Whether or not the ACPI tables are actually generated by coreboot
251           is configurable by the user via GENERATE_ACPI_TABLES.
252
253 config HAVE_MP_TABLE
254         bool
255         help
256           This variable specifies whether a given board has MP table support.
257           It is usually set in mainboard/*/Kconfig.
258           Whether or not the MP table is actually generated by coreboot
259           is configurable by the user via GENERATE_MP_TABLE.
260
261 config HAVE_PIRQ_TABLE
262         bool
263         help
264           This variable specifies whether a given board has PIRQ table support.
265           It is usually set in mainboard/*/Kconfig.
266           Whether or not the PIRQ table is actually generated by coreboot
267           is configurable by the user via GENERATE_PIRQ_TABLE.
268
269 #These Options are here to avoid "undefined" warnings.
270 #The actual selection and help texts are in the following menu.
271
272 config GENERATE_ACPI_TABLES
273         bool
274         default HAVE_ACPI_TABLES
275
276 config GENERATE_MP_TABLE
277         bool
278         default HAVE_MP_TABLE
279
280 config GENERATE_PIRQ_TABLE
281         bool
282         default HAVE_PIRQ_TABLE
283
284 menu "System tables"
285
286 config WRITE_HIGH_TABLES
287         bool "Write 'high' tables to avoid being overwritten in F segment"
288         default y
289
290 config MULTIBOOT
291         bool "Generate Multiboot tables (for GRUB2)"
292         default y
293
294 config GENERATE_ACPI_TABLES
295         depends on HAVE_ACPI_TABLES
296         bool "Generate ACPI tables"
297         default y
298         help
299           Generate ACPI tables for this board.
300
301           If unsure, say Y.
302
303 config GENERATE_MP_TABLE
304         depends on HAVE_MP_TABLE
305         bool "Generate an MP table"
306         default y
307         help
308           Generate an MP table (conforming to the Intel MultiProcessor
309           specification 1.4) for this board.
310
311           If unsure, say Y.
312
313 config GENERATE_PIRQ_TABLE
314         depends on HAVE_PIRQ_TABLE
315         bool "Generate a PIRQ table"
316         default y
317         help
318           Generate a PIRQ table for this board.
319
320           If unsure, say Y.
321
322 endmenu
323
324 menu "Payload"
325
326 choice
327         prompt "Add a payload"
328         default PAYLOAD_NONE if !ARCH_X86
329         default PAYLOAD_SEABIOS if ARCH_X86
330
331 config PAYLOAD_NONE
332         bool "None"
333         help
334           Select this option if you want to create an "empty" coreboot
335           ROM image for a certain mainboard, i.e. a coreboot ROM image
336           which does not yet contain a payload.
337
338           For such an image to be useful, you have to use 'cbfstool'
339           to add a payload to the ROM image later.
340
341 config PAYLOAD_ELF
342         bool "An ELF executable payload"
343         help
344           Select this option if you have a payload image (an ELF file)
345           which coreboot should run as soon as the basic hardware
346           initialization is completed.
347
348           You will be able to specify the location and file name of the
349           payload image later.
350
351 config PAYLOAD_SEABIOS
352         bool "SeaBIOS"
353         depends on ARCH_X86
354         help
355           Select this option if you want to build a coreboot image
356           with a SeaBIOS payload. If you don't know what this is
357           about, just leave it enabled.
358
359           See http://coreboot.org/Payloads for more information.
360
361 endchoice
362
363 choice
364         prompt "SeaBIOS version"
365         default SEABIOS_STABLE
366         depends on PAYLOAD_SEABIOS
367
368 config SEABIOS_STABLE
369         bool "stable"
370         help
371           Stable SeaBIOS version
372 config SEABIOS_MASTER
373         bool "master"
374         help
375           Newest SeaBIOS version
376 endchoice
377
378 config PAYLOAD_FILE
379         string "Payload path and filename"
380         depends on PAYLOAD_ELF
381         default "payload.elf"
382         help
383           The path and filename of the ELF executable file to use as payload.
384
385 config PAYLOAD_FILE
386         depends on PAYLOAD_SEABIOS
387         default "payloads/external/SeaBIOS/seabios/out/bios.bin.elf"
388
389 # TODO: Defined if no payload? Breaks build?
390 config COMPRESSED_PAYLOAD_LZMA
391         bool "Use LZMA compression for payloads"
392         default y
393         depends on PAYLOAD_ELF || PAYLOAD_SEABIOS
394         help
395           In order to reduce the size payloads take up in the ROM chip
396           coreboot can compress them using the LZMA algorithm.
397
398 config COMPRESSED_PAYLOAD_NRV2B
399         bool
400         default n
401
402 endmenu
403
404 menu "VGA BIOS"
405
406 config VGA_BIOS
407         bool "Add a VGA BIOS image"
408         help
409           Select this option if you have a VGA BIOS image that you would
410           like to add to your ROM.
411
412           You will be able to specify the location and file name of the
413           image later.
414
415 config VGA_BIOS_FILE
416         string "VGA BIOS path and filename"
417         depends on VGA_BIOS
418         default "vgabios.bin"
419         help
420           The path and filename of the file to use as VGA BIOS.
421
422 config VGA_BIOS_ID
423         string "VGA device PCI IDs"
424         depends on VGA_BIOS
425         default "1106,3230"
426         help
427           The comma-separated PCI vendor and device ID that would associate
428           your VGA BIOS to your video card.
429
430           Example: 1106,3230
431
432           In the above example 1106 is the PCI vendor ID (in hex, but without
433           the "0x" prefix) and 3230 specifies the PCI device ID of the
434           video card (also in hex, without "0x" prefix).
435
436 config INTEL_MBI
437         bool "Add an MBI image"
438         depends on NORTHBRIDGE_INTEL_I82830
439         help
440           Select this option if you have an Intel MBI image that you would
441           like to add to your ROM.
442
443           You will be able to specify the location and file name of the
444           image later.
445
446 config MBI_FILE
447         string "Intel MBI path and filename"
448         depends on INTEL_MBI
449         default "mbi.bin"
450         help
451           The path and filename of the file to use as VGA BIOS.
452
453 endmenu
454
455 menu "Bootsplash"
456         depends on PCI_OPTION_ROM_RUN_YABEL
457
458 config BOOTSPLASH
459         prompt "Show graphical bootsplash"
460         bool
461         depends on PCI_OPTION_ROM_RUN_YABEL
462         help
463           This option shows a graphical bootsplash screen. The grapics are
464           loaded from the CBFS file bootsplash.jpg.
465
466 config BOOTSPLASH_FILE
467         string "Bootsplash path and filename"
468         depends on BOOTSPLASH
469         default "bootsplash.jpg"
470         help
471           The path and filename of the file to use as graphical bootsplash
472           screen. The file format has to be jpg.
473
474 # TODO: Turn this into a "choice".
475 config FRAMEBUFFER_VESA_MODE
476         prompt "VESA framebuffer video mode"
477         hex
478         default 0x117
479         depends on BOOTSPLASH
480         help
481           This option sets the resolution used for the coreboot framebuffer and
482           bootsplash screen. Set to 0x117 for 1024x768x16. A diligent soul will
483           some day make this a "choice".
484
485 config COREBOOT_KEEP_FRAMEBUFFER
486         prompt "Keep VESA framebuffer"
487         bool
488         depends on BOOTSPLASH
489         help
490           This option keeps the framebuffer mode set after coreboot finishes
491           execution. If this option is enabled, coreboot will pass a
492           framebuffer entry in its coreboot table and the payload will need a
493           framebuffer driver. If this option is disabled, coreboot will switch
494           back to text mode before handing control to a payload.
495
496 endmenu
497
498 menu "Debugging"
499
500 # TODO: Better help text and detailed instructions.
501 config GDB_STUB
502         bool "GDB debugging support"
503         default y
504         help
505           If enabled, you will be able to set breakpoints for gdb debugging.
506           See src/arch/x86/lib/c_start.S for details.
507
508 config HAVE_DEBUG_RAM_SETUP
509         def_bool n
510
511 config DEBUG_RAM_SETUP
512         bool "Output verbose RAM init debug messages"
513         default n
514         depends on HAVE_DEBUG_RAM_SETUP
515         help
516           This option enables additional RAM init related debug messages.
517           It is recommended to enable this when debugging issues on your
518           board which might be RAM init related.
519
520           Note: This option will increase the size of the coreboot image.
521
522           If unsure, say N.
523
524 config HAVE_DEBUG_CAR
525         def_bool n
526
527 config DEBUG_CAR
528         def_bool n
529         depends on HAVE_DEBUG_CAR
530
531 if DEFAULT_CONSOLE_LOGLEVEL_7 || DEFAULT_CONSOLE_LOGLEVEL_8
532 # Only visible if debug level is DEBUG (7) or SPEW (8) as it does additional
533 # printk(BIOS_DEBUG, ...) calls.
534 config DEBUG_CAR
535         bool "Output verbose Cache-as-RAM debug messages"
536         default n
537         depends on HAVE_DEBUG_CAR
538         help
539           This option enables additional CAR related debug messages.
540 endif
541
542 config DEBUG_PIRQ
543         bool "Check PIRQ table consistency"
544         default n
545         depends on GENERATE_PIRQ_TABLE
546         help
547           If unsure, say N.
548
549 config HAVE_DEBUG_SMBUS
550         def_bool n
551
552 config DEBUG_SMBUS
553         bool "Output verbose SMBus debug messages"
554         default n
555         depends on HAVE_DEBUG_SMBUS
556         help
557           This option enables additional SMBus (and SPD) debug messages.
558
559           Note: This option will increase the size of the coreboot image.
560
561           If unsure, say N.
562
563 config DEBUG_SMI
564         bool "Output verbose SMI debug messages"
565         default n
566         depends on HAVE_SMI_HANDLER
567         help
568           This option enables additional SMI related debug messages.
569
570           Note: This option will increase the size of the coreboot image.
571
572           If unsure, say N.
573
574 config DEBUG_SMM_RELOCATION
575         bool "Debug SMM relocation code"
576         default n
577         depends on HAVE_SMI_HANDLER
578         help
579           This option enables additional SMM handler relocation related
580           debug messages.
581
582           Note: This option will increase the size of the coreboot image.
583
584           If unsure, say N.
585
586 config DEBUG_MALLOC
587         def_bool n
588
589 # Only visible if debug level is DEBUG (7) or SPEW (8) as it does additional
590 # printk(BIOS_DEBUG, ...) calls.
591 if DEFAULT_CONSOLE_LOGLEVEL_7 || DEFAULT_CONSOLE_LOGLEVEL_8
592 config DEBUG_MALLOC
593         bool "Output verbose malloc debug messages"
594         default n
595         help
596           This option enables additional malloc related debug messages.
597
598           Note: This option will increase the size of the coreboot image.
599
600           If unsure, say N.
601 endif
602
603 config REALMODE_DEBUG
604         def_bool n
605         depends on PCI_OPTION_ROM_RUN_REALMODE
606
607 if DEFAULT_CONSOLE_LOGLEVEL_7 || DEFAULT_CONSOLE_LOGLEVEL_8
608 # Only visible if debug level is DEBUG (7) or SPEW (8) as it does additional
609 # printk(BIOS_DEBUG, ...) calls.
610 config REALMODE_DEBUG
611         bool "Enable debug messages for option ROM execution"
612         default n
613         depends on PCI_OPTION_ROM_RUN_REALMODE
614         help
615           This option enables additional x86emu related debug messages.
616
617           Note: This option will increase the time to emulate a ROM.
618
619           If unsure, say N.
620 endif
621
622 config X86EMU_DEBUG
623         bool "Output verbose x86emu debug messages"
624         default n
625         depends on PCI_OPTION_ROM_RUN_YABEL
626         help
627           This option enables additional x86emu related debug messages.
628
629           Note: This option will increase the size of the coreboot image.
630
631           If unsure, say N.
632
633 config X86EMU_DEBUG_JMP
634         bool "Trace JMP/RETF"
635         default n
636         depends on X86EMU_DEBUG
637         help
638           Print information about JMP and RETF opcodes from x86emu.
639
640           Note: This option will increase the size of the coreboot image.
641
642           If unsure, say N.
643
644 config X86EMU_DEBUG_TRACE
645         bool "Trace all opcodes"
646         default n
647         depends on X86EMU_DEBUG
648         help
649           Print _all_ opcodes that are executed by x86emu.
650
651           WARNING: This will produce a LOT of output and take a long time.
652
653           Note: This option will increase the size of the coreboot image.
654
655           If unsure, say N.
656
657 config X86EMU_DEBUG_PNP
658         bool "Log Plug&Play accesses"
659         default n
660         depends on X86EMU_DEBUG
661         help
662           Print Plug And Play accesses made by option ROMs.
663
664           Note: This option will increase the size of the coreboot image.
665
666           If unsure, say N.
667
668 config X86EMU_DEBUG_DISK
669         bool "Log Disk I/O"
670         default n
671         depends on X86EMU_DEBUG
672         help
673           Print Disk I/O related messages.
674
675           Note: This option will increase the size of the coreboot image.
676
677           If unsure, say N.
678
679 config X86EMU_DEBUG_PMM
680         bool "Log PMM"
681         default n
682         depends on X86EMU_DEBUG
683         help
684           Print messages related to POST Memory Manager (PMM).
685
686           Note: This option will increase the size of the coreboot image.
687
688           If unsure, say N.
689
690
691 config X86EMU_DEBUG_VBE
692         bool "Debug VESA BIOS Extensions"
693         default n
694         depends on X86EMU_DEBUG
695         help
696           Print messages related to VESA BIOS Extension (VBE) functions.
697
698           Note: This option will increase the size of the coreboot image.
699
700           If unsure, say N.
701
702 config X86EMU_DEBUG_INT10
703         bool "Redirect INT10 output to console"
704         default n
705         depends on X86EMU_DEBUG
706         help
707           Let INT10 (i.e. character output) calls print messages to debug output.
708
709           Note: This option will increase the size of the coreboot image.
710
711           If unsure, say N.
712
713 config X86EMU_DEBUG_INTERRUPTS
714         bool "Log intXX calls"
715         default n
716         depends on X86EMU_DEBUG
717         help
718           Print messages related to interrupt handling.
719
720           Note: This option will increase the size of the coreboot image.
721
722           If unsure, say N.
723
724 config X86EMU_DEBUG_CHECK_VMEM_ACCESS
725         bool "Log special memory accesses"
726         default n
727         depends on X86EMU_DEBUG
728         help
729           Print messages related to accesses to certain areas of the virtual
730           memory (e.g. BDA (BIOS Data Area) or interrupt vectors)
731
732           Note: This option will increase the size of the coreboot image.
733
734           If unsure, say N.
735
736 config X86EMU_DEBUG_MEM
737         bool "Log all memory accesses"
738         default n
739         depends on X86EMU_DEBUG
740         help
741           Print memory accesses made by option ROM.
742           Note: This also includes accesses to fetch instructions.
743
744           Note: This option will increase the size of the coreboot image.
745
746           If unsure, say N.
747
748 config X86EMU_DEBUG_IO
749         bool "Log IO accesses"
750         default n
751         depends on X86EMU_DEBUG
752         help
753           Print I/O accesses made by option ROM.
754
755           Note: This option will increase the size of the coreboot image.
756
757           If unsure, say N.
758
759 config LLSHELL
760         bool "Built-in low-level shell"
761         default n
762         help
763           If enabled, you will have a low level shell to examine your machine.
764           Put llshell() in your (romstage) code to start the shell.
765           See src/arch/x86/llshell/llshell.inc for details.
766
767 endmenu
768
769 config LIFT_BSP_APIC_ID
770         bool
771         default n
772
773 # These probably belong somewhere else, but they are needed somewhere.
774 config AP_CODE_IN_CAR
775         bool
776         default n
777
778 config RAMINIT_SYSINFO
779         bool
780         default n
781
782 config ENABLE_APIC_EXT_ID
783         bool
784         default n
785
786 config WARNINGS_ARE_ERRORS
787         bool
788         default y
789
790 config ID_SECTION_OFFSET
791         hex
792         default 0x10
793
794 # The four POWER_BUTTON_DEFAULT_ENABLE, POWER_BUTTON_DEFAULT_DISABLE,
795 # POWER_BUTTON_FORCE_ENABLE and POWER_BUTTON_FORCE_DISABLE options are
796 # mutually exclusive. One of these options must be selected in the
797 # mainboard Kconfig if the chipset supports enabling and disabling of
798 # the power button. Chipset code uses the ENABLE_POWER_BUTTON option set
799 # in mainboard/Kconfig to know if the button should be enabled or not.
800
801 config POWER_BUTTON_DEFAULT_ENABLE
802         def_bool n
803         help
804           Select when the board has a power button which can optionally be
805           disabled by the user.
806
807 config POWER_BUTTON_DEFAULT_DISABLE
808         def_bool n
809         help
810           Select when the board has a power button which can optionally be
811           enabled by the user, e.g. when the board ships with a jumper over
812           the power switch contacts.
813
814 config POWER_BUTTON_FORCE_ENABLE
815         def_bool n
816         help
817           Select when the board requires that the power button is always
818           enabled.
819
820 config POWER_BUTTON_FORCE_DISABLE
821         def_bool n
822         help
823           Select when the board requires that the power button is always
824           disabled, e.g. when it has been hardwired to ground.
825
826 config POWER_BUTTON_IS_OPTIONAL
827         bool
828         default y if POWER_BUTTON_DEFAULT_ENABLE || POWER_BUTTON_DEFAULT_DISABLE
829         default n if !(POWER_BUTTON_DEFAULT_ENABLE || POWER_BUTTON_DEFAULT_DISABLE)
830         help
831           Internal option that controls ENABLE_POWER_BUTTON visibility.
832
833 source src/Kconfig.deprecated_options