|
@@ -2066,6 +2066,7 @@ static int ata_bus_softreset(struct ata_port *ap, unsigned int devmask,
|
|
|
iowrite8(ap->ctl | ATA_SRST, ioaddr->ctl_addr);
|
|
|
udelay(20); /* FIXME: flush */
|
|
|
iowrite8(ap->ctl, ioaddr->ctl_addr);
|
|
|
+ ap->last_ctl = ap->ctl;
|
|
|
|
|
|
/* wait the port to become ready */
|
|
|
return ata_sff_wait_after_reset(&ap->link, devmask, deadline);
|
|
@@ -2190,8 +2191,10 @@ void ata_sff_postreset(struct ata_link *link, unsigned int *classes)
|
|
|
}
|
|
|
|
|
|
/* set up device control */
|
|
|
- if (ap->ioaddr.ctl_addr)
|
|
|
+ if (ap->ioaddr.ctl_addr) {
|
|
|
iowrite8(ap->ctl, ap->ioaddr.ctl_addr);
|
|
|
+ ap->last_ctl = ap->ctl;
|
|
|
+ }
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(ata_sff_postreset);
|
|
|
|
|
@@ -2534,6 +2537,7 @@ void ata_bus_reset(struct ata_port *ap)
|
|
|
if (ap->flags & (ATA_FLAG_SATA_RESET | ATA_FLAG_SRST)) {
|
|
|
/* set up device control for ATA_FLAG_SATA_RESET */
|
|
|
iowrite8(ap->ctl, ioaddr->ctl_addr);
|
|
|
+ ap->last_ctl = ap->ctl;
|
|
|
}
|
|
|
|
|
|
DPRINTK("EXIT\n");
|