[ARM] pxa: allow IRQ_BOARD_END to be customized and make zylonite to use it
authorPhilipp Zabel <philipp.zabel@gmail.com>
Fri, 17 Apr 2009 09:47:57 +0000 (11:47 +0200)
committerEric Miao <eric.y.miao@gmail.com>
Fri, 5 Jun 2009 02:32:20 +0000 (10:32 +0800)
The default value is 16 IRQs. Zylonite needs 32, ASIC3 based boards need 70.

My problem is still that due to the way IRQ_GPIO is hardcoded, ASIC3 based boards
need 70 IRQs starting at IRQ_BOARD_START. If I define ASIC3 IRQs similar to LoCoMo
or SA1111, things break as soon as something selects PXA_HAVE_BOARD_IRQS.
Increasing the default number of board IRQs to 70 instead doesn't seem very nice.

Signed-off-by: Philipp Zabel <philipp.zabel@gmail.com>
Signed-off-by: Eric Miao <eric.miao@marvell.com>
arch/arm/mach-pxa/Kconfig
arch/arm/mach-pxa/include/mach/irqs.h

index 47747f96f12582d52d9984ff150e2482cec33eb4..3b34f34db204a789331b940dd97f56735b758647 100644 (file)
@@ -280,6 +280,7 @@ config MACH_ZYLONITE
        select PXA3xx
        select PXA_SSP
        select HAVE_PWM
+       select PXA_HAVE_BOARD_IRQS
 
 config MACH_LITTLETON
        bool "PXA3xx Form Factor Platform (aka Littleton)"
index 32bb4a2eb7f13660f43889d5aec7cdcdec07c97e..ebf38bbb347ff2bf8b13df1a6112adfe56b29764 100644 (file)
 #define IRQ_TO_GPIO(i) (((i) < IRQ_GPIO(2)) ? ((i) - IRQ_GPIO0) : IRQ_TO_GPIO_2_x(i))
 
 /*
- * The next 16 interrupts are for board specific purposes.  Since
+ * The following interrupts are for board specific purposes. Since
  * the kernel can only run on one machine at a time, we can re-use
- * these.  If you need more, increase IRQ_BOARD_END, but keep it
- * within sensible limits.
+ * these.  There will be 16 IRQs by default.  If it is not enough,
+ * IRQ_BOARD_END is allowed be customized for each board, but keep
+ * the numbers within sensible limits and in descending order, so
+ * when multiple config options are selected, the maximum will be
+ * used.
  */
 #define IRQ_BOARD_START                (PXA_GPIO_IRQ_BASE + PXA_GPIO_IRQ_NUM)
+
+#if defined(CONFIG_MACH_ZYLONITE)
+#define IRQ_BOARD_END          (IRQ_BOARD_START + 32)
+#else
 #define IRQ_BOARD_END          (IRQ_BOARD_START + 16)
+#endif
 
 #define IRQ_SA1111_START       (IRQ_BOARD_END)
 #define IRQ_GPAIN0             (IRQ_BOARD_END + 0)
 #define NR_IRQS                        (IRQ_LOCOMO_SPI_TEND + 1)
 #elif defined(CONFIG_PXA_HAVE_BOARD_IRQS)
 #define NR_IRQS                        (IRQ_BOARD_END)
-#elif defined(CONFIG_MACH_ZYLONITE)
-#define NR_IRQS                        (IRQ_BOARD_START + 32)
 #else
 #define NR_IRQS                        (IRQ_BOARD_START)
 #endif