Skip to contentSkip to conversation

ARM: irq: add a mach/fiq.h inclusion for SPARSE_IRQ build

PATCH New Shawn Guo 3 participants 5 messages Jun 13, 2012 Arm (32-bit)

lore
Share & tools
lore

Shawn Guo

author
#0 lore raw

PATCH 1/1 ARM: irq: add a mach/fiq.h inclusion for SPARSE_IRQ build

The commit a2be01b (ARM: only include mach/irqs.h for !SPARSE_IRQ) makes mach/irqs.h only be included for !SPARSE_IRQ build. There are a nubmer of platforms have FIQ_START defined in mach/irqs.h.

arch/arm/mach-at91/include/mach/irqs.h:#define FIQ_START AT91_ID_FIQ
arch/arm/mach-rpc/include/mach/irqs.h:#define FIQ_START 64
arch/arm/mach-s3c24xx/include/mach/irqs.h:#define FIQ_START IRQ_EINT0
arch/arm/plat-mxc/include/mach/irqs.h:#define FIQ_START 0
arch/arm/plat-omap/include/plat/irqs.h:#define FIQ_START 1024

If SPARSE_IRQ is enabled for any of these platforms, the following compile error will be seen.

arch/arm/kernel/fiq.c: In function ?enable_fiq?:
arch/arm/kernel/fiq.c:127:19: error: ?FIQ_START? undeclared (first use in this function) arch/arm/kernel/fiq.c:127:19: note: each undeclared identifier is reported only once for each function it appears in arch/arm/kernel/fiq.c: In function ?disable_fiq?:
arch/arm/kernel/fiq.c:132:20: error: ?FIQ_START? undeclared (first use in this function)

So before we can remove the reference to FIQ_START in fiq.c, we need a way out. The patch adds a mach/fiq.h inclusion for SPARSE_IRQ build in asm/irq.h, so that platform can have a chance to provide FIQ_START.

---
 arch/arm/include/asm/irq.h |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
arch/arm/include/asm/irq.h +1 -0
index 35c21c3..3fa390d 100644
@@ -7,6 +7,7 @@
 #include <mach/irqs.h>
 #else
 #define NR_IRQS NR_IRQS_LEGACY
+#include <mach/fiq.h>
 #endif
 
 #ifndef irq_canonicalize
Signature · 1 line
1.7.5.4
author
#1 lore raw

PATCH 1/1 ARM: irq: add a mach/fiq.h inclusion for SPARSE_IRQ build

Quoted 33 lines · Shawn Guo

The commit a2be01b (ARM: only include mach/irqs.h for !SPARSE_IRQ) makes mach/irqs.h only be included for !SPARSE_IRQ build. There are a nubmer of platforms have FIQ_START defined in mach/irqs.h.

arch/arm/mach-at91/include/mach/irqs.h:#define FIQ_START AT91_ID_FIQ
arch/arm/mach-rpc/include/mach/irqs.h:#define FIQ_START 64
arch/arm/mach-s3c24xx/include/mach/irqs.h:#define FIQ_START IRQ_EINT0
arch/arm/plat-mxc/include/mach/irqs.h:#define FIQ_START 0
arch/arm/plat-omap/include/plat/irqs.h:#define FIQ_START 1024

If SPARSE_IRQ is enabled for any of these platforms, the following compile error will be seen.

arch/arm/kernel/fiq.c: In function ?enable_fiq?:
arch/arm/kernel/fiq.c:127:19: error: ?FIQ_START? undeclared (first use in this function) arch/arm/kernel/fiq.c:127:19: note: each undeclared identifier is reported only once for each function it appears in arch/arm/kernel/fiq.c: In function ?disable_fiq?:
arch/arm/kernel/fiq.c:132:20: error: ?FIQ_START? undeclared (first use in this function)

So before we can remove the reference to FIQ_START in fiq.c, we need a way out. The patch adds a mach/fiq.h inclusion for SPARSE_IRQ build in asm/irq.h, so that platform can have a chance to provide FIQ_START.

---
 arch/arm/include/asm/irq.h |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
arch/arm/include/asm/irq.h +0 -0
index 35c21c3..3fa390d 100644

arch/arm/include/asm/irq.h line 12

Quoted 6 lines
arch/arm/include/asm/irq.h +1 -0
@@ -7,6 +7,7 @@
 #include <mach/irqs.h>
 #else
 #define NR_IRQS NR_IRQS_LEGACY
+#include <mach/fiq.h>
 #endif
 

Damned. Just realized that this will break those platforms with SPARSE_IRQ enabled but no mach/fiq.h provided.

Any sensible solution there?

Signature · 2 lines
Regards,
Shawn
author
#2 lore raw

PATCH 1/1 ARM: irq: add a mach/fiq.h inclusion for SPARSE_IRQ build

Quoted 3 lines · Shawn Guo

Damned. Just realized that this will break those platforms with SPARSE_IRQ enabled but no mach/fiq.h provided.

What about adding #ifdef CONFIG_FIQ check for the inclusion?

--8<---

