#
# Kernel configuration file for 88SE64XX/88SE94XX SAS/SATA driver.
#
# Copyright 2007 Red Hat, Inc.
# Copyright 2008 Marvell. <kewei@marvell.com>
# Copyright 2009-2011 Marvell. <yuxiangl@marvell.com>
#
# This file is licensed under GPLv2.
#
# This file is part of the 88SE64XX/88SE94XX driver.
#
# The 88SE64XX/88SE94XX driver 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.
#
# The 88SE64XX/88SE94XX driver 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 88SE64XX/88SE94XX Driver; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
#
#

config SCSI_MVSAS
	tristate "Marvell 88SE64XX/88SE94XX SAS/SATA support"
	depends on PCI
	select SCSI_SAS_LIBSAS
	select FW_LOADER
	help
		This driver supports Marvell's SAS/SATA 3Gb/s PCI-E 88SE64XX and 6Gb/s
		PCI-E 88SE94XX chip based host adapters.

config SCSI_MVSAS_DEBUG
	bool "Compile in debug mode"
	default y
	depends on SCSI_MVSAS
	help
		Compiles the 88SE64XX/88SE94XX driver in debug mode.  In debug mode,
		the driver prints some messages to the console.
config SCSI_MVSAS_TASKLET
	bool "Support for interrupt tasklet"
	default n
	depends on SCSI_MVSAS
	help
		Compiles the 88SE64xx/88SE94xx driver in interrupt tasklet mode.In this mode,
		the interrupt will schedule a tasklet.
