After this has been brought up many times before, rename src/arch/i386 to
[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 source src/arch/x86/Kconfig
105
106 menu "Chipset"
107
108 comment "CPU"
109 source src/cpu/Kconfig
110 comment "Northbridge"
111 source src/northbridge/Kconfig
112 comment "Southbridge"
113 source src/southbridge/Kconfig
114 comment "Super I/O"
115 source src/superio/Kconfig
116 comment "Devices"
117 source src/devices/Kconfig
118
119 endmenu
120
121 menu "Generic Drivers"
122 source src/drivers/Kconfig
123 endmenu
124
125 config PCI_BUS_SEGN_BITS
126         int
127         default 0
128
129 config MAINBOARD_PCI_SUBSYSTEM_VENDOR_ID
130         hex
131         default 0x0
132
133 config MAINBOARD_PCI_SUBSYSTEM_DEVICE_ID
134         hex
135         default 0x0
136
137 config CPU_ADDR_BITS
138         int
139         default 36
140
141 config LOGICAL_CPUS
142         bool
143         default y
144
145 config PCI_ROM_RUN
146         bool
147         default n
148
149 config HEAP_SIZE
150         hex
151         default 0x4000
152
153 config MAX_CPUS
154         int
155         default 1
156
157 config MMCONF_SUPPORT_DEFAULT
158         bool
159         default n
160
161 config MMCONF_SUPPORT
162         bool
163         default n
164
165 config ATI_RAGE_XL
166         bool
167
168 source src/console/Kconfig
169
170 config HAVE_ACPI_RESUME
171         bool
172         default n
173
174 config HAVE_ACPI_SLIC
175         bool
176         default n
177
178 config ACPI_SSDTX_NUM
179         int
180         default 0
181
182 config HAVE_HARD_RESET
183         bool
184         default y if BOARD_HAS_HARD_RESET
185         default n
186         help
187           This variable specifies whether a given board has a hard_reset
188           function, no matter if it's provided by board code or chipset code.
189
190 config HAVE_INIT_TIMER
191         bool
192         default n if UDELAY_IO
193         default y
194
195 config HAVE_MAINBOARD_RESOURCES
196         bool
197         default n
198
199 config USE_OPTION_TABLE
200         bool
201         default n
202
203 config HAVE_OPTION_TABLE
204         bool
205         default n
206         help
207           This variable specifies whether a given board has a cmos.layout
208           file containing NVRAM/CMOS bit definitions.
209           It defaults to 'n' but can be selected in mainboard/*/Kconfig.
210
211 config PIRQ_ROUTE
212         bool
213         default n
214
215 config HAVE_SMI_HANDLER
216         bool
217         default n
218
219 config PCI_IO_CFG_EXT
220         bool
221         default n
222
223 config IOAPIC
224         bool
225         default n
226
227 # TODO: Can probably be removed once all chipsets have kconfig options for it.
228 config VIDEO_MB
229         int
230         default 0
231
232 config USE_WATCHDOG_ON_BOOT
233         bool
234         default n
235
236 config VGA
237         bool
238         default n
239         help
240           Build board-specific VGA code.
241
242 config GFXUMA
243         bool
244         default n
245         help
246           Enable Unified Memory Architecture for graphics.
247
248 # TODO
249 # menu "Drivers"
250 #
251 # endmenu
252
253 config HAVE_ACPI_TABLES
254         bool
255         help
256           This variable specifies whether a given board has ACPI table support.
257           It is usually set in mainboard/*/Kconfig.
258           Whether or not the ACPI tables are actually generated by coreboot
259           is configurable by the user via GENERATE_ACPI_TABLES.
260
261 config HAVE_MP_TABLE
262         bool
263         help
264           This variable specifies whether a given board has MP table support.
265           It is usually set in mainboard/*/Kconfig.
266           Whether or not the MP table is actually generated by coreboot
267           is configurable by the user via GENERATE_MP_TABLE.
268
269 config HAVE_PIRQ_TABLE
270         bool
271         help
272           This variable specifies whether a given board has PIRQ table support.
273           It is usually set in mainboard/*/Kconfig.
274           Whether or not the PIRQ table is actually generated by coreboot
275           is configurable by the user via GENERATE_PIRQ_TABLE.
276
277 #These Options are here to avoid "undefined" warnings.
278 #The actual selection and help texts are in the following menu.
279
280 config GENERATE_ACPI_TABLES
281         bool
282         default HAVE_ACPI_TABLES
283
284 config GENERATE_MP_TABLE
285         bool
286         default HAVE_MP_TABLE
287
288 config GENERATE_PIRQ_TABLE
289         bool
290         default HAVE_PIRQ_TABLE
291
292 menu "System tables"
293
294 config WRITE_HIGH_TABLES
295         bool "Write 'high' tables to avoid being overwritten in F segment"
296         default y
297
298 config MULTIBOOT
299         bool "Generate Multiboot tables (for GRUB2)"
300         default y
301
302 config GENERATE_ACPI_TABLES
303         depends on HAVE_ACPI_TABLES
304         bool "Generate ACPI tables"
305         default y
306         help
307           Generate ACPI tables for this board.
308
309           If unsure, say Y.
310
311 config GENERATE_MP_TABLE
312         depends on HAVE_MP_TABLE
313         bool "Generate an MP table"
314         default y
315         help
316           Generate an MP table (conforming to the Intel MultiProcessor
317           specification 1.4) for this board.
318
319           If unsure, say Y.
320
321 config GENERATE_PIRQ_TABLE
322         depends on HAVE_PIRQ_TABLE
323         bool "Generate a PIRQ table"
324         default y
325         help
326           Generate a PIRQ table for this board.
327
328           If unsure, say Y.
329
330 endmenu
331
332 menu "Payload"
333
334 choice
335         prompt "Add a payload"
336         default PAYLOAD_NONE
337
338 config PAYLOAD_NONE
339         bool "None"
340         help
341           Select this option if you want to create an "empty" coreboot
342           ROM image for a certain mainboard, i.e. a coreboot ROM image
343           which does not yet contain a payload.
344
345           For such an image to be useful, you have to use 'cbfstool'
346           to add a payload to the ROM image later.
347
348 config PAYLOAD_ELF
349         bool "An ELF executable payload"
350         help
351           Select this option if you have a payload image (an ELF file)
352           which coreboot should run as soon as the basic hardware
353           initialization is completed.
354
355           You will be able to specify the location and file name of the
356           payload image later.
357
358 endchoice
359
360 config FALLBACK_PAYLOAD_FILE
361         string "Payload path and filename"
362         depends on PAYLOAD_ELF
363         default "payload.elf"
364         help
365           The path and filename of the ELF executable file to use as payload.
366
367 # TODO: Defined if no payload? Breaks build?
368 config COMPRESSED_PAYLOAD_LZMA
369         bool "Use LZMA compression for payloads"
370         default y
371         depends on PAYLOAD_ELF
372         help
373           In order to reduce the size payloads take up in the ROM chip
374           coreboot can compress them using the LZMA algorithm.
375
376 config COMPRESSED_PAYLOAD_NRV2B
377         bool
378         default n
379
380 endmenu
381
382 menu "VGA BIOS"
383
384 config VGA_BIOS
385         bool "Add a VGA BIOS image"
386         help
387           Select this option if you have a VGA BIOS image that you would
388           like to add to your ROM.
389
390           You will be able to specify the location and file name of the
391           image later.
392
393 config FALLBACK_VGA_BIOS_FILE
394         string "VGA BIOS path and filename"
395         depends on VGA_BIOS
396         default "vgabios.bin"
397         help
398           The path and filename of the file to use as VGA BIOS.
399
400 config FALLBACK_VGA_BIOS_ID
401         string "VGA device PCI IDs"
402         depends on VGA_BIOS
403         default "1106,3230"
404         help
405           The comma-separated PCI vendor and device ID that would associate
406           your VGA BIOS to your video card.
407
408           Example: 1106,3230
409
410           In the above example 1106 is the PCI vendor ID (in hex, but without
411           the "0x" prefix) and 3230 specifies the PCI device ID of the
412           video card (also in hex, without "0x" prefix).
413
414 config INTEL_MBI
415         bool "Add an MBI image"
416         depends on NORTHBRIDGE_INTEL_I82830
417         help
418           Select this option if you have an Intel MBI image that you would
419           like to add to your ROM.
420
421           You will be able to specify the location and file name of the
422           image later.
423
424 config FALLBACK_MBI_FILE
425         string "Intel MBI path and filename"
426         depends on INTEL_MBI
427         default "mbi.bin"
428         help
429           The path and filename of the file to use as VGA BIOS.
430
431 endmenu
432
433 menu "Bootsplash"
434         depends on PCI_OPTION_ROM_RUN_YABEL
435
436 config BOOTSPLASH
437         prompt "Show graphical bootsplash"
438         bool
439         depends on PCI_OPTION_ROM_RUN_YABEL
440         help
441           This option shows a graphical bootsplash screen. The grapics are
442           loaded from the CBFS file bootsplash.jpg.
443
444 config FALLBACK_BOOTSPLASH_FILE
445         string "Bootsplash path and filename"
446         depends on BOOTSPLASH
447         default "bootsplash.jpg"
448         help
449           The path and filename of the file to use as graphical bootsplash
450           screen. The file format has to be jpg.
451
452 # TODO: Turn this into a "choice".
453 config FRAMEBUFFER_VESA_MODE
454         prompt "VESA framebuffer video mode"
455         hex
456         default 0x117
457         depends on BOOTSPLASH
458         help
459           This option sets the resolution used for the coreboot framebuffer and
460           bootsplash screen. Set to 0x117 for 1024x768x16. A diligent soul will
461           some day make this a "choice".
462
463 config COREBOOT_KEEP_FRAMEBUFFER
464         prompt "Keep VESA framebuffer"
465         bool
466         depends on BOOTSPLASH
467         help
468           This option keeps the framebuffer mode set after coreboot finishes
469           execution. If this option is enabled, coreboot will pass a
470           framebuffer entry in its coreboot table and the payload will need a
471           framebuffer driver. If this option is disabled, coreboot will switch
472           back to text mode before handing control to a payload.
473
474 endmenu
475
476 menu "Debugging"
477
478 # TODO: Better help text and detailed instructions.
479 config GDB_STUB
480         bool "GDB debugging support"
481         default y
482         help
483           If enabled, you will be able to set breakpoints for gdb debugging.
484           See src/arch/x86/lib/c_start.S for details.
485
486 config HAVE_DEBUG_RAM_SETUP
487         def_bool n
488
489 config DEBUG_RAM_SETUP
490         bool "Output verbose RAM init debug messages"
491         default n
492         depends on HAVE_DEBUG_RAM_SETUP
493         help
494           This option enables additional RAM init related debug messages.
495           It is recommended to enable this when debugging issues on your
496           board which might be RAM init related.
497
498           Note: This option will increase the size of the coreboot image.
499
500           If unsure, say N.
501
502 config HAVE_DEBUG_CAR
503         def_bool n
504
505 config DEBUG_CAR
506         def_bool n
507         depends on HAVE_DEBUG_CAR
508
509 if DEFAULT_CONSOLE_LOGLEVEL_7 || DEFAULT_CONSOLE_LOGLEVEL_8
510 # Only visible if debug level is DEBUG (7) or SPEW (8) as it does additional
511 # printk(BIOS_DEBUG, ...) calls.
512 config DEBUG_CAR
513         bool "Output verbose Cache-as-RAM debug messages"
514         default n
515         depends on HAVE_DEBUG_CAR
516         help
517           This option enables additional CAR related debug messages.
518 endif
519
520 config DEBUG_PIRQ
521         bool "Check PIRQ table consistency"
522         default n
523         depends on GENERATE_PIRQ_TABLE
524         help
525           If unsure, say N.
526
527 config HAVE_DEBUG_SMBUS
528         def_bool n
529
530 config DEBUG_SMBUS
531         bool "Output verbose SMBus debug messages"
532         default n
533         depends on HAVE_DEBUG_SMBUS
534         help
535           This option enables additional SMBus (and SPD) debug messages.
536
537           Note: This option will increase the size of the coreboot image.
538
539           If unsure, say N.
540
541 config DEBUG_SMI
542         bool "Output verbose SMI debug messages"
543         default n
544         depends on HAVE_SMI_HANDLER
545         help
546           This option enables additional SMI related debug messages.
547
548           Note: This option will increase the size of the coreboot image.
549
550           If unsure, say N.
551
552 config DEBUG_SMM_RELOCATION
553         bool "Debug SMM relocation code"
554         default n
555         depends on HAVE_SMI_HANDLER
556         help
557           This option enables additional SMM handler relocation related
558           debug messages.
559
560           Note: This option will increase the size of the coreboot image.
561
562           If unsure, say N.
563
564 config DEBUG_MALLOC
565         def_bool n
566
567 # Only visible if debug level is DEBUG (7) or SPEW (8) as it does additional
568 # printk(BIOS_DEBUG, ...) calls.
569 if DEFAULT_CONSOLE_LOGLEVEL_7 || DEFAULT_CONSOLE_LOGLEVEL_8
570 config DEBUG_MALLOC
571         bool "Output verbose malloc debug messages"
572         default n
573         help
574           This option enables additional malloc related debug messages.
575
576           Note: This option will increase the size of the coreboot image.
577
578           If unsure, say N.
579 endif
580
581 config REALMODE_DEBUG
582         def_bool n
583         depends on PCI_OPTION_ROM_RUN_REALMODE
584
585 if DEFAULT_CONSOLE_LOGLEVEL_7 || DEFAULT_CONSOLE_LOGLEVEL_8
586 # Only visible if debug level is DEBUG (7) or SPEW (8) as it does additional
587 # printk(BIOS_DEBUG, ...) calls.
588 config REALMODE_DEBUG
589         bool "Enable debug messages for option ROM execution"
590         default n
591         depends on PCI_OPTION_ROM_RUN_REALMODE
592         help
593           This option enables additional x86emu related debug messages.
594
595           Note: This option will increase the time to emulate a ROM.
596
597           If unsure, say N.
598 endif
599
600 config X86EMU_DEBUG
601         bool "Output verbose x86emu debug messages"
602         default n
603         depends on PCI_OPTION_ROM_RUN_YABEL
604         help
605           This option enables additional x86emu related debug messages.
606
607           Note: This option will increase the size of the coreboot image.
608
609           If unsure, say N.
610
611 config X86EMU_DEBUG_JMP
612         bool "Trace JMP/RETF"
613         default n
614         depends on X86EMU_DEBUG
615         help
616           Print information about JMP and RETF opcodes from x86emu.
617
618           Note: This option will increase the size of the coreboot image.
619
620           If unsure, say N.
621
622 config X86EMU_DEBUG_TRACE
623         bool "Trace all opcodes"
624         default n
625         depends on X86EMU_DEBUG
626         help
627           Print _all_ opcodes that are executed by x86emu.
628
629           WARNING: This will produce a LOT of output and take a long time.
630
631           Note: This option will increase the size of the coreboot image.
632
633           If unsure, say N.
634
635 config X86EMU_DEBUG_PNP
636         bool "Log Plug&Play accesses"
637         default n
638         depends on X86EMU_DEBUG
639         help
640           Print Plug And Play accesses made by option ROMs.
641
642           Note: This option will increase the size of the coreboot image.
643
644           If unsure, say N.
645
646 config X86EMU_DEBUG_DISK
647         bool "Log Disk I/O"
648         default n
649         depends on X86EMU_DEBUG
650         help
651           Print Disk I/O related messages.
652
653           Note: This option will increase the size of the coreboot image.
654
655           If unsure, say N.
656
657 config X86EMU_DEBUG_PMM
658         bool "Log PMM"
659         default n
660         depends on X86EMU_DEBUG
661         help
662           Print messages related to POST Memory Manager (PMM).
663
664           Note: This option will increase the size of the coreboot image.
665
666           If unsure, say N.
667
668
669 config X86EMU_DEBUG_VBE
670         bool "Debug VESA BIOS Extensions"
671         default n
672         depends on X86EMU_DEBUG
673         help
674           Print messages related to VESA BIOS Extension (VBE) functions.
675
676           Note: This option will increase the size of the coreboot image.
677
678           If unsure, say N.
679
680 config X86EMU_DEBUG_INT10
681         bool "Redirect INT10 output to console"
682         default n
683         depends on X86EMU_DEBUG
684         help
685           Let INT10 (i.e. character output) calls print messages to debug output.
686
687           Note: This option will increase the size of the coreboot image.
688
689           If unsure, say N.
690
691 config X86EMU_DEBUG_INTERRUPTS
692         bool "Log intXX calls"
693         default n
694         depends on X86EMU_DEBUG
695         help
696           Print messages related to interrupt handling.
697
698           Note: This option will increase the size of the coreboot image.
699
700           If unsure, say N.
701
702 config X86EMU_DEBUG_CHECK_VMEM_ACCESS
703         bool "Log special memory accesses"
704         default n
705         depends on X86EMU_DEBUG
706         help
707           Print messages related to accesses to certain areas of the virtual
708           memory (e.g. BDA (BIOS Data Area) or interrupt vectors)
709
710           Note: This option will increase the size of the coreboot image.
711
712           If unsure, say N.
713
714 config X86EMU_DEBUG_MEM
715         bool "Log all memory accesses"
716         default n
717         depends on X86EMU_DEBUG
718         help
719           Print memory accesses made by option ROM.
720           Note: This also includes accesses to fetch instructions.
721
722           Note: This option will increase the size of the coreboot image.
723
724           If unsure, say N.
725
726 config X86EMU_DEBUG_IO
727         bool "Log IO accesses"
728         default n
729         depends on X86EMU_DEBUG
730         help
731           Print I/O accesses made by option ROM.
732
733           Note: This option will increase the size of the coreboot image.
734
735           If unsure, say N.
736
737 config LLSHELL
738         bool "Built-in low-level shell"
739         default n
740         help
741           If enabled, you will have a low level shell to examine your machine.
742           Put llshell() in your (romstage) code to start the shell.
743           See src/arch/x86/llshell/llshell.inc for details.
744
745 endmenu
746
747 config LIFT_BSP_APIC_ID
748         bool
749         default n
750
751 # These probably belong somewhere else, but they are needed somewhere.
752 config AP_CODE_IN_CAR
753         bool
754         default n
755
756 config RAMINIT_SYSINFO
757         bool
758         default n
759
760 config ENABLE_APIC_EXT_ID
761         bool
762         default n
763
764 config WARNINGS_ARE_ERRORS
765         bool
766         default y
767
768 config ID_SECTION_OFFSET
769         hex
770         default 0x10
771
772 # The four POWER_BUTTON_DEFAULT_ENABLE, POWER_BUTTON_DEFAULT_DISABLE,
773 # POWER_BUTTON_FORCE_ENABLE and POWER_BUTTON_FORCE_DISABLE options are
774 # mutually exclusive. One of these options must be selected in the
775 # mainboard Kconfig if the chipset supports enabling and disabling of
776 # the power button. Chipset code uses the ENABLE_POWER_BUTTON option set
777 # in mainboard/Kconfig to know if the button should be enabled or not.
778
779 config POWER_BUTTON_DEFAULT_ENABLE
780         def_bool n
781         help
782           Select when the board has a power button which can optionally be
783           disabled by the user.
784
785 config POWER_BUTTON_DEFAULT_DISABLE
786         def_bool n
787         help
788           Select when the board has a power button which can optionally be
789           enabled by the user, e.g. when the board ships with a jumper over
790           the power switch contacts.
791
792 config POWER_BUTTON_FORCE_ENABLE
793         def_bool n
794         help
795           Select when the board requires that the power button is always
796           enabled.
797
798 config POWER_BUTTON_FORCE_DISABLE
799         def_bool n
800         help
801           Select when the board requires that the power button is always
802           disabled, e.g. when it has been hardwired to ground.
803
804 config POWER_BUTTON_IS_OPTIONAL
805         bool
806         default y if POWER_BUTTON_DEFAULT_ENABLE || POWER_BUTTON_DEFAULT_DISABLE
807         default n if !(POWER_BUTTON_DEFAULT_ENABLE || POWER_BUTTON_DEFAULT_DISABLE)
808         help
809           Internal option that controls ENABLE_POWER_BUTTON visibility.
810
811 source src/Kconfig.deprecated_options