spin_lock_irqsave(&ipic_lock, flags);
 
-       temp = ipic_read(ipic->regs, ipic_info[src].ack);
-       temp |= (1 << (31 - ipic_info[src].bit));
+       temp = 1 << (31 - ipic_info[src].bit);
        ipic_write(ipic->regs, ipic_info[src].ack, temp);
 
        /* mb() can't guarantee that ack is finished.  But it does finish
        temp &= ~(1 << (31 - ipic_info[src].bit));
        ipic_write(ipic->regs, ipic_info[src].mask, temp);
 
-       temp = ipic_read(ipic->regs, ipic_info[src].ack);
-       temp |= (1 << (31 - ipic_info[src].bit));
+       temp = 1 << (31 - ipic_info[src].bit);
        ipic_write(ipic->regs, ipic_info[src].ack, temp);
 
        /* mb() can't guarantee that ack is finished.  But it does finish