aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/isci
diff options
context:
space:
mode:
authorDave Maurer <david.c.maurer@intel.com>2012-06-22 02:45:33 -0400
committerDan Williams <dan.j.williams@intel.com>2012-07-03 15:09:30 -0400
commita90037560588e51b3e98b49537799137cbfda17d (patch)
treed72aba9734c36fc06fc6fab2ebd56399ff8b2979 /drivers/scsi/isci
parent6d70a74ffd616073a68ae0974d98819bfa8e6da6 (diff)
isci: fix COMSAS negation timout workaround for WD SAS drives
The following patch is a fix for the WD workaround COMSAS negation timeout change. This patch disables the OOB SM when the OOB is placed in reset, which allows the updated COMSAS negation timeout value to take effect. Cc: Dan Thompson <daniel.j.thompson@intel.com> Reported-by: Dan Thompson <daniel.j.thompson@intel.com> Signed-off-by: Dave Maurer <david.c.maurer@intel.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/scsi/isci')
-rw-r--r--drivers/scsi/isci/phy.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/scsi/isci/phy.c b/drivers/scsi/isci/phy.c
index 18f43d4c30ba..ebb8f530f708 100644
--- a/drivers/scsi/isci/phy.c
+++ b/drivers/scsi/isci/phy.c
@@ -1205,6 +1205,7 @@ static void scu_link_layer_start_oob(struct isci_phy *iphy)
1205 /** Reset OOB sequence - start */ 1205 /** Reset OOB sequence - start */
1206 val = readl(&ll->phy_configuration); 1206 val = readl(&ll->phy_configuration);
1207 val &= ~(SCU_SAS_PCFG_GEN_BIT(OOB_RESET) | 1207 val &= ~(SCU_SAS_PCFG_GEN_BIT(OOB_RESET) |
1208 SCU_SAS_PCFG_GEN_BIT(OOB_ENABLE) |
1208 SCU_SAS_PCFG_GEN_BIT(HARD_RESET)); 1209 SCU_SAS_PCFG_GEN_BIT(HARD_RESET));
1209 writel(val, &ll->phy_configuration); 1210 writel(val, &ll->phy_configuration);
1210 readl(&ll->phy_configuration); /* flush */ 1211 readl(&ll->phy_configuration); /* flush */
@@ -1236,6 +1237,7 @@ static void scu_link_layer_tx_hard_reset(
1236 * to the starting state. */ 1237 * to the starting state. */
1237 phy_configuration_value = 1238 phy_configuration_value =
1238 readl(&iphy->link_layer_registers->phy_configuration); 1239 readl(&iphy->link_layer_registers->phy_configuration);
1240 phy_configuration_value &= ~(SCU_SAS_PCFG_GEN_BIT(OOB_ENABLE));
1239 phy_configuration_value |= 1241 phy_configuration_value |=
1240 (SCU_SAS_PCFG_GEN_BIT(HARD_RESET) | 1242 (SCU_SAS_PCFG_GEN_BIT(HARD_RESET) |
1241 SCU_SAS_PCFG_GEN_BIT(OOB_RESET)); 1243 SCU_SAS_PCFG_GEN_BIT(OOB_RESET));