menu "Mainboard"

choice
	prompt "Mainboard vendor"
	default VENDOR_EMULATION

config VENDOR_AAEON
	bool "Aaeon"
config VENDOR_ABIT
	bool "Abit"
config VENDOR_ADVANSUS
        bool "Advansus"
config VENDOR_ADVANTECH
	bool "Advantech"
config VENDOR_AMD
	bool "AMD"
config VENDOR_AOPEN
	bool "AOpen"
config VENDOR_ARIMA
	bool "Arima"
config VENDOR_ARTECGROUP
	bool "Artec Group"
config VENDOR_ASI
	bool "ASI"
config VENDOR_ASROCK
	bool "ASROCK"
config VENDOR_ASUS
	bool "ASUS"
config VENDOR_A_TREND
	bool "A-Trend"
config VENDOR_AVALUE
	bool "AVALUE"
config VENDOR_AXUS
	bool "AXUS"
config VENDOR_AZZA
	bool "AZZA"
config VENDOR_BACHMANN
	bool "Bachmann electronic"
config VENDOR_BCOM
	bool "BCOM"
config VENDOR_BIFFEROS
	bool "Bifferos"
config VENDOR_BIOSTAR
	bool "Biostar"
config VENDOR_BROADCOM
	bool "Broadcom"
config VENDOR_COMPAQ
	bool "Compaq"
config VENDOR_DIGITALLOGIC
	bool "DIGITAL-LOGIC"
config VENDOR_EAGLELION
	bool "EagleLion"
config VENDOR_ECS
	bool "ECS"
config VENDOR_EMULATION
	bool "Emulation"
config VENDOR_GETAC
	bool "Getac"
config VENDOR_GIGABYTE
	bool "GIGABYTE"
config VENDOR_GOOGLE
	bool "Google"
config VENDOR_HP
	bool "HP"
config VENDOR_IBASE
	bool "iBase"
config VENDOR_IBM
	bool "IBM"
config VENDOR_IEI
	bool "IEI"
config VENDOR_INTEL
	bool "Intel"
config VENDOR_IWAVE
	bool "iWave"
config VENDOR_IWILL
	bool "IWILL"
config VENDOR_JETWAY
	bool "Jetway"
config VENDOR_KONTRON
	bool "Kontron"
config VENDOR_LANNER
	bool "Lanner"
config VENDOR_LENOVO
	bool "Lenovo"
config VENDOR_LIPPERT
	bool "Lippert"
config VENDOR_MITAC
	bool "Mitac"
config VENDOR_MSI
	bool "MSI"
config VENDOR_NEC
	bool "NEC"
config VENDOR_NEWISYS
	bool "Newisys"
config VENDOR_NOKIA
	bool "Nokia"
config VENDOR_NVIDIA
	bool "NVIDIA"
config VENDOR_PCENGINES
	bool "PC Engines"
config VENDOR_RCA
	bool "RCA"
config VENDOR_RODA
	bool "Roda"
config VENDOR_SAMSUNG
	bool "SAMSUNG"
config VENDOR_SIEMENS
	bool "Siemens"
config VENDOR_SOYO
	bool "Soyo"
config VENDOR_SUNW
	bool "Sun"
config VENDOR_SUPERMICRO
	bool "Supermicro"
config VENDOR_TECHNEXION
	bool "Technexion"
config VENDOR_TECHNOLOGIC
	bool "Technologic"
config VENDOR_TELEVIDEO
	bool "TeleVideo"
config VENDOR_THOMSON
	bool "Thomson"
config VENDOR_TRAVERSE
	bool "Traverse Technologies"
config VENDOR_TYAN
	bool "Tyan"
config VENDOR_VIA
	bool "VIA"
config VENDOR_WINENT
	bool "Win Enterprises"
config VENDOR_WYSE
	bool "Wyse"

endchoice

