diff options
Diffstat (limited to 'drivers/scsi/mvsas/mv_chips.h')
-rw-r--r-- | drivers/scsi/mvsas/mv_chips.h | 17 |
1 files changed, 3 insertions, 14 deletions
diff --git a/drivers/scsi/mvsas/mv_chips.h b/drivers/scsi/mvsas/mv_chips.h index 1753a6fc42d0..bcc408042cee 100644 --- a/drivers/scsi/mvsas/mv_chips.h +++ b/drivers/scsi/mvsas/mv_chips.h | |||
@@ -164,7 +164,6 @@ static inline void __devinit mvs_phy_hacks(struct mvs_info *mvi) | |||
164 | { | 164 | { |
165 | u32 tmp; | 165 | u32 tmp; |
166 | 166 | ||
167 | /* workaround for SATA R-ERR, to ignore phy glitch */ | ||
168 | tmp = mvs_cr32(mvi, CMD_PHY_TIMER); | 167 | tmp = mvs_cr32(mvi, CMD_PHY_TIMER); |
169 | tmp &= ~(1 << 9); | 168 | tmp &= ~(1 << 9); |
170 | tmp |= (1 << 10); | 169 | tmp |= (1 << 10); |
@@ -179,23 +178,10 @@ static inline void __devinit mvs_phy_hacks(struct mvs_info *mvi) | |||
179 | tmp |= 0x3fff; | 178 | tmp |= 0x3fff; |
180 | mvs_cw32(mvi, CMD_SAS_CTL0, tmp); | 179 | mvs_cw32(mvi, CMD_SAS_CTL0, tmp); |
181 | 180 | ||
182 | /* workaround for WDTIMEOUT , set to 550 ms */ | ||
183 | mvs_cw32(mvi, CMD_WD_TIMER, 0x7a0000); | 181 | mvs_cw32(mvi, CMD_WD_TIMER, 0x7a0000); |
184 | 182 | ||
185 | /* not to halt for different port op during wideport link change */ | 183 | /* not to halt for different port op during wideport link change */ |
186 | mvs_cw32(mvi, CMD_APP_ERR_CONFIG, 0xffefbf7d); | 184 | mvs_cw32(mvi, CMD_APP_ERR_CONFIG, 0xffefbf7d); |
187 | |||
188 | /* workaround for Seagate disk not-found OOB sequence, recv | ||
189 | * COMINIT before sending out COMWAKE */ | ||
190 | tmp = mvs_cr32(mvi, CMD_PHY_MODE_21); | ||
191 | tmp &= 0x0000ffff; | ||
192 | tmp |= 0x00fa0000; | ||
193 | mvs_cw32(mvi, CMD_PHY_MODE_21, tmp); | ||
194 | |||
195 | tmp = mvs_cr32(mvi, CMD_PHY_TIMER); | ||
196 | tmp &= 0x1fffffff; | ||
197 | tmp |= (2U << 29); /* 8 ms retry */ | ||
198 | mvs_cw32(mvi, CMD_PHY_TIMER, tmp); | ||
199 | } | 185 | } |
200 | 186 | ||
201 | static inline void mvs_int_sata(struct mvs_info *mvi) | 187 | static inline void mvs_int_sata(struct mvs_info *mvi) |
@@ -223,6 +209,9 @@ static inline void mvs_int_full(struct mvs_info *mvi) | |||
223 | mvs_int_port(mvi, i, tmp); | 209 | mvs_int_port(mvi, i, tmp); |
224 | } | 210 | } |
225 | 211 | ||
212 | if (stat & CINT_NON_SPEC_NCQ_ERROR) | ||
213 | MVS_CHIP_DISP->non_spec_ncq_error(mvi); | ||
214 | |||
226 | if (stat & CINT_SRS) | 215 | if (stat & CINT_SRS) |
227 | mvs_int_sata(mvi); | 216 | mvs_int_sata(mvi); |
228 | 217 | ||