• Valentine Barshak's avatar
    [POWERPC] 4xx: make UIC use generic level irq handler · c8090563
    Valentine Barshak authored
    This patch makes PowerPC 4xx UIC use generic level irq handler instead
    of a custom handle_uic_irq() function. We ack only edge irqs in mask_ack
    callback, since acking a level irq on UIC has no effect if the interrupt
    is still asserted by the device, even if the interrupt is already masked.
    So, to really de-assert the interrupt we need to de-assert the external
    source first *and* ack it on UIC then. The handle_level_irq() function
    masks and ack's the interrupt with mask_ack callback prior to calling
    the actual ISR and unmasks it at the end. So, to use it with UIC interrupts
    we need to ack level irqs in the unmask callback instead, after the ISR
    has de-asserted the external interrupt source. Even if we ack the interrupt
    that we didn't handle (unmask/ack it at the end of the handler, while
    next irq is already pending) it will not de-assert the irq, untill we
    de-assert its exteral source.
    Signed-off-by: default avatarValentine Barshak <vbarshak@ru.mvista.com>
    Signed-off-by: default avatarJosh Boyer <jwboyer@linux.vnet.ibm.com>
    c8090563
uic.c 8.82 KB