]> git.karo-electronics.de Git - karo-tx-linux.git/commit
irqdomain: Support for static IRQ mapping and association.
authorGrant Likely <grant.likely@secretlab.ca>
Sun, 17 Jun 2012 22:17:04 +0000 (16:17 -0600)
committerGrant Likely <grant.likely@secretlab.ca>
Wed, 11 Jul 2012 15:15:37 +0000 (16:15 +0100)
commit98aa468e045a0091a7c34d9f5205a629634fabf4
treea08da590d80462c302750640eb88ec6c72859e1b
parent2a71a1a9da40dfbd5b23d4312aa1641385581f4a
irqdomain: Support for static IRQ mapping and association.

This adds a new strict mapping API for supporting creation of linux IRQs
at existing positions within the domain. The new routines are as follows:

For dynamic allocation and insertion to specified ranges:

- irq_create_identity_mapping()
- irq_create_strict_mappings()

These will allocate and associate a range of linux IRQs at the specified
location. This can be used by controllers that have their own static linux IRQ
definitions to map a hwirq range to, as well as for platforms that wish to
establish 1:1 identity mapping between linux and hwirq space.

For insertion to specified ranges by platforms that do their own irq_desc
management:

- irq_domain_associate()
- irq_domain_associate_many()

These in turn call back in to the domain's ->map() routine, for further
processing by the platform. Disassociation of IRQs get handled through
irq_dispose_mapping() as normal.

With these in place it should be possible to begin migration of legacy IRQ
domains to linear ones, without requiring special handling for static vs
dynamic IRQ definitions in DT vs non-DT paths. This also makes it possible
for domains with static mappings to adopt whichever tree model best fits
their needs, rather than simply restricting them to linear revmaps.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
[grant.likely: Reorganized irq_domain_associate{,_many} to have all logic in one place]
[grant.likely: Add error checking for unallocated irq_descs at associate time]
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Rob Herring <rob.herring@calxeda.com>
include/linux/irqdomain.h
kernel/irq/irqdomain.c