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