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_GIZMOSPHERE
	bool "GizmoSphere"
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/gizmosphere/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.

config MAINBOARD_ENCLOSURE_TYPE
	hex "System Enclosure or Chassis type"
	depends on GENERATE_SMBIOS_TABLES
	default 0x3
endmenu
