aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/ata/sata_promise.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/ata/sata_promise.c b/drivers/ata/sata_promise.c
index 8daf5d67dfe2..a2778cf016bc 100644
--- a/drivers/ata/sata_promise.c
+++ b/drivers/ata/sata_promise.c
@@ -280,6 +280,7 @@ static struct pci_driver pdc_ata_pci_driver = {
280static int pdc_port_start(struct ata_port *ap) 280static int pdc_port_start(struct ata_port *ap)
281{ 281{
282 struct device *dev = ap->host->dev; 282 struct device *dev = ap->host->dev;
283 struct pdc_host_priv *hp = ap->host->private_data;
283 struct pdc_port_priv *pp; 284 struct pdc_port_priv *pp;
284 int rc; 285 int rc;
285 286
@@ -301,6 +302,16 @@ static int pdc_port_start(struct ata_port *ap)
301 302
302 ap->private_data = pp; 303 ap->private_data = pp;
303 304
305 /* fix up PHYMODE4 align timing */
306 if ((hp->flags & PDC_FLAG_GEN_II) && sata_scr_valid(ap)) {
307 void __iomem *mmio = (void __iomem *) ap->ioaddr.scr_addr;
308 unsigned int tmp;
309
310 tmp = readl(mmio + 0x014);
311 tmp = (tmp & ~3) | 1; /* set bits 1:0 = 0:1 */
312 writel(tmp, mmio + 0x014);
313 }
314
304 return 0; 315 return 0;
305 316
306err_out_kfree: 317err_out_kfree: