Debugging facility improvements.
[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/i386/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/i386/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 # Only visible if debug level is DEBUG (7) or SPEW (8) as it does additional
506 # printk(BIOS_DEBUG, ...) calls.
507 config DEBUG_CAR
508         bool "Output verbose Cache-as-RAM debug messages"
509         default n
510         depends on HAVE_DEBUG_CAR && \
511                    (DEFAULT_CONSOLE_LOGLEVEL_7 || DEFAULT_CONSOLE_LOGLEVEL_8)
512         help
513           This option enables additional CAR related debug messages.
514
515 config DEBUG_PIRQ
516         bool "Check PIRQ table consistency"
517         default n
518         depends on GENERATE_PIRQ_TABLE
519         help
520           If unsure, say N.
521
522 config HAVE_DEBUG_SMBUS
523         def_bool n
524
525 config DEBUG_SMBUS
526         bool "Output verbose SMBus debug messages"
527         default n
528         depends on HAVE_DEBUG_SMBUS
529         help
530           This option enables additional SMBus (and SPD) debug messages.
531
532           Note: This option will increase the size of the coreboot image.
533
534           If unsure, say N.
535
536 config DEBUG_SMI
537         bool "Output verbose SMI debug messages"
538         default n
539         depends on HAVE_SMI_HANDLER
540         help
541           This option enables additional SMI related debug messages.
542
543           Note: This option will increase the size of the coreboot image.
544
545           If unsure, say N.
546
547 config DEBUG_SMM_RELOCATION
548         bool "Debug SMM relocation code"
549         default n
550         depends on HAVE_SMI_HANDLER
551         help
552           This option enables additional SMM handler relocation related
553           debug messages.
554
555           Note: This option will increase the size of the coreboot image.
556
557           If unsure, say N.
558
559 # Only visible if debug level is DEBUG (7) or SPEW (8) as it does additional
560 # printk(BIOS_DEBUG, ...) calls.
561 config DEBUG_MALLOC
562         bool "Output verbose malloc debug messages"
563         default n
564         depends on DEFAULT_CONSOLE_LOGLEVEL_7 || DEFAULT_CONSOLE_LOGLEVEL_8
565         help
566           This option enables additional malloc related debug messages.
567
568           Note: This option will increase the size of the coreboot image.
569
570           If unsure, say N.
571
572 # Only visible if debug level is DEBUG (7) or SPEW (8) as it does additional
573 # printk(BIOS_DEBUG, ...) calls.
574 config REALMODE_DEBUG
575         bool "Enable debug messages for option ROM execution"
576         default n
577         depends on PCI_OPTION_ROM_RUN_REALMODE && \
578                    (DEFAULT_CONSOLE_LOGLEVEL_7 || DEFAULT_CONSOLE_LOGLEVEL_8)
579         help
580           This option enables additional x86emu related debug messages.
581
582           Note: This option will increase the time to emulate a ROM.
583
584           If unsure, say N.
585
586 config X86EMU_DEBUG
587         bool "Output verbose x86emu debug messages"
588         default n
589         depends on PCI_OPTION_ROM_RUN_YABEL
590         help
591           This option enables additional x86emu related debug messages.
592
593           Note: This option will increase the size of the coreboot image.
594
595           If unsure, say N.
596
597 config X86EMU_DEBUG_JMP
598         bool "Trace JMP/RETF"
599         default n
600         depends on X86EMU_DEBUG
601         help
602           Print information about JMP and RETF opcodes from x86emu.
603
604           Note: This option will increase the size of the coreboot image.
605
606           If unsure, say N.
607
608 config X86EMU_DEBUG_TRACE
609         bool "Trace all opcodes"
610         default n
611         depends on X86EMU_DEBUG
612         help
613           Print _all_ opcodes that are executed by x86emu.
614
615           WARNING: This will produce a LOT of output and take a long time.
616
617           Note: This option will increase the size of the coreboot image.
618
619           If unsure, say N.
620
621 config X86EMU_DEBUG_PNP
622         bool "Log Plug&Play accesses"
623         default n
624         depends on X86EMU_DEBUG
625         help
626           Print Plug And Play accesses made by option ROMs.
627
628           Note: This option will increase the size of the coreboot image.
629
630           If unsure, say N.
631
632 config X86EMU_DEBUG_DISK
633         bool "Log Disk I/O"
634         default n
635         depends on X86EMU_DEBUG
636         help
637           Print Disk I/O related messages.
638
639           Note: This option will increase the size of the coreboot image.
640
641           If unsure, say N.
642
643 config X86EMU_DEBUG_PMM
644         bool "Log PMM"
645         default n
646         depends on X86EMU_DEBUG
647         help
648           Print messages related to POST Memory Manager (PMM).
649
650           Note: This option will increase the size of the coreboot image.
651
652           If unsure, say N.
653
654
655 config X86EMU_DEBUG_VBE
656         bool "Debug VESA BIOS Extensions"
657         default n
658         depends on X86EMU_DEBUG
659         help
660           Print messages related to VESA BIOS Extension (VBE) functions.
661
662           Note: This option will increase the size of the coreboot image.
663
664           If unsure, say N.
665
666 config X86EMU_DEBUG_INT10
667         bool "Redirect INT10 output to console"
668         default n
669         depends on X86EMU_DEBUG
670         help
671           Let INT10 (i.e. character output) calls print messages to debug output.
672
673           Note: This option will increase the size of the coreboot image.
674
675           If unsure, say N.
676
677 config X86EMU_DEBUG_INTERRUPTS
678         bool "Log intXX calls"
679         default n
680         depends on X86EMU_DEBUG
681         help
682           Print messages related to interrupt handling.
683
684           Note: This option will increase the size of the coreboot image.
685
686           If unsure, say N.
687
688 config X86EMU_DEBUG_CHECK_VMEM_ACCESS
689         bool "Log special memory accesses"
690         default n
691         depends on X86EMU_DEBUG
692         help
693           Print messages related to accesses to certain areas of the virtual
694           memory (e.g. BDA (BIOS Data Area) or interrupt vectors)
695
696           Note: This option will increase the size of the coreboot image.
697
698           If unsure, say N.
699
700 config X86EMU_DEBUG_MEM
701         bool "Log all memory accesses"
702         default n
703         depends on X86EMU_DEBUG
704         help
705           Print memory accesses made by option ROM.
706           Note: This also includes accesses to fetch instructions.
707
708           Note: This option will increase the size of the coreboot image.
709
710           If unsure, say N.
711
712 config X86EMU_DEBUG_IO
713         bool "Log IO accesses"
714         default n
715         depends on X86EMU_DEBUG
716         help
717           Print I/O accesses made by option ROM.
718
719           Note: This option will increase the size of the coreboot image.
720
721           If unsure, say N.
722
723 config LLSHELL
724         bool "Built-in low-level shell"
725         default n
726         help
727           If enabled, you will have a low level shell to examine your machine.
728           Put llshell() in your (romstage) code to start the shell.
729           See src/arch/i386/llshell/llshell.inc for details.
730
731 endmenu
732
733 config LIFT_BSP_APIC_ID
734         bool
735         default n
736
737 # These probably belong somewhere else, but they are needed somewhere.
738 config AP_CODE_IN_CAR
739         bool
740         default n
741
742 config RAMINIT_SYSINFO
743         bool
744         default n
745
746 config ENABLE_APIC_EXT_ID
747         bool
748         default n
749
750 config WARNINGS_ARE_ERRORS
751         bool
752         default y
753
754 config ID_SECTION_OFFSET
755         hex
756         default 0x10
757
758 # The four POWER_BUTTON_DEFAULT_ENABLE, POWER_BUTTON_DEFAULT_DISABLE,
759 # POWER_BUTTON_FORCE_ENABLE and POWER_BUTTON_FORCE_DISABLE options are
760 # mutually exclusive. One of these options must be selected in the
761 # mainboard Kconfig if the chipset supports enabling and disabling of
762 # the power button. Chipset code uses the ENABLE_POWER_BUTTON option set
763 # in mainboard/Kconfig to know if the button should be enabled or not.
764
765 config POWER_BUTTON_DEFAULT_ENABLE
766         def_bool n
767         help
768           Select when the board has a power button which can optionally be
769           disabled by the user.
770
771 config POWER_BUTTON_DEFAULT_DISABLE
772         def_bool n
773         help
774           Select when the board has a power button which can optionally be
775           enabled by the user, e.g. when the board ships with a jumper over
776           the power switch contacts.
777
778 config POWER_BUTTON_FORCE_ENABLE
779         def_bool n
780         help
781           Select when the board requires that the power button is always
782           enabled.
783
784 config POWER_BUTTON_FORCE_DISABLE
785         def_bool n
786         help
787           Select when the board requires that the power button is always
788           disabled, e.g. when it has been hardwired to ground.
789
790 config POWER_BUTTON_IS_OPTIONAL
791         bool
792         default y if POWER_BUTTON_DEFAULT_ENABLE || POWER_BUTTON_DEFAULT_DISABLE
793         default n if !(POWER_BUTTON_DEFAULT_ENABLE || POWER_BUTTON_DEFAULT_DISABLE)
794         help
795           Internal option that controls ENABLE_POWER_BUTTON visibility.
796
797 source src/Kconfig.deprecated_options