soc/intel/alderlake: Add ADL-P 4+4 with 28W TDP
[coreboot.git] / src / Kconfig
blob16f788154f53d5238dd58a389483e5fce838f147
1 ## SPDX-License-Identifier: GPL-2.0-only
3 mainmenu "coreboot configuration"
5 menu "General setup"
7 config COREBOOT_BUILD
8         bool
9         default y
11 config LOCALVERSION
12         string "Local version string"
13         help
14           Append an extra string to the end of the coreboot version.
16           This can be useful if, for instance, you want to append the
17           respective board's hostname or some other identifying string to
18           the coreboot version number, so that you can easily distinguish
19           boot logs of different boards from each other.
21 config CONFIGURABLE_CBFS_PREFIX
22         bool
23         help
24           Select this to prompt to use to configure the prefix for cbfs files.
26 choice
27         prompt "CBFS prefix to use"
28         depends on CONFIGURABLE_CBFS_PREFIX
29         default CBFS_PREFIX_FALLBACK
31 config CBFS_PREFIX_FALLBACK
32         bool "fallback"
34 config CBFS_PREFIX_NORMAL
35         bool "normal"
37 config CBFS_PREFIX_DIY
38         bool "Define your own cbfs prefix"
40 endchoice
42 config CBFS_PREFIX
43         string "CBFS prefix to use" if CBFS_PREFIX_DIY
44         default "fallback" if !CONFIGURABLE_CBFS_PREFIX || CBFS_PREFIX_FALLBACK
45         default "normal" if CBFS_PREFIX_NORMAL
46         help
47           Select the prefix to all files put into the image. It's "fallback"
48           by default, "normal" is a common alternative.
50 choice
51         prompt "Compiler to use"
52         default COMPILER_GCC
53         help
54           This option allows you to select the compiler used for building
55           coreboot.
56           You must build the coreboot crosscompiler for the board that you
57           have selected.
59           To build all the GCC crosscompilers (takes a LONG time), run:
60             make crossgcc
62           For help on individual architectures, run the command:
63             make help_toolchain
65 config COMPILER_GCC
66         bool "GCC"
67         help
68           Use the GNU Compiler Collection (GCC) to build coreboot.
70           For details see http://gcc.gnu.org.
72 config COMPILER_LLVM_CLANG
73         bool "LLVM/clang"
74         depends on ALLOW_EXPERIMENTAL_CLANG || ARCH_SUPPORTS_CLANG
75         help
76           Use LLVM/clang to build coreboot.  To use this, you must build the
77           coreboot version of the clang compiler.  Run the command
78             make clang
79           Note that Clang is not currently working on all architectures.
81           For details see http://clang.llvm.org.
83 endchoice
85 config ARCH_SUPPORTS_CLANG
86         bool
87         help
88           Opt-in flag for architectures that generally work well with CLANG.
89           By default the option would be hidden.
91 config ALLOW_EXPERIMENTAL_CLANG
92         bool "Allow experimental LLVM/Clang"
93         depends on !ARCH_SUPPORTS_CLANG
94         help
95           On some architectures CLANG does not work that well.
96           Use this only to try to get CLANG working.
98 config ANY_TOOLCHAIN
99         bool "Allow building with any toolchain"
100         default n
101         help
102           Many toolchains break when building coreboot since it uses quite
103           unusual linker features. Unless developers explicitly request it,
104           we'll have to assume that they use their distro compiler by mistake.
105           Make sure that using patched compilers is a conscious decision.
107 config CCACHE
108         bool "Use ccache to speed up (re)compilation"
109         default n
110         help
111           Enables the use of ccache for faster builds.
113           Requires the ccache utility in your system $PATH.
115           For details see https://ccache.samba.org.
117 config IWYU
118         bool "Test platform with include-what-you-use"
119         help
120           This runs each source file through the include-what-you-use tool
121           to check the header includes.
123 config FMD_GENPARSER
124         bool "Generate flashmap descriptor parser using flex and bison"
125         default n
126         help
127           Enable this option if you are working on the flashmap descriptor
128           parser and made changes to fmd_scanner.l or fmd_parser.y.
130           Otherwise, say N to use the provided pregenerated scanner/parser.
132 config UTIL_GENPARSER
133         bool "Generate parsers for bincfg, sconfig and kconfig locally"
134         default n
135         help
136           Enable this option if you are working on the sconfig device tree
137           parser or bincfg and made changes to the .l or .y files.
139           Otherwise, say N to use the provided pregenerated scanner/parser.
141 choice
142         prompt "Option backend to use"
143         default USE_MAINBOARD_SPECIFIC_OPTION_BACKEND if HAVE_MAINBOARD_SPECIFIC_OPTION_BACKEND
144         default USE_OPTION_TABLE if NVRAMCUI_SECONDARY_PAYLOAD
146 config OPTION_BACKEND_NONE
147         bool "None"
149 config USE_OPTION_TABLE
150         bool "Use CMOS for configuration values"
151         depends on HAVE_OPTION_TABLE
152         help
153           Enable this option if coreboot shall read options from the "CMOS"
154           NVRAM instead of using hard-coded values.
156 config USE_MAINBOARD_SPECIFIC_OPTION_BACKEND
157         bool "Use mainboard-specific option backend"
158         depends on HAVE_MAINBOARD_SPECIFIC_OPTION_BACKEND
159         help
160           Use a mainboard-specific mechanism to access runtime-configurable
161           options.
163 endchoice
165 config STATIC_OPTION_TABLE
166         bool "Load default configuration values into CMOS on each boot"
167         depends on USE_OPTION_TABLE
168         help
169           Enable this option to reset "CMOS" NVRAM values to default on
170           every boot.  Use this if you want the NVRAM configuration to
171           never be modified from its default values.
173 config MB_COMPRESS_RAMSTAGE_LZ4
174         bool
175         help
176           Select this in a mainboard to use LZ4 compression by default
178 choice
179         prompt "Ramstage compression"
180         depends on HAVE_RAMSTAGE && !UNCOMPRESSED_RAMSTAGE
181         default COMPRESS_RAMSTAGE_LZ4 if MB_COMPRESS_RAMSTAGE_LZ4
182         default COMPRESS_RAMSTAGE_LZMA
184 config COMPRESS_RAMSTAGE_LZMA
185         bool "Compress ramstage with LZMA"
186         help
187           Compress ramstage with LZMA to save memory in the flash image.
189 config COMPRESS_RAMSTAGE_LZ4
190         bool "Compress ramstage with LZ4"
191         help
192           LZ4 doesn't give as good compression as LZMA, but decompresses much
193           faster. For large binaries such as ramstage, it's typically best to
194           use LZMA, but there can be cases where the faster decompression of
195           LZ4 can lead to a faster boot time. Testing on each individual board
196           is typically going to be needed due to the large number of factors
197           that can influence the decision. Binary size, CPU speed, ROM read
198           speed, cache, and other factors all play a part.
200           If you're not sure, stick with LZMA.
202 endchoice
204 config COMPRESS_PRERAM_STAGES
205         bool "Compress romstage and verstage with LZ4"
206         depends on (HAVE_ROMSTAGE || HAVE_VERSTAGE) && NO_XIP_EARLY_STAGES
207         # Default value set at the end of the file
208         help
209           Compress romstage and (if it exists) verstage with LZ4 to save flash
210           space and speed up boot, since the time for reading the image from SPI
211           (and in the vboot case verifying it) is usually much greater than the
212           time spent decompressing. Doesn't work for XIP stages for obvious
213           reasons.
215 config COMPRESS_BOOTBLOCK
216         bool
217         depends on HAVE_BOOTBLOCK
218         help
219           This option can be used to compress the bootblock with LZ4 and attach
220           a small self-decompression stub to its front. This can drastically
221           reduce boot time on platforms where the bootblock is loaded over a
222           very slow connection and bootblock size trumps all other factors for
223           speed. Since using this option usually requires changes to the
224           SoC memlayout and possibly extra support code, it should not be
225           user-selectable. (There's no real point in offering this to the user
226           anyway... if it works and saves boot time, you would always want it.)
228 config INCLUDE_CONFIG_FILE
229         bool "Include the coreboot .config file into the ROM image"
230         # Default value set at the end of the file
231         help
232           Include the .config file that was used to compile coreboot
233           in the (CBFS) ROM image. This is useful if you want to know which
234           options were used to build a specific coreboot.rom image.
236           Saying Y here will increase the image size by 2-3KB.
238           You can then use cbfstool to extract the config from a final image:
240             cbfstool coreboot.rom extract -n config -f <output file path>
242           Alternatively, you can also use cbfstool to print the image
243           contents (including the raw 'config' item we're looking for).
245           Example:
247             $ cbfstool coreboot.rom print
248             coreboot.rom: 4096 kB, bootblocksize 1008, romsize 4194304,
249                                                        offset 0x0
250             Alignment: 64 bytes
252             Name                           Offset     Type         Size
253             cmos_layout.bin                0x0        CMOS layout  1159
254             fallback/romstage              0x4c0      stage        339756
255             fallback/ramstage              0x53440    stage        186664
256             fallback/payload               0x80dc0    payload      51526
257             config                         0x8d740    raw          3324
258             (empty)                        0x8e480    null         3610440
260 config COLLECT_TIMESTAMPS
261         bool "Create a table of timestamps collected during boot"
262         default y if ARCH_X86
263         help
264           Make coreboot create a table of timer-ID/timer-value pairs to
265           allow measuring time spent at different phases of the boot process.
267 config TIMESTAMPS_ON_CONSOLE
268         bool "Print the timestamp values on the console"
269         default n
270         depends on COLLECT_TIMESTAMPS
271         help
272           Print the timestamps to the debug console if enabled at level info.
274 config USE_BLOBS
275         bool "Allow use of binary-only repository"
276         default y
277         help
278           This draws in the blobs repository, which contains binary files that
279           might be required for some chipsets or boards.
280           This flag ensures that a "Free" option remains available for users.
282 config USE_AMD_BLOBS
283         bool "Allow AMD blobs repository (with license agreement)"
284         depends on USE_BLOBS
285         help
286           This draws in the amd_blobs repository, which contains binary files
287           distributed by AMD, including VBIOS, PSP bootloaders, SMU firmwares,
288           etc.  Selecting this item to download or clone the repo implies your
289           agreement to the AMD license agreement.  A copy of the license text
290           may be reviewed by reading Documentation/soc/amd/amdblobs_license.md,
291           and your copy of the license is present in the repo once downloaded.
293           Note that for some products, omitting PSP, SMU images, or other items
294           may result in a nonbooting coreboot.rom.
296 config USE_QC_BLOBS
297         bool "Allow QC blobs repository (selecting this agrees to the license!)"
298         depends on USE_BLOBS
299         help
300           This draws in the qc_blobs repository, which contains binary files
301           distributed by Qualcomm that are required to build firmware for
302           certain Qualcomm SoCs (including QcLib, QC-SEC, qtiseclib and QUP
303           firmware). If you say Y here you are implicitly agreeing to the
304           Qualcomm license agreement which can be found at:
305           https://review.coreboot.org/cgit/qc_blobs.git/tree/LICENSE
307           *****************************************************
308           PLEASE MAKE SURE YOU READ AND AGREE TO ALL TERMS IN
309           ABOVE LICENSE AGREEMENT BEFORE SELECTING THIS OPTION!
310           *****************************************************
312           Not selecting this option means certain Qualcomm SoCs and related
313           mainboards cannot be built and will be hidden from the "Mainboards"
314           section.
316 config COVERAGE
317         bool "Code coverage support"
318         depends on COMPILER_GCC
319         help
320           Add code coverage support for coreboot. This will store code
321           coverage information in CBMEM for extraction from user space.
322           If unsure, say N.
324 config UBSAN
325         bool "Undefined behavior sanitizer support"
326         default n
327         help
328           Instrument the code with checks for undefined behavior. If unsure,
329           say N because it adds a small performance penalty and may abort
330           on code that happens to work in spite of the UB.
332 config HAVE_ASAN_IN_ROMSTAGE
333         bool
334         default n
336 config ASAN_IN_ROMSTAGE
337         bool
338         default n
339         help
340           Enable address sanitizer in romstage for platform.
342 config HAVE_ASAN_IN_RAMSTAGE
343         bool
344         default n
346 config ASAN_IN_RAMSTAGE
347         bool
348         default n
349         help
350           Enable address sanitizer in ramstage for platform.
352 config ASAN
353         bool "Address sanitizer support"
354         default n
355         select ASAN_IN_ROMSTAGE if HAVE_ASAN_IN_ROMSTAGE
356         select ASAN_IN_RAMSTAGE if HAVE_ASAN_IN_RAMSTAGE
357         depends on COMPILER_GCC
358         help
359           Enable address sanitizer - runtime memory debugger,
360           designed to find out-of-bounds accesses and use-after-scope bugs.
362           This feature consumes up to 1/8 of available memory and brings about
363           ~1.5x performance slowdown.
365           If unsure, say N.
367 if ASAN
368         comment "Before using this feature, make sure that           "
369         comment "asan_shadow_offset_callback patch is applied to GCC."
370 endif
372 choice
373         prompt "Stage Cache for ACPI S3 resume"
374         default NO_STAGE_CACHE if !HAVE_ACPI_RESUME || MAINBOARD_DISABLE_STAGE_CACHE
375         default TSEG_STAGE_CACHE if SMM_TSEG
377 config NO_STAGE_CACHE
378         bool "Disabled"
379         help
380           Do not save any component in stage cache for resume path. On resume,
381           all components would be read back from CBFS again.
383 config TSEG_STAGE_CACHE
384         bool "TSEG"
385         depends on SMM_TSEG
386         help
387           The option enables stage cache support for platform. Platform
388           can stash copies of postcar, ramstage and raw runtime data
389           inside SMM TSEG, to be restored on S3 resume path.
391 config CBMEM_STAGE_CACHE
392         bool "CBMEM"
393         depends on !SMM_TSEG
394         help
395           The option enables stage cache support for platform. Platform
396           can stash copies of postcar, ramstage and raw runtime data
397           inside CBMEM.
399           While the approach is faster than reloading stages from boot media
400           it is also a possible attack scenario via which OS can possibly
401           circumvent SMM locks and SPI write protections.
403           If unsure, select 'N'
405 endchoice
407 config MAINBOARD_DISABLE_STAGE_CACHE
408         bool
409         help
410           Selected by mainboards which wish to disable the stage cache.
411           E.g. mainboards which don't use S3 resume in the field may wish to
412           disable it to save boot time at the cost of increasing S3 resume time.
414 config UPDATE_IMAGE
415         bool "Update existing coreboot.rom image"
416         help
417           If this option is enabled, no new coreboot.rom file
418           is created. Instead it is expected that there already
419           is a suitable file for further processing.
420           The bootblock will not be modified.
422           If unsure, select 'N'
424 config BOOTSPLASH_IMAGE
425         bool "Add a bootsplash image"
426         help
427           Select this option if you have a bootsplash image that you would
428           like to add to your ROM.
430           This will only add the image to the ROM. To actually run it check
431           options under 'Display' section.
433 config BOOTSPLASH_FILE
434         string "Bootsplash path and filename"
435         depends on BOOTSPLASH_IMAGE
436         # Default value set at the end of the file
437         help
438           The path and filename of the file to use as graphical bootsplash
439           screen. The file format has to be jpg.
441 config FW_CONFIG
442         bool "Firmware Configuration Probing"
443         default n
444         help
445           Enable support for probing devices with fw_config.  This is a simple
446           bitmask broken into fields and options for probing.
448 config FW_CONFIG_SOURCE_CHROMEEC_CBI
449         bool "Obtain Firmware Configuration value from Google Chrome EC CBI"
450         depends on FW_CONFIG && EC_GOOGLE_CHROMEEC
451         default n
452         help
453           This option tells coreboot to read the firmware configuration value
454           from the Google Chrome Embedded Controller CBI interface.  This source
455           is not tried if FW_CONFIG_SOURCE_CBFS is enabled and the value was
456           found in CBFS.
458 config FW_CONFIG_SOURCE_CBFS
459         bool "Obtain Firmware Configuration value from CBFS"
460         depends on FW_CONFIG
461         default n
462         help
463           With this option enabled coreboot will look for the 32bit firmware
464           configuration value in CBFS at the selected prefix with the file name
465           "fw_config".  This option will override other sources and allow the
466           local image to preempt the mainboard selected source and can be used as
467           FW_CONFIG_SOURCE_CHROMEEC_CBI fallback option.
469 config FW_CONFIG_SOURCE_VPD
470         bool "Obtain Firmware Configuration value from VPD"
471         depends on FW_CONFIG && VPD
472         default n
473         help
474           With this option enabled coreboot will look for the 32bit firmware
475           configuration value in VPD key name "fw_config".  This option will
476           override other sources and allow the local image to preempt the mainboard
477           selected source and can be used for other FW_CONFIG_SOURCEs fallback option.
479 config HAVE_RAMPAYLOAD
480         bool
482 config RAMPAYLOAD
483         bool "Enable coreboot flow without executing ramstage"
484         default y if ARCH_X86
485         depends on HAVE_RAMPAYLOAD
486         help
487           If this option is enabled, coreboot flow will skip ramstage
488           loading and execution of ramstage to load payload.
490           Instead it is expected to load payload from postcar stage itself.
492           In this flow coreboot will perform basic x86 initialization
493           (DRAM resource allocation), MTRR programming,
494           Skip PCI enumeration logic and only allocate BAR for fixed devices
495           (bootable devices, TPM over GSPI).
497 config HAVE_CONFIGURABLE_RAMSTAGE
498         bool
500 config CONFIGURABLE_RAMSTAGE
501         bool "Enable a configurable ramstage."
502         default y if ARCH_X86
503         depends on HAVE_CONFIGURABLE_RAMSTAGE
504         help
505           A configurable ramstage allows you to select which parts of the ramstage
506           to run. Currently, we can only select a minimal PCI scanning step.
507           The minimal PCI scanning will only check those parts that are enabled
508           in the devicetree.cb. By convention none of those devices should be bridges.
510 config MINIMAL_PCI_SCANNING
511         bool "Enable minimal PCI scanning"
512         depends on CONFIGURABLE_RAMSTAGE && PCI
513         help
514           If this option is enabled, coreboot will scan only PCI devices
515           marked as mandatory in devicetree.cb
517 menu "Software Bill Of Materials (SBOM)"
519 source "src/sbom/Kconfig"
521 endmenu
522 endmenu
524 menu "Mainboard"
526 source "src/mainboard/Kconfig"
528 config DEVICETREE
529         string
530         default "devicetree.cb"
531         help
532           This symbol allows mainboards to select a different file under their
533           mainboard directory for the devicetree.cb file.  This allows the board
534           variants that need different devicetrees to be in the same directory.
536           Examples: "devicetree.variant.cb"
537                     "variant/devicetree.cb"
539 config OVERRIDE_DEVICETREE
540         string
541         default ""
542         help
543           This symbol allows variants to provide an override devicetree file to
544           override the registers and/or add new devices on top of the ones
545           provided by baseboard devicetree using CONFIG_DEVICETREE.
547           Examples: "devicetree.variant-override.cb"
548                     "variant/devicetree-override.cb"
550 config FMDFILE
551         string "fmap description file in fmd format"
552         default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/chromeos.fmd" if CHROMEOS
553         default ""
554         help
555           The build system creates a default FMAP from ROM_SIZE and CBFS_SIZE,
556           but in some cases more complex setups are required.
557           When an fmd is specified, it overrides the default format.
559 config CBFS_SIZE
560         hex "Size of CBFS filesystem in ROM"
561         depends on FMDFILE = ""
562         # Default value set at the end of the file
563         help
564           This is the part of the ROM actually managed by CBFS, located at the
565           end of the ROM (passed through cbfstool -o) on x86 and at the start
566           of the ROM (passed through cbfstool -s) everywhere else. It defaults
567           to span the whole ROM on all but Intel systems that use an Intel Firmware
568           Descriptor.  It can be overridden to make coreboot live alongside other
569           components like ChromeOS's vboot/FMAP or Intel's IFD / ME / TXE
570           binaries. This symbol should only be used to generate a default FMAP and
571           is unused when a non-default fmd file is provided via CONFIG_FMDFILE.
573 endmenu
575 # load site-local kconfig to allow user specific defaults and overrides
576 source "site-local/Kconfig"
578 config SYSTEM_TYPE_LAPTOP
579         default n
580         bool
582 config SYSTEM_TYPE_TABLET
583         default n
584         bool
586 config SYSTEM_TYPE_DETACHABLE
587         default n
588         bool
590 config SYSTEM_TYPE_CONVERTIBLE
591         default n
592         bool
594 config CBFS_AUTOGEN_ATTRIBUTES
595         default n
596         bool
597         help
598           If this option is selected, every file in cbfs which has a constraint
599           regarding position or alignment will get an additional file attribute
600           which describes this constraint.
602 menu "Chipset"
604 comment "SoC"
605 source "src/soc/*/*/Kconfig"
606 source "src/soc/*/*/Kconfig.common"
607 comment "CPU"
608 source "src/cpu/Kconfig"
609 comment "Northbridge"
610 source "src/northbridge/*/*/Kconfig"
611 source "src/northbridge/*/*/Kconfig.common"
612 comment "Southbridge"
613 source "src/southbridge/*/*/Kconfig"
614 source "src/southbridge/*/*/Kconfig.common"
615 comment "Super I/O"
616 source "src/superio/*/*/Kconfig"
617 comment "Embedded Controllers"
618 source "src/ec/acpi/Kconfig"
619 source "src/ec/*/*/Kconfig"
621 source "src/southbridge/intel/common/firmware/Kconfig"
622 source "src/vendorcode/*/Kconfig"
624 source "src/arch/*/Kconfig"
626 config CHIPSET_DEVICETREE
627         string
628         default ""
629         help
630           This symbol allows a chipset to provide a set of default settings in
631           a devicetree which are common to all mainboards. This may include
632           devices (including alias names), chip drivers, register settings,
633           and others. This path is relative to the src/ directory.
635           Example: "chipset.cb"
637 endmenu
639 source "src/device/Kconfig"
641 menu "Generic Drivers"
642 source "src/drivers/*/Kconfig"
643 source "src/drivers/*/*/Kconfig"
644 source "src/drivers/*/*/*/Kconfig"
645 source "src/commonlib/storage/Kconfig"
646 endmenu
648 menu "Security"
650 source "src/security/Kconfig"
651 source "src/vendorcode/eltan/security/Kconfig"
653 endmenu
655 source "src/acpi/Kconfig"
657 # This option is for the current boards/chipsets where SPI flash
658 # is not the boot device. Currently nearly all boards/chipsets assume
659 # SPI flash is the boot device.
660 config BOOT_DEVICE_NOT_SPI_FLASH
661         bool
662         default n
664 config BOOT_DEVICE_SPI_FLASH
665         bool
666         default y if !BOOT_DEVICE_NOT_SPI_FLASH
667         default n
669 config BOOT_DEVICE_MEMORY_MAPPED
670         bool
671         default y if ARCH_X86 && BOOT_DEVICE_SPI_FLASH
672         default n
673         help
674           Inform system if SPI is memory-mapped or not.
676 config BOOT_DEVICE_SUPPORTS_WRITES
677         bool
678         default n
679         help
680           Indicate that the platform has writable boot device
681           support.
683 config RTC
684         bool
685         default n
687 config HEAP_SIZE
688         hex
689         default 0x100000 if FLATTENED_DEVICE_TREE
690         default 0x4000
692 config STACK_SIZE
693         hex
694         default 0x2000 if ARCH_X86
695         default 0x0
697 config MAX_CPUS
698         int
699         default 1
701 source "src/console/Kconfig"
703 config HAVE_ACPI_RESUME
704         bool
705         default n
707 config DISABLE_ACPI_HIBERNATE
708         bool
709         default n
710         help
711           Removes S4 from the available sleepstates
713 config RESUME_PATH_SAME_AS_BOOT
714         bool
715         default y if ARCH_X86
716         depends on HAVE_ACPI_RESUME
717         help
718           This option indicates that when a system resumes it takes the
719           same path as a regular boot. e.g. an x86 system runs from the
720           reset vector at 0xfffffff0 on both resume and warm/cold boot.
722 config NO_MONOTONIC_TIMER
723         def_bool n
725 config HAVE_MONOTONIC_TIMER
726         bool
727         depends on !NO_MONOTONIC_TIMER
728         default y
729         help
730          The board/chipset provides a monotonic timer.
732 config GENERIC_UDELAY
733         bool
734         depends on HAVE_MONOTONIC_TIMER
735         default y if !ARCH_X86
736         help
737          The board/chipset uses a generic udelay function utilizing the
738          monotonic timer.
740 config TIMER_QUEUE
741         def_bool n
742         depends on HAVE_MONOTONIC_TIMER
743         help
744           Provide a timer queue for performing time-based callbacks.
746 config COOP_MULTITASKING
747         def_bool n
748         select TIMER_QUEUE
749         depends on ARCH_X86
750         help
751           Cooperative multitasking allows callbacks to be multiplexed on the
752           main thread. With this enabled it allows for multiple execution paths
753           to take place when they have udelay() calls within their code.
755 config NUM_THREADS
756         int
757         default 4
758         depends on COOP_MULTITASKING
759         help
760           How many execution threads to cooperatively multitask with.
762 config HAVE_MAINBOARD_SPECIFIC_OPTION_BACKEND
763         bool
764         help
765           Selected by mainboards which implement a mainboard-specific mechanism
766           to access the values for runtime-configurable options. For example, a
767           custom BMC interface or an EEPROM with an externally-imposed layout.
769 config HAVE_OPTION_TABLE
770         bool
771         default n
772         help
773           This variable specifies whether a given board has a cmos.layout
774           file containing NVRAM/CMOS bit definitions.
775           It defaults to 'n' but can be selected in mainboard/*/Kconfig.
777 config CMOS_LAYOUT_FILE
778         string
779         default "src/mainboard/\$(MAINBOARDDIR)/cmos.layout"
780         depends on HAVE_OPTION_TABLE
782 config PCI_IO_CFG_EXT
783         bool
784         default n
786 config IOAPIC
787         bool
788         default y if SMP
789         default n
791 config USE_WATCHDOG_ON_BOOT
792         bool
793         default n
795 config GFXUMA
796         bool
797         default n
798         help
799           Enable Unified Memory Architecture for graphics.
801 config HAVE_MP_TABLE
802         bool
803         help
804           This variable specifies whether a given board has MP table support.
805           It is usually set in mainboard/*/Kconfig.
806           Whether or not the MP table is actually generated by coreboot
807           is configurable by the user via GENERATE_MP_TABLE.
809 config HAVE_PIRQ_TABLE
810         bool
811         help
812           This variable specifies whether a given board has PIRQ table support.
813           It is usually set in mainboard/*/Kconfig.
814           Whether or not the PIRQ table is actually generated by coreboot
815           is configurable by the user via GENERATE_PIRQ_TABLE.
817 config ACPI_NHLT
818         bool
819         default n
820         help
821           Build support for NHLT (non HD Audio) ACPI table generation.
823 #These Options are here to avoid "undefined" warnings.
824 #The actual selection and help texts are in the following menu.
826 menu "System tables"
828 config GENERATE_MP_TABLE
829         prompt "Generate an MP table" if HAVE_MP_TABLE
830         bool
831         default HAVE_MP_TABLE
832         help
833           Generate an MP table (conforming to the Intel MultiProcessor
834           specification 1.4) for this board.
836           If unsure, say Y.
838 config GENERATE_PIRQ_TABLE
839         prompt "Generate a PIRQ table" if HAVE_PIRQ_TABLE
840         bool
841         default HAVE_PIRQ_TABLE
842         help
843           Generate a PIRQ table for this board.
845           If unsure, say Y.
847 config GENERATE_SMBIOS_TABLES
848         depends on ARCH_X86
849         bool "Generate SMBIOS tables"
850         default y
851         help
852           Generate SMBIOS tables for this board.
854           If unsure, say Y.
856 config SMBIOS_TYPE41_PROVIDED_BY_DEVTREE
857         bool
858         depends on ARCH_X86
859         help
860           If enabled, only generate SMBIOS Type 41 entries for PCI devices in
861           the devicetree for which Type 41 information is provided, e.g. with
862           the `smbios_dev_info` devicetree syntax. This is useful to manually
863           assign specific instance IDs to onboard devices irrespective of the
864           device traversal order. It is assumed that instance IDs for devices
865           of the same class are unique.
866           When disabled, coreboot autogenerates SMBIOS Type 41 entries for all
867           appropriate PCI devices in the devicetree. Instance IDs are assigned
868           successive numbers from a monotonically increasing counter, with one
869           counter for each device class.
871 config SMBIOS_PROVIDED_BY_MOBO
872         bool
873         default n
875 config MAINBOARD_SERIAL_NUMBER
876         prompt "SMBIOS Serial Number" if !SMBIOS_PROVIDED_BY_MOBO
877         string
878         depends on GENERATE_SMBIOS_TABLES
879         default "123456789"
880         help
881           The Serial Number to store in SMBIOS structures.
883 config MAINBOARD_VERSION
884         prompt "SMBIOS Version Number" if !SMBIOS_PROVIDED_BY_MOBO
885         string
886         depends on GENERATE_SMBIOS_TABLES
887         default "1.0"
888         help
889           The Version Number to store in SMBIOS structures.
891 config MAINBOARD_SMBIOS_MANUFACTURER
892         prompt "SMBIOS Manufacturer" if !SMBIOS_PROVIDED_BY_MOBO
893         string
894         depends on GENERATE_SMBIOS_TABLES
895         default MAINBOARD_VENDOR
896         help
897           Override the default Manufacturer stored in SMBIOS structures.
899 config MAINBOARD_SMBIOS_PRODUCT_NAME
900         prompt "SMBIOS Product name" if !SMBIOS_PROVIDED_BY_MOBO
901         string
902         depends on GENERATE_SMBIOS_TABLES
903         default MAINBOARD_PART_NUMBER
904         help
905           Override the default Product name stored in SMBIOS structures.
907 config VPD_SMBIOS_VERSION
908         bool "Populates SMBIOS type 0 version from the VPD_RO variable 'firmware_version'"
909         default n
910         depends on VPD && GENERATE_SMBIOS_TABLES
911         help
912           Selecting this option will read firmware_version from
913           VPD_RO and override SMBIOS type 0 version. One special
914           scenario of using this feature is to assign a BIOS version
915           to a coreboot image without the need to rebuild from source.
917 endmenu
919 source "payloads/Kconfig"
921 menu "Debugging"
923 comment "CPU Debug Settings"
924 source "src/cpu/*/Kconfig.debug_cpu"
926 comment "BLOB Debug Settings"
927 source "src/drivers/intel/fsp*/Kconfig.debug_blob"
929 comment "General Debug Settings"
931 # TODO: Better help text and detailed instructions.
932 config GDB_STUB
933         bool "GDB debugging support"
934         default n
935         depends on DRIVERS_UART
936         help
937           If enabled, you will be able to set breakpoints for gdb debugging.
938           See src/arch/x86/c_start.S for details.
940 config GDB_WAIT
941         bool "Wait for a GDB connection in the ramstage"
942         default n
943         depends on GDB_STUB
944         help
945           If enabled, coreboot will wait for a GDB connection in the ramstage.
948 config FATAL_ASSERTS
949         bool "Halt when hitting a BUG() or assertion error"
950         default n
951         help
952           If enabled, coreboot will call hlt() on a BUG() or failed ASSERT().
954 config HAVE_DEBUG_GPIO
955         bool
957 config DEBUG_GPIO
958         bool "Output verbose GPIO debug messages"
959         depends on HAVE_DEBUG_GPIO
961 config DEBUG_CBFS
962         bool "Output verbose CBFS debug messages"
963         default n
964         help
965           This option enables additional CBFS related debug messages.
967 config HAVE_DEBUG_RAM_SETUP
968         def_bool n
970 config DEBUG_RAM_SETUP
971         bool "Output verbose RAM init debug messages"
972         default n
973         depends on HAVE_DEBUG_RAM_SETUP
974         help
975           This option enables additional RAM init related debug messages.
976           It is recommended to enable this when debugging issues on your
977           board which might be RAM init related.
979           Note: This option will increase the size of the coreboot image.
981           If unsure, say N.
983 config DEBUG_PIRQ
984         bool "Check PIRQ table consistency"
985         default n
986         depends on GENERATE_PIRQ_TABLE
987         help
988           If unsure, say N.
990 config HAVE_DEBUG_SMBUS
991         def_bool n
993 config DEBUG_SMBUS
994         bool "Output verbose SMBus debug messages"
995         default n
996         depends on HAVE_DEBUG_SMBUS
997         help
998           This option enables additional SMBus (and SPD) debug messages.
1000           Note: This option will increase the size of the coreboot image.
1002           If unsure, say N.
1004 config DEBUG_SMI
1005         bool "Output verbose SMI debug messages"
1006         default n
1007         depends on HAVE_SMI_HANDLER
1008         select SPI_FLASH_SMM if EM100PRO_SPI_CONSOLE || CONSOLE_SPI_FLASH
1009         help
1010           This option enables additional SMI related debug messages.
1012           Note: This option will increase the size of the coreboot image.
1014           If unsure, say N.
1016 config DEBUG_PERIODIC_SMI
1017         bool "Trigger SMI periodically"
1018         depends on DEBUG_SMI
1020 # Only visible if debug level is DEBUG (7) or SPEW (8) as it does additional
1021 # printk(BIOS_DEBUG, ...) calls.
1022 config DEBUG_MALLOC
1023         prompt "Output verbose malloc debug messages" if DEFAULT_CONSOLE_LOGLEVEL_7 || DEFAULT_CONSOLE_LOGLEVEL_8 || CONSOLE_OVERRIDE_LOGLEVEL
1024         bool
1025         default n
1026         help
1027           This option enables additional malloc related debug messages.
1029           Note: This option will increase the size of the coreboot image.
1031           If unsure, say N.
1033 # Only visible if DEBUG_SPEW (8) is set.
1034 config DEBUG_RESOURCES
1035         bool "Output verbose PCI MEM and IO resource debug messages" if DEFAULT_CONSOLE_LOGLEVEL_8 || CONSOLE_OVERRIDE_LOGLEVEL
1036         default n
1037         help
1038           This option enables additional PCI memory and IO debug messages.
1039           Note: This option will increase the size of the coreboot image.
1040           If unsure, say N.
1042 config DEBUG_CONSOLE_INIT
1043         bool "Debug console initialisation code"
1044         default n
1045         help
1046           With this option printk()'s are attempted before console hardware
1047           initialisation has been completed. Your mileage may vary.
1049           Typically you will need to modify source in console_hw_init() such
1050           that a working console appears before the one you want to debug.
1052           If unsure, say N.
1054 # Only visible if debug level is DEBUG (7) or SPEW (8) as it does additional
1055 # printk(BIOS_DEBUG, ...) calls.
1056 config REALMODE_DEBUG
1057         prompt "Enable debug messages for option ROM execution" if DEFAULT_CONSOLE_LOGLEVEL_7 || DEFAULT_CONSOLE_LOGLEVEL_8 || CONSOLE_OVERRIDE_LOGLEVEL
1058         bool
1059         default n
1060         depends on PCI_OPTION_ROM_RUN_REALMODE
1061         help
1062           This option enables additional x86emu related debug messages.
1064           Note: This option will increase the time to emulate a ROM.
1066           If unsure, say N.
1068 config X86EMU_DEBUG
1069         bool "Output verbose x86emu debug messages"
1070         default n
1071         depends on PCI_OPTION_ROM_RUN_YABEL
1072         help
1073           This option enables additional x86emu related debug messages.
1075           Note: This option will increase the size of the coreboot image.
1077           If unsure, say N.
1079 config X86EMU_DEBUG_JMP
1080         bool "Trace JMP/RETF"
1081         default n
1082         depends on X86EMU_DEBUG
1083         help
1084           Print information about JMP and RETF opcodes from x86emu.
1086           Note: This option will increase the size of the coreboot image.
1088           If unsure, say N.
1090 config X86EMU_DEBUG_TRACE
1091         bool "Trace all opcodes"
1092         default n
1093         depends on X86EMU_DEBUG
1094         help
1095           Print _all_ opcodes that are executed by x86emu.
1097           WARNING: This will produce a LOT of output and take a long time.
1099           Note: This option will increase the size of the coreboot image.
1101           If unsure, say N.
1103 config X86EMU_DEBUG_PNP
1104         bool "Log Plug&Play accesses"
1105         default n
1106         depends on X86EMU_DEBUG
1107         help
1108           Print Plug And Play accesses made by option ROMs.
1110           Note: This option will increase the size of the coreboot image.
1112           If unsure, say N.
1114 config X86EMU_DEBUG_DISK
1115         bool "Log Disk I/O"
1116         default n
1117         depends on X86EMU_DEBUG
1118         help
1119           Print Disk I/O related messages.
1121           Note: This option will increase the size of the coreboot image.
1123           If unsure, say N.
1125 config X86EMU_DEBUG_PMM
1126         bool "Log PMM"
1127         default n
1128         depends on X86EMU_DEBUG
1129         help
1130           Print messages related to POST Memory Manager (PMM).
1132           Note: This option will increase the size of the coreboot image.
1134           If unsure, say N.
1137 config X86EMU_DEBUG_VBE
1138         bool "Debug VESA BIOS Extensions"
1139         default n
1140         depends on X86EMU_DEBUG
1141         help
1142           Print messages related to VESA BIOS Extension (VBE) functions.
1144           Note: This option will increase the size of the coreboot image.
1146           If unsure, say N.
1148 config X86EMU_DEBUG_INT10
1149         bool "Redirect INT10 output to console"
1150         default n
1151         depends on X86EMU_DEBUG
1152         help
1153           Let INT10 (i.e. character output) calls print messages to debug output.
1155           Note: This option will increase the size of the coreboot image.
1157           If unsure, say N.
1159 config X86EMU_DEBUG_INTERRUPTS
1160         bool "Log intXX calls"
1161         default n
1162         depends on X86EMU_DEBUG
1163         help
1164           Print messages related to interrupt handling.
1166           Note: This option will increase the size of the coreboot image.
1168           If unsure, say N.
1170 config X86EMU_DEBUG_CHECK_VMEM_ACCESS
1171         bool "Log special memory accesses"
1172         default n
1173         depends on X86EMU_DEBUG
1174         help
1175           Print messages related to accesses to certain areas of the virtual
1176           memory (e.g. BDA (BIOS Data Area) or interrupt vectors)
1178           Note: This option will increase the size of the coreboot image.
1180           If unsure, say N.
1182 config X86EMU_DEBUG_MEM
1183         bool "Log all memory accesses"
1184         default n
1185         depends on X86EMU_DEBUG
1186         help
1187           Print memory accesses made by option ROM.
1188           Note: This also includes accesses to fetch instructions.
1190           Note: This option will increase the size of the coreboot image.
1192           If unsure, say N.
1194 config X86EMU_DEBUG_IO
1195         bool "Log IO accesses"
1196         default n
1197         depends on X86EMU_DEBUG
1198         help
1199           Print I/O accesses made by option ROM.
1201           Note: This option will increase the size of the coreboot image.
1203           If unsure, say N.
1205 config X86EMU_DEBUG_TIMINGS
1206         bool "Output timing information"
1207         default n
1208         depends on X86EMU_DEBUG && HAVE_MONOTONIC_TIMER
1209         help
1210           Print timing information needed by i915tool.
1212           If unsure, say N.
1214 config DEBUG_SPI_FLASH
1215         bool "Output verbose SPI flash debug messages"
1216         default n
1217         depends on SPI_FLASH
1218         help
1219           This option enables additional SPI flash related debug messages.
1221 config DEBUG_IPMI
1222         bool "Output verbose IPMI debug messages"
1223         default n
1224         depends on IPMI_KCS
1225         help
1226           This option enables additional IPMI related debug messages.
1228 if SOUTHBRIDGE_INTEL_BD82X6X && DEFAULT_CONSOLE_LOGLEVEL_8
1229 # Only visible with the right southbridge and loglevel.
1230 config DEBUG_INTEL_ME
1231         bool "Verbose logging for Intel Management Engine"
1232         default n
1233         help
1234           Enable verbose logging for Intel Management Engine driver that
1235           is present on Intel 6-series chipsets.
1236 endif
1238 config DEBUG_FUNC
1239         bool "Enable function entry and exit reporting macros" if DEFAULT_CONSOLE_LOGLEVEL_8 || CONSOLE_OVERRIDE_LOGLEVEL
1240         default n
1241         help
1242           This option enables additional function entry and exit debug messages
1243           for select functions.
1244           Note: This option will increase the size of the coreboot image.
1245           If unsure, say N.
1247 config DEBUG_COVERAGE
1248         bool "Debug code coverage"
1249         default n
1250         depends on COVERAGE
1251         help
1252           If enabled, the code coverage hooks in coreboot will output some
1253           information about the coverage data that is dumped.
1255 config DEBUG_BOOT_STATE
1256         bool "Debug boot state machine"
1257         default n
1258         help
1259           Control debugging of the boot state machine.  When selected displays
1260           the state boundaries in ramstage.
1262 config DEBUG_ADA_CODE
1263         bool "Compile debug code in Ada sources"
1264         default n
1265         help
1266           Add the compiler switch `-gnata` to compile code guarded by
1267           `pragma Debug`.
1269 config HAVE_EM100_SUPPORT
1270         bool
1271         help
1272           This is enabled by platforms which can support using the EM100.
1274 config EM100
1275         bool "Configure image for EM100 usage"
1276         depends on HAVE_EM100_SUPPORT
1277         help
1278           The Dediprog EM100 SPI emulator allows fast loading of new SPI images
1279           over USB. However it only supports a maximum SPI clock of 20MHz and
1280           single data output. Enable this option to use a 20MHz SPI clock and
1281           disable "Dual Output Fast Read" Support.
1283           On AMD platforms this changes the SPI speed at run-time if the
1284           mainboard code supports this. On supported Intel platforms this works
1285           by changing the settings in the descriptor.bin file.
1287 endmenu
1289 ###############################################################################
1290 # Set variables with no prompt - these can be set anywhere, and putting at
1291 # the end of this file gives the most flexibility.
1293 source "src/lib/Kconfig"
1295 config WARNINGS_ARE_ERRORS
1296         bool
1297         default y
1299 # The four POWER_BUTTON_DEFAULT_ENABLE, POWER_BUTTON_DEFAULT_DISABLE,
1300 # POWER_BUTTON_FORCE_ENABLE and POWER_BUTTON_FORCE_DISABLE options are
1301 # mutually exclusive. One of these options must be selected in the
1302 # mainboard Kconfig if the chipset supports enabling and disabling of
1303 # the power button. Chipset code uses the ENABLE_POWER_BUTTON option set
1304 # in mainboard/Kconfig to know if the button should be enabled or not.
1306 config POWER_BUTTON_DEFAULT_ENABLE
1307         def_bool n
1308         help
1309           Select when the board has a power button which can optionally be
1310           disabled by the user.
1312 config POWER_BUTTON_DEFAULT_DISABLE
1313         def_bool n
1314         help
1315           Select when the board has a power button which can optionally be
1316           enabled by the user, e.g. when the board ships with a jumper over
1317           the power switch contacts.
1319 config POWER_BUTTON_FORCE_ENABLE
1320         def_bool n
1321         help
1322           Select when the board requires that the power button is always
1323           enabled.
1325 config POWER_BUTTON_FORCE_DISABLE
1326         def_bool n
1327         help
1328           Select when the board requires that the power button is always
1329           disabled, e.g. when it has been hardwired to ground.
1331 config POWER_BUTTON_IS_OPTIONAL
1332         bool
1333         default y if POWER_BUTTON_DEFAULT_ENABLE || POWER_BUTTON_DEFAULT_DISABLE
1334         default n if !(POWER_BUTTON_DEFAULT_ENABLE || POWER_BUTTON_DEFAULT_DISABLE)
1335         help
1336           Internal option that controls ENABLE_POWER_BUTTON visibility.
1338 config REG_SCRIPT
1339         bool
1340         default n
1341         help
1342           Internal option that controls whether we compile in register scripts.
1344 config MAX_REBOOT_CNT
1345         int
1346         default 3
1347         help
1348           Internal option that sets the maximum number of bootblock executions allowed
1349           with the normal image enabled before assuming the normal image is defective
1350           and switching to the fallback image.
1352 config UNCOMPRESSED_RAMSTAGE
1353         bool
1355 config NO_XIP_EARLY_STAGES
1356         bool
1357         default n if ARCH_X86
1358         default y
1359         help
1360           Identify if early stages are eXecute-In-Place(XIP).
1362 config EARLY_CBMEM_LIST
1363         bool
1364         default n
1365         help
1366           Enable display of CBMEM during romstage and postcar.
1368 config RELOCATABLE_MODULES
1369         bool
1370         help
1371           If RELOCATABLE_MODULES is selected then support is enabled for
1372           building relocatable modules in the RAM stage. Those modules can be
1373           loaded anywhere and all the relocations are handled automatically.
1375 config GENERIC_GPIO_LIB
1376         bool
1377         help
1378           If enabled, compile the generic GPIO library. A "generic" GPIO
1379           implies configurability usually found on SoCs, particularly the
1380           ability to control internal pull resistors.
1382 config BOOTBLOCK_CUSTOM
1383         # To be selected by arch, SoC or mainboard if it does not want use the normal
1384         # src/lib/bootblock.c#main() C entry point.
1385         bool
1387 config BOOTBLOCK_IN_CBFS
1388         bool
1389         default y if ARCH_X86
1390         help
1391           Select this on platforms that have a top aligned bootblock inside cbfs.
1393 config MEMLAYOUT_LD_FILE
1394         string
1395         default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/memlayout.ld"
1396         help
1397           This variable allows SoC/mainboard to supply in a custom linker file
1398           if required. This determines the linker file used for all the stages
1399           (bootblock, romstage, verstage, ramstage, postcar) in
1400           src/arch/${ARCH}/Makefile.inc.
1402 ###############################################################################
1403 # Set default values for symbols created before mainboards.  This allows the
1404 # option to be displayed in the general menu, but the default to be loaded in
1405 # the mainboard if desired.
1406 config COMPRESS_PRERAM_STAGES
1407         depends on (HAVE_ROMSTAGE || HAVE_VERSTAGE) && NO_XIP_EARLY_STAGES
1408         default y
1410 config INCLUDE_CONFIG_FILE
1411         default y
1413 config BOOTSPLASH_FILE
1414         depends on BOOTSPLASH_IMAGE
1415         default "bootsplash.jpg"
1417 config CBFS_SIZE
1418         default ROM_SIZE
1420 config HAVE_BOOTBLOCK
1421         bool
1422         default y
1424 config HAVE_VERSTAGE
1425         bool
1426         depends on VBOOT_SEPARATE_VERSTAGE
1427         default y
1429 config HAVE_ROMSTAGE
1430         bool
1431         default y
1433 config HAVE_RAMSTAGE
1434         bool
1435         default n if RAMPAYLOAD
1436         default y