##
## This file is part of the coreboot project.
##
## Copyright (C) 2008-2009 coresystems GmbH
##
## 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.
##
## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
##

config SOUTHBRIDGE_AMD_SB600
	bool
	select IOAPIC
	select HAVE_USBDEBUG
	select HAVE_HARD_RESET

if SOUTHBRIDGE_AMD_SB600
config BOOTBLOCK_SOUTHBRIDGE_INIT
	string
	default "southbridge/amd/sb600/bootblock.c"

config EHCI_BAR
	hex
	default 0xfef00000

config EHCI_DEBUG_OFFSET
	hex
	default 0xe0

config USBDEBUG_DEFAULT_PORT
	int
	default 0

choice
	prompt "SATA Mode"
	default SATA_MODE_IDE
	help
	  Select the mode in which SATA should be driven. IDE or AHCI.
	  The default is IDE.

	config SATA_MODE_IDE
	bool "IDE"

	config SATA_MODE_AHCI
	bool "AHCI"
endchoice

config SATA_MODE
	int
	default 1 if SATA_MODE_IDE
	default 0 if SATA_MODE_AHCI

config HPET_MIN_TICKS
        hex
        default 0x14

endif
