diff options
| author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2003-11-24 01:19:35 -0500 |
|---|---|---|
| committer | Jeff Garzik <jgarzik@redhat.com> | 2003-11-24 01:19:35 -0500 |
| commit | b503ce39099aaf26e74a31644368d97c519f5a22 (patch) | |
| tree | fdb6db32ef2950259e94bf28ccad8ad35b4ca143 /include/linux | |
| parent | 2cb1b24d954be850cbbb41dccfd68819c893142d (diff) | |
[libata] Fix flush of Device Control register to device
Also add some ServerWorks-specific tweaks.
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/libata.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/include/linux/libata.h b/include/linux/libata.h index e34b31950dd6..feabeae1cfc0 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h @@ -310,6 +310,7 @@ struct ata_port { struct ata_ioports ioaddr; /* ATA cmd/ctl/dma register blocks */ u8 ctl; /* cache of ATA control register */ + u8 last_ctl; /* Cache last written value */ unsigned int bus_state; unsigned int port_state; unsigned int pio_mask; @@ -522,12 +523,12 @@ static inline u8 ata_irq_on(struct ata_port *ap) struct ata_ioports *ioaddr = &ap->ioaddr; ap->ctl &= ~ATA_NIEN; + ap->last_ctl = ap->ctl; if (ap->flags & ATA_FLAG_MMIO) writeb(ap->ctl, ioaddr->ctl_addr); else outb(ap->ctl, ioaddr->ctl_addr); - return ata_wait_idle(ap); } |