arch/arm/include/asm/irq.h +3 -0
index 35c21c3..8db119a 100644
@@ -7,6 +7,9 @@
 #include <mach/irqs.h>
 #else
 #define NR_IRQS NR_IRQS_LEGACY
+#ifdef CONFIG_FIQ
+#include <mach/fiq.h>
+#endif
 #endif
 
 #ifndef irq_canonicalize

--->8--

Regards,
Shawn

#3 lore raw

PATCH 1/1 ARM: irq: add a mach/fiq.h inclusion for SPARSE_IRQ build

In reply to Shawn Guo
Quoted 19 lines · Shawn Guo

The commit a2be01b (ARM: only include mach/irqs.h for !SPARSE_IRQ) makes mach/irqs.h only be included for !SPARSE_IRQ build. There are a nubmer of platforms have FIQ_START defined in mach/irqs.h.

arch/arm/mach-at91/include/mach/irqs.h:#define FIQ_START AT91_ID_FIQ
arch/arm/mach-rpc/include/mach/irqs.h:#define FIQ_START 64
arch/arm/mach-s3c24xx/include/mach/irqs.h:#define FIQ_START IRQ_EINT0
arch/arm/plat-mxc/include/mach/irqs.h:#define FIQ_START 0
arch/arm/plat-omap/include/plat/irqs.h:#define FIQ_START 1024

If SPARSE_IRQ is enabled for any of these platforms, the following compile error will be seen.

arch/arm/kernel/fiq.c: In function ?enable_fiq?:
arch/arm/kernel/fiq.c:127:19: error: ?FIQ_START? undeclared (first use in this function) arch/arm/kernel/fiq.c:127:19: note: each undeclared identifier is reported only once for each function it appears in arch/arm/kernel/fiq.c: In function ?disable_fiq?:
arch/arm/kernel/fiq.c:132:20: error: ?FIQ_START? undeclared (first use in this function)

Quoted 3 lines

So before we can remove the reference to FIQ_START in fiq.c, we need a way out. The patch adds a mach/fiq.h inclusion for SPARSE_IRQ build in asm/irq.h, so that platform can have a chance to provide FIQ_START.

This is a step backward. Please let's get rid of FIQ_START instead. This should be removed from enable_fiq() and disable_fiq(), and the arguments to those functions should use the absolute IRQ number instead. for instance, there is FIQ_FLOPPYDATA in mach-rpc/include/mach/irqs.h which could be defined as 64 instead of 0, etc.

Nicolas

#4 lore raw

PATCH 1/1 ARM: irq: add a mach/fiq.h inclusion for SPARSE_IRQ build

In reply to Shawn Guo
Quoted 5 lines · Shawn Guo

The commit a2be01b (ARM: only include mach/irqs.h for !SPARSE_IRQ) makes mach/irqs.h only be included for !SPARSE_IRQ build. There are a nubmer of platforms have FIQ_START defined in mach/irqs.h.

arch/arm/mach-at91/include/mach/irqs.h:#define FIQ_START AT91_ID_FIQ

This one doesn't appear to actually be used anywhere.

Quoted 14 lines

arch/arm/mach-rpc/include/mach/irqs.h:#define FIQ_START 64
arch/arm/mach-s3c24xx/include/mach/irqs.h:#define FIQ_START IRQ_EINT0
arch/arm/plat-mxc/include/mach/irqs.h:#define FIQ_START 0
arch/arm/plat-omap/include/plat/irqs.h:#define FIQ_START 1024

If SPARSE_IRQ is enabled for any of these platforms, the following compile error will be seen.

arch/arm/kernel/fiq.c: In function ?enable_fiq?:
arch/arm/kernel/fiq.c:127:19: error: ?FIQ_START? undeclared (first use in this function) arch/arm/kernel/fiq.c:127:19: note: each undeclared identifier is reported only once for each function it appears in arch/arm/kernel/fiq.c: In function ?disable_fiq?:
arch/arm/kernel/fiq.c:132:20: error: ?FIQ_START? undeclared (first use in this function)

Quoted 3 lines

So before we can remove the reference to FIQ_START in fiq.c, we need a way out. The patch adds a mach/fiq.h inclusion for SPARSE_IRQ build in asm/irq.h, so that platform can have a chance to provide FIQ_START.

The whole point of enabling SPARSE_IRQ was to eliminate a mach include and now this adds a new one. This is not the right solution.

I think we need to remove FIQ_START from enable_fiq/disable_fiq and make the platforms add any private offset they need. Only rpc and imx call enable_fiq/disable_fiq. imx offset is 0, so that leaves only rpc.

The other simple solution is make fiq_start a variable.

Rob

Quoted 17 lines
---
 arch/arm/include/asm/irq.h |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
arch/arm/include/asm/irq.h +1 -0
index 35c21c3..3fa390d 100644
@@ -7,6 +7,7 @@
 #include <mach/irqs.h>
 #else
 #define NR_IRQS NR_IRQS_LEGACY
+#include <mach/fiq.h>
 #endif
 
 #ifndef irq_canonicalize