|
@@ -4202,14 +4202,17 @@ void ata_bmdma_setup(struct ata_queued_cmd *qc)
|
|
|
|
|
|
void ata_bmdma_irq_clear(struct ata_port *ap)
|
|
|
{
|
|
|
- if (ap->flags & ATA_FLAG_MMIO) {
|
|
|
- void __iomem *mmio = ((void __iomem *) ap->ioaddr.bmdma_addr) + ATA_DMA_STATUS;
|
|
|
- writeb(readb(mmio), mmio);
|
|
|
- } else {
|
|
|
- unsigned long addr = ap->ioaddr.bmdma_addr + ATA_DMA_STATUS;
|
|
|
- outb(inb(addr), addr);
|
|
|
- }
|
|
|
+ if (!ap->ioaddr.bmdma_addr)
|
|
|
+ return;
|
|
|
|
|
|
+ if (ap->flags & ATA_FLAG_MMIO) {
|
|
|
+ void __iomem *mmio =
|
|
|
+ ((void __iomem *) ap->ioaddr.bmdma_addr) + ATA_DMA_STATUS;
|
|
|
+ writeb(readb(mmio), mmio);
|
|
|
+ } else {
|
|
|
+ unsigned long addr = ap->ioaddr.bmdma_addr + ATA_DMA_STATUS;
|
|
|
+ outb(inb(addr), addr);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|