Thread (43 messages) 43 messages, 5 authors, 2012-01-02

[PATCH 3/9] irq: convert generic-chip to use irq_domain

From: Rob Herring <hidden>
Date: 2011-12-14 23:29:12
Also in: linux-devicetree, lkml

On 12/14/2011 03:26 PM, Grant Likely wrote:
On Wed, Dec 14, 2011 at 2:23 PM, Rob Herring [off-list ref] wrote:
quoted

On 12/14/2011 03:14 PM, Grant Likely wrote:
quoted
On Wed, Dec 14, 2011 at 8:28 AM, Rob Herring [off-list ref] wrote:
quoted
From: Rob Herring <redacted>

Add irq domain support to irq generic-chip. This enables users of
generic-chip to support dynamic irq assignment needed for DT interrupt
binding. Users must be converted to use irq_data.hwirq for determining
local interrupt numbers rather than using the Linux irq number.

irq_base is kept for now as there are a few users of it. Once they
are converted to use the irq domain, it can be removed.

Signed-off-by: Rob Herring <redacted>
Cc: Thomas Gleixner <redacted>
---
 include/linux/irq.h       |    2 +-
 kernel/irq/Kconfig        |    1 +
 kernel/irq/generic-chip.c |   57 ++++++++++++++++++++++++++++----------------
 3 files changed, 38 insertions(+), 22 deletions(-)
diff --git a/include/linux/irq.h b/include/linux/irq.h
index bff29c5..9ba8a30 100644
--- a/include/linux/irq.h
+++ b/include/linux/irq.h
@@ -664,7 +664,7 @@ struct irq_chip_generic {
       raw_spinlock_t          lock;
       void __iomem            *reg_base;
       unsigned int            irq_base;
-       unsigned int            irq_cnt;
+       struct irq_domain       *domain;
Instead of making domain a pointer, why not embed the structure inside
irq_chip_generic?  I don't see a reason for keeping it separate.
There is a circular header dependency between irq.h and irq_domain.h.
Maybe I just need to put the include of irq_domain.h just above here
rather than the top of the file.
Yes, try that.  I'd rather get the dependency problem sorted out.
Alternately, problematic bit of irq_domain.h can be moved to another
header.
Things always start out so simple...

Removing irq.h from irqdomain.h fixes my original problem. However, that
breaks on x86 since x86 has it's own struct irq_domain. Some ifdef'ing
could fix it since x86 doesn't use irq_chip_generic. Didn't you have
converting x86 in your original irq domain patches?

Rob
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help