diff options
| -rw-r--r-- | drivers/scsi/libata-core.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c index 673ddf611d0e..c8d2201b126f 100644 --- a/drivers/scsi/libata-core.c +++ b/drivers/scsi/libata-core.c | |||
| @@ -4202,14 +4202,17 @@ void ata_bmdma_setup(struct ata_queued_cmd *qc) | |||
| 4202 | 4202 | ||
| 4203 | void ata_bmdma_irq_clear(struct ata_port *ap) | 4203 | void ata_bmdma_irq_clear(struct ata_port *ap) |
| 4204 | { | 4204 | { |
| 4205 | if (ap->flags & ATA_FLAG_MMIO) { | 4205 | if (!ap->ioaddr.bmdma_addr) |
| 4206 | void __iomem *mmio = ((void __iomem *) ap->ioaddr.bmdma_addr) + ATA_DMA_STATUS; | 4206 | return; |
| 4207 | writeb(readb(mmio), mmio); | ||
| 4208 | } else { | ||
| 4209 | unsigned long addr = ap->ioaddr.bmdma_addr + ATA_DMA_STATUS; | ||
| 4210 | outb(inb(addr), addr); | ||
| 4211 | } | ||
| 4212 | 4207 | ||
| 4208 | if (ap->flags & ATA_FLAG_MMIO) { | ||
| 4209 | void __iomem *mmio = | ||
| 4210 | ((void __iomem *) ap->ioaddr.bmdma_addr) + ATA_DMA_STATUS; | ||
| 4211 | writeb(readb(mmio), mmio); | ||
| 4212 | } else { | ||
| 4213 | unsigned long addr = ap->ioaddr.bmdma_addr + ATA_DMA_STATUS; | ||
| 4214 | outb(inb(addr), addr); | ||
| 4215 | } | ||
| 4213 | } | 4216 | } |
| 4214 | 4217 | ||
| 4215 | 4218 | ||
