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