packages: kernel/linux-2.6-adp94xx.patch (NEW) - driver from Adaptec for 94...

marcus marcus at pld-linux.org
Mon Mar 15 18:07:42 CET 2010


Author: marcus                       Date: Mon Mar 15 17:07:42 2010 GMT
Module: packages                      Tag: HEAD
---- Log message:
- driver from Adaptec for 94xx xontrollers

---- Files affected:
packages/kernel:
   linux-2.6-adp94xx.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: packages/kernel/linux-2.6-adp94xx.patch
diff -u /dev/null packages/kernel/linux-2.6-adp94xx.patch:1.1
--- /dev/null	Mon Mar 15 18:07:42 2010
+++ packages/kernel/linux-2.6-adp94xx.patch	Mon Mar 15 18:07:37 2010
@@ -0,0 +1,45932 @@
+diff -uNr linux-2.6.16.old/drivers/scsi/Kconfig linux-2.6.16/drivers/scsi/Kconfig
+--- linux-2.6.16.old/drivers/scsi/Kconfig	2010-03-14 22:19:41.097357377 +0000
++++ linux-2.6.16/drivers/scsi/Kconfig	2010-03-14 22:20:03.548872170 +0000
+@@ -381,6 +381,7 @@
+ 	depends on SCSI && PCI
+ 
+ source "drivers/scsi/aic7xxx/Kconfig.aic7xxx"
++source "drivers/scsi/adp94xx/Kconfig"
+ 
+ config SCSI_AIC7XXX_OLD
+ 	tristate "Adaptec AIC7xxx support (old driver)"
+diff -uNr linux-2.6.16.old/drivers/scsi/Makefile linux-2.6.16/drivers/scsi/Makefile
+--- linux-2.6.16.old/drivers/scsi/Makefile	2010-03-14 22:07:50.800694000 +0000
++++ linux-2.6.16/drivers/scsi/Makefile	2010-03-14 22:13:22.225541458 +0000
+@@ -66,6 +66,7 @@
+ obj-$(CONFIG_SCSI_AIC7XXX)	+= aic7xxx/
+ obj-$(CONFIG_SCSI_AIC79XX)	+= aic7xxx/
+ obj-$(CONFIG_SCSI_AACRAID)	+= aacraid/
++obj-$(CONFIG_SCSI_ADP94XX)	+= adp94xx/
+ obj-$(CONFIG_SCSI_AIC7XXX_OLD)	+= aic7xxx_old.o
+ obj-$(CONFIG_SCSI_IPS)		+= ips.o
+ obj-$(CONFIG_SCSI_FD_MCS)	+= fd_mcs.o
+diff -uNr linux-2.6.16.old/drivers/scsi/adp94xx/How_To_Compile_SCSI_Drivers.txt linux-2.6.16/drivers/scsi/adp94xx/How_To_Compile_SCSI_Drivers.txt
+--- linux-2.6.16.old/drivers/scsi/adp94xx/How_To_Compile_SCSI_Drivers.txt	1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.16/drivers/scsi/adp94xx/How_To_Compile_SCSI_Drivers.txt	2007-04-05 23:35:00.000000000 +0000
+@@ -0,0 +1,110 @@
++How To Compile SCSI Drivers
++===========================
++$Id$
++
++Assumptions
++-----------
++
++Kernel tree root is at /usr/src/linux and the current
++working directory is the kernel tree root, "cwd" or . for
++short.
++
++You should probably read the /usr/src/linux/README file.
++
++
++The kernel has to be configured
++-------------------------------
++
++Make sure that your kernel is configured.  If you do not
++have .config file in your kernel root, then your kernel is
++not configured.  If you have that file but you're unsure if
++your kernel is configured, then run "make oldconfig".
++
++You need a configuration file in order to configure the
++kernel.  You get one by manually configuring the kernel
++("make menuconfig") or by copying a provided one from your
++vendor/distributor or by getting the one currently used by
++your running kenrel.
++
++The latter two choices work as follows: copy the config file
++of your desire from configs/ directory to . and rename it
++".config".  Then run "make oldconfig".  Or you can copy
++/proc/config.gz (if present, not all kernels support this)
++to . and then unzip it using gunzip(1) and then rename it to
++".config".  Then run "make oldconfig".
++
++2.4.x
++-----
++
++Make the driver directory present in the kernel tree:
++
++cd drivers/scsi/
++mkdir adp94xx
++lndir <driver source directory> adp94xx
++
++Alternatively you can just copy the whole directory
++("cp -a") into "drivers/scsi/", just as long as it is called
++"adp94xx".  Or you can create a symlink to the actual
++directory from drivers/scsi/ as long as the pointing symlink
++is called "adp94xx".
++
++Edit the "Makefile" to include the fact that we're building
++that driver.  In the beginning after a bunch of lines
++starting with "subdir-$(..." add this line:
++
++subdir-$(CONFIG_SCSI_ADP94XX)   += adp94xx
++
++Further down after the "ifeq" statement regarding
++"aic7xxx/aic79xxx" add this statement:
++
++ifeq ($(CONFIG_SCSI_ADP94XX),y)
++  obj-$(CONFIG_SCSI_ADP94XX)    += adp94xx/adp94xx.o
++endif
++
++Edit the "Config.in" file to include this line:
++
++source drivers/scsi/adp94xx/Config.in
++
++after "source drivers/scsi/aic7xxx/Config.in" line.
++
++Then,
++
++cd ../../
++make oldconfig
++
++You will be asked only one question regarding the "new"
++driver which has just been added, which whould be the
++"adp94xx" driver.  Answer 'm' for module.  If you answer
++'n', stop reading here.  If you answer 'y', the driver will
++be built into the kernel.
++
++Then you're ready to build it.
++
++make SUBDIRS=drivers/scsi/adp94xx modules
++
++The driver will be "drivers/scsi/adp94xx/adp94xx.o".
++
++To insert it into the kernel, do, as root:
++
++insmod drivers/scsi/adp94xx/adp94xx.o
++
++You may want to give options.  See the readme.txt file in
++this directory.
++
++
++2.6.x
++-----
++
++cd <driver source directory>
++mv Makefile Makefile.2_4
++mv Makefile.2_6 Makefile
++make -C /usr/src/linux M=`pwd`
++
++The driver will be "adp94xx.ko".
++
++To insert it into the kernel, do:
++
++insmod adp94xx.ko
++
++You may want to give options.  See the readme.txt file in
++this directory.
+diff -uNr linux-2.6.16.old/drivers/scsi/adp94xx/Kconfig linux-2.6.16/drivers/scsi/adp94xx/Kconfig
+--- linux-2.6.16.old/drivers/scsi/adp94xx/Kconfig	1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.16/drivers/scsi/adp94xx/Kconfig	2007-04-05 23:35:00.000000000 +0000
+@@ -0,0 +1,11 @@
++#
++# adp94xx 2.5.x kernel configuration file.
++#
++# $Id$
++#
++config SCSI_ADP94XX
++	tristate "Adaptec AIC94xx SAS/SATA support"
++	depends on PCI && SCSI
++	help
++	This driver supports all of Adaptec's 3Gb/s PCI-X
++	based SAS/SATA controllers.
+diff -uNr linux-2.6.16.old/drivers/scsi/adp94xx/Makefile linux-2.6.16/drivers/scsi/adp94xx/Makefile
+--- linux-2.6.16.old/drivers/scsi/adp94xx/Makefile	1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.16/drivers/scsi/adp94xx/Makefile	2007-04-05 23:35:00.000000000 +0000
+@@ -0,0 +1,28 @@
++#
++# Makefile for the Linux adp94xx SAS driver.
++#
++# $Id$
++#
++
++EXTRA_CFLAGS += -Idrivers/scsi -UASD_DEBUG -DSEQUENCER_UPDATE -DSATA_SKIP_FIX -DCONCURRENT_SUPPORT -UNO_SES_SUPPORT -UEXTENDED_SCB
++
++ifeq ($(CONFIG_SCSI_ADP94XX),)
++	CONFIG_SCSI_ADP94XX=m
++endif
++
++obj-$(CONFIG_SCSI_ADP94XX)	+= adp94xx.o
++
++# OSM and HWI Specific Files
++adp94xx-y			+= adp94xx_osm.o	\
++				   adp94xx_hwi.o	\
++				   adp94xx_seq.o	\
++				   adp94xx_discover.o
++
++# IOCTL Specific File
++adp94xx-y			+= adp94xx_ioctl.o
++
++# SATA Specific File
++adp94xx-y			+= adp94xx_sata.o
++
++
++
+diff -uNr linux-2.6.16.old/drivers/scsi/adp94xx/adp94xx_discover.c linux-2.6.16/drivers/scsi/adp94xx/adp94xx_discover.c
+--- linux-2.6.16.old/drivers/scsi/adp94xx/adp94xx_discover.c	1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.16/drivers/scsi/adp94xx/adp94xx_discover.c	2007-04-05 23:37:42.000000000 +0000
+@@ -0,0 +1,8138 @@
++#define NO_VPD_WORKAROUND
++#define SMP_OVERRUN_WORKAROUND
++#define SMP_UNDERRUN_WORKAROUND
++/*
++ * Adaptec ADP94xx SAS HBA device driver for Linux.
++ *
++ * Copyright (c) 2004 Adaptec Inc.
++ * All rights reserved.
++ *
++ * Adapted by : Robert Tarte  <robt at PacificCodeWorks.com>
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ * 1. Redistributions of source code must retain the above copyright
++ *    notice, this list of conditions, and the following disclaimer,
++ *    without modification.
++ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
++ *    substantially similar to the "NO WARRANTY" disclaimer below
++ *    ("Disclaimer") and any redistribution must be conditioned upon
++ *    including a substantially similar Disclaimer requirement for further
++ *    binary redistribution.
++ * 3. Neither the names of the above-listed copyright holders nor the names
++ *    of any contributors may be used to endorse or promote products derived
++ *    from this software without specific prior written permission.
++ *
++ * Alternatively, this software may be distributed under the terms of the
++ * GNU General Public License ("GPL") version 2 as published by the Free
++ * Software Foundation.
++ *
++ * NO WARRANTY
++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
++ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
++ * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
++ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
++ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
++ * POSSIBILITY OF SUCH DAMAGES.
++ */
++/*
++ * The source in this file is adapted from: SASDiscoverSimulation.cpp,
++ * from the SAS-1.1 draft, sas1r07.pdf, project T10/1601-D,
++ * ISO/IEC 14776-151:200x.
++ */
++/*
++ * This is an implementation of the initiator based expander discovery
++ * and configuration.  Structure names used are equivalent to those
++ * referenced in the SAS document.
++ * Basic assumptions:
++ *
++ * 1. Change primitives will initiate a rediscovery/configuration sequence.
++ * 2. Table locations for SASAddresses are deterministic for a specific
++ * topology only, when the topology changes, the location of a SASAddress
++ * in an ASIC table cannot be assumed.
++ * 3. A complete discovery level occurs before the configuration of the
++ * level begins, multiple passes are required as the levels of expanders
++ * encountered between the initiator and the end devices is increased.
++ * 4. Configuration of a single expander occurs before proceeding to
++ * subsequent expanders attached.
++ * 5. The Attached structure is filled in following OOB and is available
++ * from the initialization routines.
++ *
++ * $Id$
++ * 
++ */
++#define DISCOVER_DEBUG	0
++
++#include "adp94xx_osm.h"
++#include "adp94xx_inline.h"
++#include "adp94xx_sata.h"
++#if KDB_ENABLE
++#include "linux/kdb.h"
++#endif
++
++/*
++ * this defines the type of algorithm used for discover
++ */
++#if 0
++int DiscoverAlgorithm = SAS_SIMPLE_LEVEL_DESCENT;
++#else
++int DiscoverAlgorithm = SAS_UNIQUE_LEVEL_DESCENT;
++#endif
++
++#define ROUTE_ENTRY(expander, i, j) \
++	(expander->RouteTable + \
++		((expander->num_phys * (i) * SAS_ADDR_LEN) + \
++		(j) * SAS_ADDR_LEN))
++
++#define DUMP_EXPANDER(s, expander) \
++	asd_dump_expander((uint8_t *)__FUNCTION__, __LINE__, (s), expander)
++
++#define NEW_STATE(new_state)	new_state(sm_contextp, new_state)
++
++struct state_machine asd_DiscoverySM = {
++	asd_DiscoverySM_Initialize,
++	asd_DiscoverySM_StateMachine,
++	asd_DiscoverySM_Finish,
++	asd_DiscoverySM_Abort,
++	ASD_STATE_DISCOVER_START
++};
++
++struct state_machine asd_DiscoverExpanderSM = {
++	asd_DiscoverExpanderSM_Initialize,
++	asd_DiscoverExpanderSM_StateMachine,
++	asd_DiscoverExpanderSM_Finish,
++	asd_DiscoverExpanderSM_Abort,
++	ASD_STATE_REPORT_AND_DISCOVER_START
++};
++
++struct state_machine asd_DiscoverFindBoundarySM = {
++	asd_DiscoverFindBoundarySM_Initialize,
++	asd_DiscoverFindBoundarySM_StateMachine,
++	asd_DiscoverFindBoundarySM_Finish,
++	asd_DiscoverFindBoundarySM_Abort,
++	ASD_STATE_FIND_BOUNDARY_START
++};
++
++struct state_machine asd_DiscoverConfigSetSM = {
++	asd_DiscoverConfigSetSM_Initialize,
++	asd_DiscoverConfigSetSM_StateMachine,
++	asd_DiscoverConfigSetSM_Finish,
++	asd_DiscoverConfigSetSM_Abort,
++	ASD_STATE_CONFIG_SET_START
++};
++
++struct state_machine asd_ConfigureExpanderSM = {
++	asd_ConfigureExpanderSM_Initialize,
++	asd_ConfigureExpanderSM_StateMachine,
++	asd_ConfigureExpanderSM_Finish,
++	asd_ConfigureExpanderSM_Abort,
++	ASD_STATE_CONFIG_EXPANDER_START
++};
++
++struct state_machine asd_ConfigureATA_SM = {
++	asd_ConfigureATA_SM_Initialize,
++	asd_ConfigureATA_SM_StateMachine,
++	asd_ConfigureATA_SM_Finish,
++	asd_ConfigureATA_SM_Abort,
++	ASD_STATE_CONFIGURE_ATA_START
++};
++
++struct state_machine asd_InitSATA_SM = {
++	asd_InitSATA_SM_Initialize,
++	asd_InitSATA_SM_StateMachine,
++	asd_InitSATA_SM_Finish,
++	asd_InitSATA_SM_Abort,
++	ASD_STATE_INIT_SATA_START
++};
++
++struct state_machine asd_SATA_SpinHoldSM = {
++	asd_SATA_SpinHoldSM_Initialize,
++	asd_SATA_SpinHoldSM_StateMachine,
++	asd_SATA_SpinHoldSM_Finish,
++	asd_SATA_SpinHoldSM_Abort,
++	ASD_STATE_SATA_SPINHOLD_START
++};
++
++struct state_machine asd_InitSAS_SM = {
++	asd_InitSAS_SM_Initialize,
++	asd_InitSAS_SM_StateMachine,
++	asd_InitSAS_SM_Finish,
++	asd_InitSAS_SM_Abort,
++	ASD_STATE_INIT_SAS_START
++};
++
++struct state_machine asd_InitSMP_SM = {
++	asd_InitSMP_SM_Initialize,
++	asd_InitSMP_SM_StateMachine,
++	asd_InitSMP_SM_Finish,
++	asd_InitSMP_SM_Abort,
++	ASD_STATE_INIT_SMP_START
++};
++
++extern void
++asd_scb_internal_done(struct asd_softc *asd, struct scb *scb,
++		struct asd_done_list *dl);
++extern void asd_run_device_queues(struct asd_softc *asd);
++struct asd_target *asd_discover_get_target(struct state_machine_context
++					*sm_contextp,
++					uint8_t * dest_sas_address,
++					struct list_head *old_discover_listp,
++					struct list_head *found_listp,
++					unsigned conn_rate,
++					TRANSPORT_TYPE transport_type);
++
++struct asd_DiscoverySM_Context;
++
++static void asd_invalidate_targets(struct asd_softc *asd,
++					struct asd_port *port);
++static void asd_validate_targets_hotplug(struct asd_softc *asd,
++					struct asd_port *port,
++					struct asd_DiscoverySM_Context *ctx);
++static void asd_validate_targets_init(struct asd_softc *asd);
++static void asd_apply_conn_mask(struct asd_softc *asd,
++				struct list_head *discover_list);
++static int asd_discovery_queue_cmd(struct asd_softc *asd,
++				struct scb *scb, struct asd_target *targ,
++				struct asd_device *dev);
++
++#if DISCOVER_DEBUG
++static void asd_dump_tree(struct asd_softc *asd, struct asd_port *port);
++#else
++static void asd_dump_tree(struct asd_softc *asd, struct asd_port *port)
++{
++}
++#endif
++
++void asd_print_conn_rate(unsigned conn_rate, char *s)
++{
++	switch (conn_rate) {
++	case SAS_RATE_30GBPS:
++		printk(" 3.0-GBPS");
++		break;
++	case SAS_RATE_15GBPS:
++		printk(" 1.5-GBPS");
++		break;
++	default:
++		printk(" \?\?-GBPS");
++		break;
++	}
++	printk("%s", s);
++}
++
++void asd_print_state(unsigned state, char *s)
++{
++	switch (state) {
++	case ASD_STATE_DISCOVER_START:
++		printk("ASD_STATE_DISCOVER_START");
++		break;
++
++	case ASD_STATE_DISCOVER_ATTACHED:
++		printk("ASD_STATE_DISCOVER_ATTACHED");
++		break;
++
++	case ASD_STATE_FIND_BOUNDARY:
++		printk("ASD_STATE_FIND_BOUNDARY");
++		break;
++
++	case ASD_STATE_CONFIG_BOUNDARY_SET:
++		printk("ASD_STATE_CONFIG_BOUNDARY_SET");
++		break;
++
++	case ASD_STATE_CONFIG_ATTACHED_SET:
++		printk("ASD_STATE_CONFIG_ATTACHED_SET");
++		break;
++
++	case ASD_STATE_FINISHED:
++		printk("ASD_STATE_FINISHED");
++		break;
++
++	case ASD_STATE_SATA_SPINHOLD:
++		printk("ASD_STATE_SATA_SPINHOLD");
++		break;
++
++	case ASD_STATE_INIT_SATA:
++		printk("ASD_STATE_INIT_SATA");
++		break;
++
++	case ASD_STATE_INIT_SAS:
++		printk("ASD_STATE_INIT_SAS");
++		break;
++
++	case ASD_STATE_INIT_SMP:
++		printk("ASD_STATE_INIT_SMP");
++		break;
++
++	case ASD_STATE_FAILED:
++		printk("ASD_STATE_FAILED");
++		break;
++
++	case ASD_STATE_REPORT_AND_DISCOVER_START:
++		printk("ASD_STATE_REPORT_AND_DISCOVER_START");
++		break;
++
++	case ASD_STATE_ISSUE_REPORT_GENERAL:
++		printk("ASD_STATE_ISSUE_REPORT_GENERAL");
++		break;
++
++	case ASD_STATE_ISSUE_DISCOVER_LOOP:
++		printk("ASD_STATE_ISSUE_DISCOVER_LOOP");
++		break;
++
++	case ASD_STATE_REPORT_AND_DISCOVER_FINISHED:
++		printk("ASD_STATE_REPORT_AND_DISCOVER_FINISHED");
++		break;
++
++	case ASD_STATE_REPORT_AND_DISCOVER_FAILED:
++		printk("ASD_STATE_REPORT_AND_DISCOVER_FAILED");
++		break;
++
++	case ASD_STATE_FIND_BOUNDARY_START:
++		printk("ASD_STATE_FIND_BOUNDARY_START");
++		break;
++
++	case ASD_STATE_FIND_BOUNDARY_LOOP:
++		printk("ASD_STATE_FIND_BOUNDARY_LOOP");
++		break;
++
++	case ASD_STATE_FIND_BOUNDARY_FINISHED:
++		printk("ASD_STATE_FIND_BOUNDARY_FINISHED");
++		break;
++
++	case ASD_STATE_FIND_BOUNDARY_FAILED:
++		printk("ASD_STATE_FIND_BOUNDARY_FAILED");
++		break;
++
++	case ASD_STATE_CONFIG_SET_START:
++		printk("ASD_STATE_CONFIG_SET_START");
++		break;
++
++	case ASD_STATE_CONFIG_SET_ISSUE_DISCOVER:
++		printk("ASD_STATE_CONFIG_SET_ISSUE_DISCOVER");
++		break;
++
++	case ASD_STATE_CONFIG_SET_CONFIGURE_EXPANDER:
++		printk("ASD_STATE_CONFIG_SET_CONFIGURE_EXPANDER");
++		break;
++
++	case ASD_STATE_CONFIG_SET_FINISHED:
++		printk("ASD_STATE_CONFIG_SET_FINISHED");
++		break;
++
++	case ASD_STATE_CONFIG_SET_FAILED:
++		printk("ASD_STATE_CONFIG_SET_FAILED");
++		break;
++
++	case ASD_STATE_CONFIG_EXPANDER_START:
++		printk("ASD_STATE_CONFIG_EXPANDER_START");
++		break;
++
++	case ASD_STATE_CONFIG_EXPANDER_ROUTE:
++		printk("ASD_STATE_CONFIG_EXPANDER_ROUTE");
++		break;
++
++	case ASD_STATE_CONFIG_EXPANDER_ROUTE_LOOP:
++		printk("ASD_STATE_CONFIG_EXPANDER_ROUTE_LOOP");
++		break;
++
++	case ASD_STATE_CONFIG_EXPANDER_FINISHED:
++		printk("ASD_STATE_CONFIG_EXPANDER_FINISHED");
++		break;
++
++	case ASD_STATE_CONFIG_EXPANDER_FAILED:
++		printk("ASD_STATE_CONFIG_EXPANDER_FAILED");
++		break;
++
++	case ASD_STATE_INIT_SATA_START:
++		printk("ASD_STATE_INIT_SATA_START");
++		break;
++
++	case ASD_STATE_INIT_SATA_REPORT_PHY:
++		printk("ASD_STATE_INIT_SATA_REPORT_PHY");
++		break;
++
++	case ASD_STATE_INIT_SATA_IDENTIFY:
++		printk("ASD_STATE_INIT_SATA_IDENTIFY");
++		break;
++
++	case ASD_STATE_INIT_SATA_CONFIGURE_FEATURES:
++		printk("ASD_STATE_INIT_SATA_CONFIGURE_FEATURES");
++		break;
++
++	case ASD_STATE_INIT_SATA_FINISHED:
++		printk("ASD_STATE_INIT_SATA_FINISHED");
++		break;
++
++	case ASD_STATE_INIT_SATA_FAILED:
++		printk("ASD_STATE_INIT_SATA_FAILED");
++		break;
++
++	case ASD_STATE_SATA_SPINHOLD_START:
++		printk("ASD_STATE_SATA_SPINHOLD_START");
++		break;
++
++	case ASD_STATE_SATA_SPINHOLD_PHY_CONTROL:
++		printk("ASD_STATE_SATA_SPINHOLD_PHY_CONTROL");
++		break;
++
++	case ASD_STATE_SATA_SPINHOLD_DISCOVER:
++		printk("ASD_STATE_SATA_SPINHOLD_DISCOVER");
++		break;
++
++	case ASD_STATE_SATA_SPINHOLD_FINISHED:
++		printk("ASD_STATE_SATA_SPINHOLD_FINISHED");
++		break;
++
++	case ASD_STATE_SATA_SPINHOLD_FAILED:
++		printk("ASD_STATE_SATA_SPINHOLD_FAILED");
++		break;
++
++	case ASD_STATE_INIT_SAS_START:
++		printk("ASD_STATE_INIT_SAS_START");
++		break;
++
++	case ASD_STATE_INIT_SAS_INQUIRY:
++		printk("ASD_STATE_INIT_SAS_INQUIRY");
++		break;
++
++	case ASD_STATE_INIT_SAS_GET_DEVICE_ID:
++		printk("ASD_STATE_INIT_SAS_GET_DEVICE_ID");
<<Diff was trimmed, longer than 597 lines>>


More information about the pld-cvs-commit mailing list