#
# This file is part of the coreboot project.
#
# Copyright (C) 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_LIPPERT_TOUCAN_AF

config BOARD_SPECIFIC_OPTIONS # dummy
	def_bool y
	select CPU_AMD_AGESA_FAMILY14
	select NORTHBRIDGE_AMD_AGESA_FAMILY14
	select SOUTHBRIDGE_AMD_CIMX_SB800
	# The Toucan-AF is meant to work on any COM Express Type 6 baseboard.
	# The ADLINK ExpressBase-6 baseboard happens to use this SIO:
	select SUPERIO_WINBOND_W83627DHG
	select HAVE_OPTION_TABLE
	select HAVE_PIRQ_TABLE
	select HAVE_MP_TABLE
	# This erases 28 KB and writes 10 KB register dumps to SPI flash on every
	# boot, wasting 3 s and causing wear!  Therefore disable S3 for now.
	#select HAVE_ACPI_RESUME
	select HAVE_ACPI_TABLES
	select BOARD_ROMSIZE_KB_4096
	select GFXUMA

config MAINBOARD_DIR
	string
	default lippert/toucan-af

config MAINBOARD_PART_NUMBER
	string
	default "Toucan-AF"

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
	default "1002,9802"

config SB800_AHCI_ROM
	bool
	default n

endif # BOARD_LIPPERT_TOUCAN_AF
