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