diff options
author | Brian King <brking@linux.vnet.ibm.com> | 2007-05-07 18:09:05 -0400 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.il.steeleye.com> | 2007-05-08 12:54:40 -0400 |
commit | 463fc696ed723a9d854113e370cc177b0b63de42 (patch) | |
tree | 5c0743c280e36f06fe7c2596ebd4b5edbb8dfdd2 /drivers/scsi/ipr.h | |
parent | d24f8e8fef43aa9fc98ea7a5ae6eee0eed4cdc06 (diff) |
[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 <brking@linux.vnet.ibm.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi/ipr.h')
-rw-r--r-- | drivers/scsi/ipr.h | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/scsi/ipr.h b/drivers/scsi/ipr.h index daa96ee19d4f..d93156671e93 100644 --- a/drivers/scsi/ipr.h +++ b/drivers/scsi/ipr.h | |||
@@ -37,7 +37,7 @@ | |||
37 | /* | 37 | /* |
38 | * Literals | 38 | * Literals |
39 | */ | 39 | */ |
40 | #define IPR_DRIVER_VERSION "2.4.0" | 40 | #define IPR_DRIVER_VERSION "2.4.1" |
41 | #define IPR_DRIVER_DATE "(April 24, 2007)" | 41 | #define IPR_DRIVER_DATE "(April 24, 2007)" |
42 | 42 | ||
43 | /* | 43 | /* |
@@ -112,6 +112,7 @@ | |||
112 | 112 | ||
113 | /* Driver data flags */ | 113 | /* Driver data flags */ |
114 | #define IPR_USE_LONG_TRANSOP_TIMEOUT 0x00000001 | 114 | #define IPR_USE_LONG_TRANSOP_TIMEOUT 0x00000001 |
115 | #define IPR_USE_PCI_WARM_RESET 0x00000002 | ||
115 | 116 | ||
116 | #define IPR_DEFAULT_MAX_ERROR_DUMP 984 | 117 | #define IPR_DEFAULT_MAX_ERROR_DUMP 984 |
117 | #define IPR_NUM_LOG_HCAMS 2 | 118 | #define IPR_NUM_LOG_HCAMS 2 |
@@ -193,6 +194,7 @@ | |||
193 | #define IPR_WAIT_FOR_RESET_TIMEOUT (2 * HZ) | 194 | #define IPR_WAIT_FOR_RESET_TIMEOUT (2 * HZ) |
194 | #define IPR_CHECK_FOR_RESET_TIMEOUT (HZ / 10) | 195 | #define IPR_CHECK_FOR_RESET_TIMEOUT (HZ / 10) |
195 | #define IPR_WAIT_FOR_BIST_TIMEOUT (2 * HZ) | 196 | #define IPR_WAIT_FOR_BIST_TIMEOUT (2 * HZ) |
197 | #define IPR_PCI_RESET_TIMEOUT (HZ / 2) | ||
196 | #define IPR_DUMP_TIMEOUT (15 * HZ) | 198 | #define IPR_DUMP_TIMEOUT (15 * HZ) |
197 | 199 | ||
198 | /* | 200 | /* |
@@ -1091,6 +1093,9 @@ struct ipr_ioa_cfg { | |||
1091 | u8 allow_ml_add_del:1; | 1093 | u8 allow_ml_add_del:1; |
1092 | u8 needs_hard_reset:1; | 1094 | u8 needs_hard_reset:1; |
1093 | u8 dual_raid:1; | 1095 | u8 dual_raid:1; |
1096 | u8 needs_warm_reset:1; | ||
1097 | |||
1098 | u8 revid; | ||
1094 | 1099 | ||
1095 | enum ipr_cache_state cache_state; | 1100 | enum ipr_cache_state cache_state; |
1096 | u16 type; /* CCIN of the card */ | 1101 | u16 type; /* CCIN of the card */ |
@@ -1184,6 +1189,7 @@ struct ipr_ioa_cfg { | |||
1184 | struct pci_pool *ipr_cmd_pool; | 1189 | struct pci_pool *ipr_cmd_pool; |
1185 | 1190 | ||
1186 | struct ipr_cmnd *reset_cmd; | 1191 | struct ipr_cmnd *reset_cmd; |
1192 | int (*reset) (struct ipr_cmnd *); | ||
1187 | 1193 | ||
1188 | struct ata_host ata_host; | 1194 | struct ata_host ata_host; |
1189 | char ipr_cmd_label[8]; | 1195 | char ipr_cmd_label[8]; |