static irqreturn_t
dma_err_handler(int irq, void *dev_id, struct pt_regs *regs)
{
- int i;
+ int i, disr = DISR;
struct dma_channel *channel;
unsigned int err_mask = DBTOSR | DRTOSR | DSESR | DBOSR;
+ DISR = disr;
for (i = 0; i < 11; i++) {
channel = &dma_channels[i];
i, channel->name);
DBOSR |= (1 << i);
}
- DISR |= (1 << i);
}
return IRQ_HANDLED;
}
{
int i, disr = DISR;
+ DISR = disr;
for (i = 0; i < 11; i++) {
if (disr & (1 << i)) {
struct dma_channel *channel = &dma_channels[i];
*/
printk(KERN_WARNING
"spurious IRQ for DMA channel %d\n", i);
- DISR |= (1 << i);
}
}
}