Danube: Fix irq ack

SVN-Revision: 22748
lede-17.01
Lars-Peter Clausen 2010-08-21 15:58:44 +00:00
parent 649d213428
commit bcdf9742be
1 changed files with 21 additions and 1 deletions

View File

@ -55,6 +55,26 @@ ifxmips_mask_and_ack_irq(unsigned int irq_nr)
}
EXPORT_SYMBOL(ifxmips_mask_and_ack_irq);
static void
ifxmips_ack_irq(unsigned int irq_nr)
{
int i;
u32 *isr = IFXMIPS_ICU_IM0_ISR;
irq_nr -= INT_NUM_IRQ0;
for (i = 0; i <= 4; i++)
{
if (irq_nr < INT_NUM_IM_OFFSET)
{
ifxmips_w32((1 << irq_nr), isr);
return;
}
isr += IFXMIPS_ICU_OFFSET;
irq_nr -= INT_NUM_IM_OFFSET;
}
}
void
ifxmips_enable_irq(unsigned int irq_nr)
{
@ -96,7 +116,7 @@ ifxmips_irq_type = {
.enable = ifxmips_enable_irq,
.disable = ifxmips_disable_irq,
.unmask = ifxmips_enable_irq,
.ack = ifxmips_end_irq,
.ack = ifxmips_ack_irq,
.mask = ifxmips_disable_irq,
.mask_ack = ifxmips_mask_and_ack_irq,
.end = ifxmips_end_irq,