• Grant Likely's avatar
    irqdomain: merge linear and tree reverse mappings. · cef5075c
    Grant Likely authored
    Keeping them separate makes irq_domain more complex and adds a lot of
    code (as proven by the diffstat).  Merging them simplifies the whole
    scheme.  This change makes it so both the tree and linear methods can be
    used by the same irq_domain instance.  If the hwirq is less than the
    ->linear_size, then the linear map is used to reverse map the hwirq.
    Otherwise the radix tree is used.  The test for which map to use is no
    more expensive that the existing code, so the performance of fast path
    is preserved.
    
    It also means that complex interrupt controllers can use both the
    linear map and a tree in the same domain.  This may be useful for an
    interrupt controller with a base set of core irqs and a large number
    of GPIOs which might be used as irqs.  The linear map could cover the
    core irqs, and the tree used for thas irqs.  The linear map could
    cover the core irqs, and the tree used for the gpios.
    
    v2: Drop reorganization of revmap data
    Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
    Cc: Paul Mundt <lethal@linux-sh.org>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Rob Herring <rob.herring@calxeda.com>
    cef5075c
irqdomain.c 22.5 KB