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