diff options
-rw-r--r-- | drivers/ata/libata-sff.c | 20 |
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)) |