#
# 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_AMD_TORPEDO

config BOARD_SPECIFIC_OPTIONS # dummy
	def_bool y
	select CPU_AMD_AGESA_FAMILY12
	select NORTHBRIDGE_AMD_AGESA_FAMILY12
	select SOUTHBRIDGE_AMD_CIMX_SB900
	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/torpedo

config MAINBOARD_PART_NUMBER
	string
	default "Torpedo"

config HW_MEM_HOLE_SIZEK
	hex
	default 0x200000

config MAX_CPUS
	int
	default 4

config HW_MEM_HOLE_SIZE_AUTO_INC
	bool
	default n

config HT_CHAIN_END_UNITID_BASE
	hex
	default 0x1

config HT_CHAIN_UNITID_BASE
	hex
	default 0x0

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/LlanoGenericVbios.bin"

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

config AHCI_BIOS
	bool
	default n

#config AHCI_BIOS_FILE
#	string "AHCI ROM path and filename"
#	depends on AHCI_BIOS
#	default "rom/ahci/sb900.bin"

config AHCI_BIOS_ID
	string "AHCI device PCI IDs"
	depends on AHCI_BIOS
	default "1022,7801"

config XHC_BIOS
	bool
	default n

#config XHC_BIOS_FILE
#	string "XHC BIOS path and filename"
#	depends on XHC_BIOS
#	default "rom/xhc/Xhc.rom"

config XHC_BIOS_ID
	string "XHC device PCI IDs"
	depends on XHC_BIOS
	default "1022,7812"

config SATA_CONTROLLER_MODE
	hex
	default 0x0

config ONBOARD_LAN
	bool
	default y

config ONBOARD_1394
	bool
	default y

config ONBOARD_USB30
	bool
	default n

config ONBOARD_BLUETOOTH
	bool
	default y

config ONBOARD_WEBCAM
	bool
	default y

config ONBOARD_TRAVIS
	bool
	default y

config ONBOARD_LIGHTSENSOR
	bool
	default n

endif # BOARD_AMD_TORPEDO
