diff options
author | Jiri Kosina <jkosina@suse.cz> | 2011-09-15 09:08:05 -0400 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2011-09-15 09:08:18 -0400 |
commit | e060c38434b2caa78efe7cedaff4191040b65a15 (patch) | |
tree | 407361230bf6733f63d8e788e4b5e6566ee04818 /drivers/scsi/isci/phy.c | |
parent | 10e4ac572eeffe5317019bd7330b6058a400dfc2 (diff) | |
parent | cc39c6a9bbdebfcf1a7dee64d83bf302bc38d941 (diff) |
Merge branch 'master' into for-next
Fast-forward merge with Linus to be able to merge patches
based on more recent version of the tree.
Diffstat (limited to 'drivers/scsi/isci/phy.c')
-rw-r--r-- | drivers/scsi/isci/phy.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/scsi/isci/phy.c b/drivers/scsi/isci/phy.c index 8d9192d49f4a..09e61134037f 100644 --- a/drivers/scsi/isci/phy.c +++ b/drivers/scsi/isci/phy.c | |||
@@ -104,6 +104,7 @@ sci_phy_link_layer_initialization(struct isci_phy *iphy, | |||
104 | u32 parity_count = 0; | 104 | u32 parity_count = 0; |
105 | u32 llctl, link_rate; | 105 | u32 llctl, link_rate; |
106 | u32 clksm_value = 0; | 106 | u32 clksm_value = 0; |
107 | u32 sp_timeouts = 0; | ||
107 | 108 | ||
108 | iphy->link_layer_registers = reg; | 109 | iphy->link_layer_registers = reg; |
109 | 110 | ||
@@ -211,6 +212,18 @@ sci_phy_link_layer_initialization(struct isci_phy *iphy, | |||
211 | llctl |= SCU_SAS_LLCTL_GEN_VAL(MAX_LINK_RATE, link_rate); | 212 | llctl |= SCU_SAS_LLCTL_GEN_VAL(MAX_LINK_RATE, link_rate); |
212 | writel(llctl, &iphy->link_layer_registers->link_layer_control); | 213 | writel(llctl, &iphy->link_layer_registers->link_layer_control); |
213 | 214 | ||
215 | sp_timeouts = readl(&iphy->link_layer_registers->sas_phy_timeouts); | ||
216 | |||
217 | /* Clear the default 0x36 (54us) RATE_CHANGE timeout value. */ | ||
218 | sp_timeouts &= ~SCU_SAS_PHYTOV_GEN_VAL(RATE_CHANGE, 0xFF); | ||
219 | |||
220 | /* Set RATE_CHANGE timeout value to 0x3B (59us). This ensures SCU can | ||
221 | * lock with 3Gb drive when SCU max rate is set to 1.5Gb. | ||
222 | */ | ||
223 | sp_timeouts |= SCU_SAS_PHYTOV_GEN_VAL(RATE_CHANGE, 0x3B); | ||
224 | |||
225 | writel(sp_timeouts, &iphy->link_layer_registers->sas_phy_timeouts); | ||
226 | |||
214 | if (is_a2(ihost->pdev)) { | 227 | if (is_a2(ihost->pdev)) { |
215 | /* Program the max ARB time for the PHY to 700us so we inter-operate with | 228 | /* Program the max ARB time for the PHY to 700us so we inter-operate with |
216 | * the PMC expander which shuts down PHYs if the expander PHY generates too | 229 | * the PMC expander which shuts down PHYs if the expander PHY generates too |