[lkml]   [2011]   [May]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: m68k: Convert to genirq (WIP)

    On Tue, 31 May 2011, Geert Uytterhoeven wrote:
    > On Sat, May 28, 2011 at 20:32, Geert Uytterhoeven <> wrote:
    > > Next on my list is Amiga, which will cover autovectored and chained interrupts.
    > Plain chained interrupts should be handled by calling irq_set_chained_handler()
    > to register an irq_flow_handler_t, and let the handler call
    > generic_handle_irq() for
    > each successive interrupt, right?
    > However, on Amiga we have interrupts (IRQ_AMIGA_PORTS and
    > IRQ_AMIGA_EXTER) that are a combination of chained (for the CIA interrupt
    > controllers) and shared level interrupts (for motherboard hardware and
    > Zorro expansion
    > boards).
    > But irq_set_chained_handler() sets IRQ_NOREQUEST, i.e. the interrupt cannot
    > be requested anymore via request_irq(), so this rules out using it with shared
    > level interrupts.
    > What's the preferred way to handle this? Is there are standard way, or should I
    > write my own specialized irq_flow_handler_t that handles both?
    > In the old scheme, we just registered the chain handlers with
    > request_irq(), so they
    > worked nicely together with the shared level interrupts (cfr.
    > arch/m68k/amiga/cia.c)

    You still can setup all those handlers setup via request_irq() and
    handle the demux part by calling generic_handle_irq() from the handler
    which deals with that demux hardware. irq_set_chained_handler() is
    merily an optimization which does not apply to potentially shared
    primary interrupts.



     \ /
      Last update: 2011-05-31 22:13    [W:0.020 / U:3.488 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site