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_BCOM
	bool "BCOM"
config VENDOR_BIFFEROS
	bool "Bifferos"
config VENDOR_BIOSTAR
	bool "Biostar"
config VENDOR_BROADCOM
	bool "Broadcom"
config VENDOR_COMPAL
	bool "Compal"
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/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 CACHE_ROM_SIZE
	hex
	default ROM_SIZE

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

endmenu
