#
# This file is part of the coreboot project.
#
# Copyright (C) 2010-2011 Advanced Micro Devices, Inc.
#
# 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.
#

if BOARD_AMD_INAGUA

config BOARD_SPECIFIC_OPTIONS # dummy
	def_bool y
	select CPU_AMD_AGESA_FAMILY14
	select NORTHBRIDGE_AMD_AGESA_FAMILY14
	select SOUTHBRIDGE_AMD_CIMX_SB800
	select SUPERIO_SMSC_KBC1100
	select HAVE_OPTION_TABLE
	select HAVE_PIRQ_TABLE
	select HAVE_MP_TABLE
	select HAVE_ACPI_TABLES
	select BOARD_ROMSIZE_KB_2048
	select ENABLE_APIC_EXT_ID
	select GFXUMA

config MAINBOARD_DIR
	string
	default amd/inagua

config MAINBOARD_PART_NUMBER
	string
	default "Inagua"

config HW_MEM_HOLE_SIZEK
	hex
	default 0x200000

config MAX_CPUS
	int
	default 2

config HW_MEM_HOLE_SIZE_AUTO_INC
	bool
	default n

config IRQ_SLOT_COUNT
	int
	default 11

config ONBOARD_VGA_IS_PRIMARY
	bool
	default y

config VGA_BIOS
	bool
	default n

#config VGA_BIOS_FILE
#        string "VGA BIOS path and filename"
#        depends on VGA_BIOS
#        default "rom/video/OntarioGenericVBios.bin"

config VGA_BIOS_ID
	string "VGA device PCI IDs"
	depends on VGA_BIOS
	default "1002,9802"

config SB800_AHCI_ROM
	bool
	default n

endif # BOARD_AMD_INAGUA
