diff -rupN linux-2.6.25/drivers/ata/sata_promise.c linux-2.6.25.sata_promise-irqclear/drivers/ata/sata_promise.c --- linux-2.6.25/drivers/ata/sata_promise.c 2008-04-17 18:22:32.000000000 +0200 +++ linux-2.6.25.sata_promise-irqclear/drivers/ata/sata_promise.c 2008-07-02 12:41:06.000000000 +0200 @@ -709,7 +709,7 @@ static void pdc_thaw(struct ata_port *ap u32 tmp; /* clear IRQ */ - readl(mmio + PDC_INT_SEQMASK); + readl(mmio + PDC_COMMAND); /* turn IRQ back on */ tmp = readl(mmio + PDC_CTLSTAT); @@ -839,10 +839,9 @@ static inline unsigned int pdc_host_intr static void pdc_irq_clear(struct ata_port *ap) { - struct ata_host *host = ap->host; - void __iomem *mmio = host->iomap[PDC_MMIO_BAR]; + void __iomem *mmio = ap->ioaddr.cmd_addr; - readl(mmio + PDC_INT_SEQMASK); + readl(mmio + PDC_COMMAND); } static irqreturn_t pdc_interrupt(int irq, void *dev_instance)