source "src/mainboard/a-trend/Kconfig"
source "src/mainboard/aaeon/Kconfig"
source "src/mainboard/abit/Kconfig"
source "src/mainboard/advansus/Kconfig"
source "src/mainboard/advantech/Kconfig"
source "src/mainboard/amd/Kconfig"
source "src/mainboard/aopen/Kconfig"
source "src/mainboard/arima/Kconfig"
source "src/mainboard/artecgroup/Kconfig"
source "src/mainboard/asi/Kconfig"
source "src/mainboard/asrock/Kconfig"
source "src/mainboard/asus/Kconfig"
source "src/mainboard/avalue/Kconfig"
source "src/mainboard/axus/Kconfig"
source "src/mainboard/azza/Kconfig"
source "src/mainboard/bachmann/Kconfig"
source "src/mainboard/bcom/Kconfig"
source "src/mainboard/bifferos/Kconfig"
source "src/mainboard/biostar/Kconfig"
source "src/mainboard/broadcom/Kconfig"
source "src/mainboard/compaq/Kconfig"
source "src/mainboard/digitallogic/Kconfig"
source "src/mainboard/eaglelion/Kconfig"
source "src/mainboard/ecs/Kconfig"
source "src/mainboard/emulation/Kconfig"
source "src/mainboard/getac/Kconfig"
source "src/mainboard/gigabyte/Kconfig"
source "src/mainboard/google/Kconfig"
source "src/mainboard/hp/Kconfig"
source "src/mainboard/ibase/Kconfig"
source "src/mainboard/ibm/Kconfig"
source "src/mainboard/iei/Kconfig"
source "src/mainboard/intel/Kconfig"
source "src/mainboard/iwave/Kconfig"
source "src/mainboard/iwill/Kconfig"
source "src/mainboard/jetway/Kconfig"
source "src/mainboard/kontron/Kconfig"
source "src/mainboard/lanner/Kconfig"
source "src/mainboard/lenovo/Kconfig"
source "src/mainboard/lippert/Kconfig"
source "src/mainboard/mitac/Kconfig"
source "src/mainboard/msi/Kconfig"
source "src/mainboard/nec/Kconfig"
source "src/mainboard/newisys/Kconfig"
source "src/mainboard/nokia/Kconfig"
source "src/mainboard/nvidia/Kconfig"
source "src/mainboard/pcengines/Kconfig"
source "src/mainboard/rca/Kconfig"
source "src/mainboard/roda/Kconfig"
source "src/mainboard/samsung/Kconfig"
source "src/mainboard/siemens/Kconfig"
source "src/mainboard/soyo/Kconfig"
source "src/mainboard/sunw/Kconfig"
source "src/mainboard/supermicro/Kconfig"
source "src/mainboard/technexion/Kconfig"
source "src/mainboard/technologic/Kconfig"
source "src/mainboard/televideo/Kconfig"
source "src/mainboard/thomson/Kconfig"
source "src/mainboard/traverse/Kconfig"
source "src/mainboard/tyan/Kconfig"
source "src/mainboard/via/Kconfig"
source "src/mainboard/winent/Kconfig"
source "src/mainboard/wyse/Kconfig"

config BOARD_ROMSIZE_KB_64
	bool
config BOARD_ROMSIZE_KB_128
	bool
config BOARD_ROMSIZE_KB_256
	bool
config BOARD_ROMSIZE_KB_512
	bool
config BOARD_ROMSIZE_KB_1024
	bool
config BOARD_ROMSIZE_KB_2048
	bool
config BOARD_ROMSIZE_KB_4096
	bool
config BOARD_ROMSIZE_KB_8192
	bool
config BOARD_ROMSIZE_KB_16384
	bool

# TODO: No help text possible for choice fields?
choice
	prompt "ROM chip size"
	default COREBOOT_ROMSIZE_KB_64 if BOARD_ROMSIZE_KB_64
	default COREBOOT_ROMSIZE_KB_128 if BOARD_ROMSIZE_KB_128
	default COREBOOT_ROMSIZE_KB_256 if BOARD_ROMSIZE_KB_256
	default COREBOOT_ROMSIZE_KB_512 if BOARD_ROMSIZE_KB_512
	default COREBOOT_ROMSIZE_KB_1024 if BOARD_ROMSIZE_KB_1024
	default COREBOOT_ROMSIZE_KB_2048 if BOARD_ROMSIZE_KB_2048
	default COREBOOT_ROMSIZE_KB_4096 if BOARD_ROMSIZE_KB_4096
	default COREBOOT_ROMSIZE_KB_8192 if BOARD_ROMSIZE_KB_8192
	default COREBOOT_ROMSIZE_KB_16384 if BOARD_ROMSIZE_KB_16384
	help
	  Select the size of the ROM chip you intend to flash coreboot on.

	  The build system will take care of creating a coreboot.rom file
	  of the matching size.

