aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/ata/libata-sff.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c
index 1121153f1ecd..db90aa35cb71 100644
--- a/drivers/ata/libata-sff.c
+++ b/drivers/ata/libata-sff.c
@@ -2008,13 +2008,15 @@ static int ata_bus_softreset(struct ata_port *ap, unsigned int devmask,
2008 2008
2009 DPRINTK("ata%u: bus reset via SRST\n", ap->print_id); 2009 DPRINTK("ata%u: bus reset via SRST\n", ap->print_id);
2010 2010
2011 /* software reset. causes dev0 to be selected */ 2011 if (ap->ioaddr.ctl_addr) {
2012 iowrite8(ap->ctl, ioaddr->ctl_addr); 2012 /* software reset. causes dev0 to be selected */
2013 udelay(20); /* FIXME: flush */ 2013 iowrite8(ap->ctl, ioaddr->ctl_addr);
2014 iowrite8(ap->ctl | ATA_SRST, ioaddr->ctl_addr); 2014 udelay(20); /* FIXME: flush */
2015 udelay(20); /* FIXME: flush */ 2015 iowrite8(ap->ctl | ATA_SRST, ioaddr->ctl_addr);
2016 iowrite8(ap->ctl, ioaddr->ctl_addr); 2016 udelay(20); /* FIXME: flush */
2017 ap->last_ctl = ap->ctl; 2017 iowrite8(ap->ctl, ioaddr->ctl_addr);
2018 ap->last_ctl = ap->ctl;
2019 }
2018 2020
2019 /* wait the port to become ready */ 2021 /* wait the port to become ready */
2020 return ata_sff_wait_after_reset(&ap->link, devmask, deadline); 2022 return ata_sff_wait_after_reset(&ap->link, devmask, deadline);
@@ -2215,10 +2217,6 @@ void ata_sff_error_handler(struct ata_port *ap)
2215 2217
2216 spin_unlock_irqrestore(ap->lock, flags); 2218 spin_unlock_irqrestore(ap->lock, flags);
2217 2219
2218 /* ignore ata_sff_softreset if ctl isn't accessible */
2219 if (softreset == ata_sff_softreset && !ap->ioaddr.ctl_addr)
2220 softreset = NULL;
2221
2222 /* ignore built-in hardresets if SCR access is not available */ 2220 /* ignore built-in hardresets if SCR access is not available */
2223 if ((hardreset == sata_std_hardreset || 2221 if ((hardreset == sata_std_hardreset ||
2224 hardreset == sata_sff_hardreset) && !sata_scr_valid(&ap->link)) 2222 hardreset == sata_sff_hardreset) && !sata_scr_valid(&ap->link))