• P
    sh: intc: dynamic IRQ support. · 1ce7b039
    Paul Mundt 提交于
    This adds support for dynamic IRQ allocation/deallocation for all parts
    using the SH-style vectored IRQs. While this is not inherently
    INTC-specific, the INTC code is the main tie-in for vectored IRQ
    registration, and is the only place that a full view of the utilized
    vector map is possible.
    
    The implementation is fairly straightforward, implementing a flat IRQ map
    where each registered vector is reserved, allowing us to scan for holes
    and dynamically wire up IRQs lazily later on in the boot stage. This
    piggybacks on top of sparseirq in order to make the best use of the
    available vector space.
    
    Dynamic IRQs can be used for any number of things, ranging from MSI in
    the SH-X3 PCIe case down to demux vectors for board FPGAs and system
    controllers that presently allocate an arbitrary range. In the latter
    case, this also allows those platforms to use sparseirq without blowing
    up, which brings us one step closer to enabling sparseirq as the default
    for all platform and CPU combinations.
    Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
    1ce7b039
intc.c 22.8 KB