config COREBOOT_ROMSIZE_KB_64
	bool "64 KB"
	help
	  Choose this option if you have a 64 KB ROM chip.

config COREBOOT_ROMSIZE_KB_128
	bool "128 KB"
	help
	  Choose this option if you have a 128 KB ROM chip.

config COREBOOT_ROMSIZE_KB_256
	bool "256 KB"
	help
	  Choose this option if you have a 256 KB ROM chip.

config COREBOOT_ROMSIZE_KB_512
	bool "512 KB"
	help
	  Choose this option if you have a 512 KB ROM chip.

config COREBOOT_ROMSIZE_KB_1024
	bool "1024 KB (1 MB)"
	help
	  Choose this option if you have a 1024 KB (1 MB) ROM chip.

config COREBOOT_ROMSIZE_KB_2048
	bool "2048 KB (2 MB)"
	help
	  Choose this option if you have a 2048 KB (2 MB) ROM chip.

config COREBOOT_ROMSIZE_KB_4096
	bool "4096 KB (4 MB)"
	help
	  Choose this option if you have a 4096 KB (4 MB) ROM chip.

config COREBOOT_ROMSIZE_KB_8192
	bool "8192 KB (8 MB)"
	help
	  Choose this option if you have a 8192 KB (8 MB) ROM chip.

config COREBOOT_ROMSIZE_KB_16384
	bool "16384 KB (16 MB)"
	help
	  Choose this option if you have a 16384 KB (16 MB) ROM chip.

endchoice

# Map the config names to an integer (KB).
config COREBOOT_ROMSIZE_KB
	int
	default 64 if COREBOOT_ROMSIZE_KB_64
	default 128 if COREBOOT_ROMSIZE_KB_128
	default 256 if COREBOOT_ROMSIZE_KB_256
	default 512 if COREBOOT_ROMSIZE_KB_512
	default 1024 if COREBOOT_ROMSIZE_KB_1024
	default 2048 if COREBOOT_ROMSIZE_KB_2048
	default 4096 if COREBOOT_ROMSIZE_KB_4096
	default 8192 if COREBOOT_ROMSIZE_KB_8192
	default 16384 if COREBOOT_ROMSIZE_KB_16384

# Map the config names to a hex value (bytes).
config ROM_SIZE
	hex
	default 0x10000 if COREBOOT_ROMSIZE_KB_64
	default 0x20000 if COREBOOT_ROMSIZE_KB_128
	default 0x40000 if COREBOOT_ROMSIZE_KB_256
	default 0x80000 if COREBOOT_ROMSIZE_KB_512
	default 0x100000 if COREBOOT_ROMSIZE_KB_1024
	default 0x200000 if COREBOOT_ROMSIZE_KB_2048
	default 0x400000 if COREBOOT_ROMSIZE_KB_4096
	default 0x800000 if COREBOOT_ROMSIZE_KB_8192
	default 0x1000000 if COREBOOT_ROMSIZE_KB_16384

config ENABLE_POWER_BUTTON
	bool "Enable the power button" if POWER_BUTTON_IS_OPTIONAL
	default y if POWER_BUTTON_DEFAULT_ENABLE
	default n if POWER_BUTTON_DEFAULT_DISABLE
	help
	  The selected mainboard can optionally have the power button tied
	  to ground with a jumper so that the button appears to be
	  constantly depressed. If this option is enabled and the jumper is
	  installed then the board will turn on, but turn off again after a
	  short timeout, usually 4 seconds.

	  Select Y here if you have removed the jumper and want to use an
	  actual power button. Select N if you have the jumper installed.

config ENABLE_POWER_BUTTON
	def_bool y if !POWER_BUTTON_IS_OPTIONAL && POWER_BUTTON_FORCE_ENABLE
	def_bool n if !POWER_BUTTON_IS_OPTIONAL && POWER_BUTTON_FORCE_DISABLE

config MAINBOARD_SERIAL_NUMBER
	string "Serial number"
	depends on GENERATE_SMBIOS_TABLES
	default "123456789"
        help
	  Define the used serial number which will be used by SMBIOS tables.

config MAINBOARD_VERSION
	string "Version number"
	depends on GENERATE_SMBIOS_TABLES
	default "1.0"
	help
	  Define the used version number which will be used by SMBIOS tables.
endmenu
