##
## This file is part of the coreinfo project.
##
## Copyright (C) 2008 Uwe Hermann <uwe@hermann-uwe.de>
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; version 2 of the License.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
##

#
# For a description of the syntax of this configuration file,
# see http://lxr.linux.no/source/Documentation/kbuild/kconfig-language.txt.
#

mainmenu "coreinfo Configuration"

menu "General settings"

# TODO: Needs changes in coreinfo, won't update without keypress currently.
config SHOW_DATE_TIME
	bool "Show current date/time in the menu"
	default y
	help
	  Show the current date and time in the lower-right corner of
	  the coreinfo menu.

	  This option will increase the ELF file size by ca. 256 bytes.

endmenu

menu "Modules"

config MODULE_COREBOOT
	bool "Enable the coreboot module"
	default y
	help
	  This option will increase the ELF file size by ca. 2250 bytes.

config MODULE_CPUINFO
	bool "Enable the cpuinfo module"
	default y
	help
	  This option will increase the ELF file size by ca. 2650 bytes.

config MODULE_PCI
	bool "Enable the PCI info module"
	default y
	help
	  This option will increase the ELF file size by ca. 1750 bytes.

config MODULE_NVRAM
	bool "Enable the NVRAM dump module"
	default y
	help
	  This option will increase the ELF file size by ca. 350 bytes.

config MODULE_BOOTLOG
	bool "Enable the coreboot bootlog module"
	default y

endmenu

