From 463fc696ed723a9d854113e370cc177b0b63de42 Mon Sep 17 00:00:00 2001 From: Brian King Date: Mon, 7 May 2007 17:09:05 -0500 Subject: [SCSI] ipr: Use PCI-E reset API for new ipr adapter Use a newly added PCI API to issue a PCI Fundamental reset (warm reset) to a new ipr PCI-E adapter. Typically, the ipr adapter uses the start BIST bit in config space to reset an adapter. Issuing start BIST on this particular adapter results in the PCI-E logic on the card losing sync, which causes PCI-E errors, making the card unusable. The only reset mechanism that exists on this hardware that does not have this problem is PCI Fundamental reset (warm reset). Signed-off-by: Brian King Signed-off-by: James Bottomley --- drivers/scsi/ipr.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'drivers/scsi/ipr.h') diff --git a/drivers/scsi/ipr.h b/drivers/scsi/ipr.h index daa96ee19d4..d93156671e9 100644 --- a/drivers/scsi/ipr.h +++ b/drivers/scsi/ipr.h @@ -37,7 +37,7 @@ /* * Literals */ -#define IPR_DRIVER_VERSION "2.4.0" +#define IPR_DRIVER_VERSION "2.4.1" #define IPR_DRIVER_DATE "(April 24, 2007)" /* @@ -112,6 +112,7 @@ /* Driver data flags */ #define IPR_USE_LONG_TRANSOP_TIMEOUT 0x00000001 +#define IPR_USE_PCI_WARM_RESET 0x00000002 #define IPR_DEFAULT_MAX_ERROR_DUMP 984 #define IPR_NUM_LOG_HCAMS 2 @@ -193,6 +194,7 @@ #define IPR_WAIT_FOR_RESET_TIMEOUT (2 * HZ) #define IPR_CHECK_FOR_RESET_TIMEOUT (HZ / 10) #define IPR_WAIT_FOR_BIST_TIMEOUT (2 * HZ) +#define IPR_PCI_RESET_TIMEOUT (HZ / 2) #define IPR_DUMP_TIMEOUT (15 * HZ) /* @@ -1091,6 +1093,9 @@ struct ipr_ioa_cfg { u8 allow_ml_add_del:1; u8 needs_hard_reset:1; u8 dual_raid:1; + u8 needs_warm_reset:1; + + u8 revid; enum ipr_cache_state cache_state; u16 type; /* CCIN of the card */ @@ -1184,6 +1189,7 @@ struct ipr_ioa_cfg { struct pci_pool *ipr_cmd_pool; struct ipr_cmnd *reset_cmd; + int (*reset) (struct ipr_cmnd *); struct ata_host ata_host; char ipr_cmd_label[8]; -- cgit v1.2.3-70-g09d2