comment "Important: Run 'make distclean' before switching boards"

choice
	prompt "Mainboard vendor"
	default VENDOR_EMULATION

source "src/mainboard/*/Kconfig.name"

endchoice

source "src/mainboard/*/Kconfig"

comment "WARNING: This mainboard uses LATE_CBMEM_INIT, which is deprecated"
	depends on LATE_CBMEM_INIT

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_10240
	bool
config BOARD_ROMSIZE_KB_12288
	bool
config BOARD_ROMSIZE_KB_16384
	bool
config BOARD_ROMSIZE_KB_32768
	bool
config BOARD_ROMSIZE_KB_65536
	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_10240 if BOARD_ROMSIZE_KB_10240
	default COREBOOT_ROMSIZE_KB_12288 if BOARD_ROMSIZE_KB_12288
	default COREBOOT_ROMSIZE_KB_16384 if BOARD_ROMSIZE_KB_16384
	default COREBOOT_ROMSIZE_KB_32768 if BOARD_ROMSIZE_KB_32768
	default COREBOOT_ROMSIZE_KB_65536 if BOARD_ROMSIZE_KB_65536
	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_10240
	bool "10240 KB (10 MB)"
	help
	  Choose this option if you have a 10240 KB (10 MB) ROM chip.

config COREBOOT_ROMSIZE_KB_12288
	bool "12288 KB (12 MB)"
	help
	  Choose this option if you have a 12288 KB (12 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.

config COREBOOT_ROMSIZE_KB_32768
	bool "32768 KB (32 MB)"
	help
	  Choose this option if you have a 32768 KB (32 MB) ROM chip.

config COREBOOT_ROMSIZE_KB_65536
	bool "65536 KB (64 MB)"
	help
	  Choose this option if you have a 65536 KB (64 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 10240 if COREBOOT_ROMSIZE_KB_10240
	default 12288 if COREBOOT_ROMSIZE_KB_12288
	default 16384 if COREBOOT_ROMSIZE_KB_16384
	default 32768 if COREBOOT_ROMSIZE_KB_32768
	default 65536 if COREBOOT_ROMSIZE_KB_65536

# 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 0xa00000 if COREBOOT_ROMSIZE_KB_10240
	default 0xc00000 if COREBOOT_ROMSIZE_KB_12288
	default 0x1000000 if COREBOOT_ROMSIZE_KB_16384
	default 0x2000000 if COREBOOT_ROMSIZE_KB_32768
	default 0x4000000 if COREBOOT_ROMSIZE_KB_65536

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