Skip to contentSkip to conversation

mx31ads: Provide a name for EXPIO interrupt chip

PATCH New Mark Brown 2 participants 5 messages Jan 5, 2010

Subsystems (3)
lore
Share & tools
lore

Mark Brown

author
#0 lore raw

PATCH 1/2 mx31ads: Provide a name for EXPIO interrupt chip

This makes it a bit more obvious in genirq diagnostics that they aren't handled by the i.MX interrupt controller.

---
 arch/arm/mach-mx3/mx31ads.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
arch/arm/mach-mx3/mx31ads.c +1 -0
index a579f4c..c486c2f 100644
@@ -173,6 +173,7 @@ static void expio_unmask_irq(u32 irq)
 }
 
 static struct irq_chip expio_irq_chip = {
+	.name = "EXPIO(CPLD)",
 	.ack = expio_ack_irq,
 	.mask = expio_mask_irq,
 	.unmask = expio_unmask_irq,
Signature · 1 line
1.6.5.7
author
#1 lore raw

PATCH 2/2 mx31ads: Provide an IRQ range to the WM835x on the 1133-EV1 module

The WM8350 core won't actually use the range yet, but it will in future and the platform data to configure it is there now.

---
 arch/arm/mach-mx3/mx31ads.c           |    1 +
 arch/arm/plat-mxc/include/mach/irqs.h |    7 +++++++
 2 files changed, 8 insertions(+), 0 deletions(-)
arch/arm/mach-mx3/mx31ads.c +1 -0
index c486c2f..ed8498a 100644
@@ -452,6 +452,7 @@ static int mx31_wm8350_init(struct wm8350 *wm8350)
 
 static struct wm8350_platform_data __initdata mx31_wm8350_pdata = {
 	.init = mx31_wm8350_init,
+	.irq_base = MXC_BOARD_IRQ_START + MXC_MAX_EXP_IO_LINES,
 };
 #endif
 
arch/arm/plat-mxc/include/mach/irqs.h +7 -0
index ead9d59..ae801e5 100644
@@ -37,7 +37,14 @@
  * within sensible limits.
  */
 #define MXC_BOARD_IRQ_START	(MXC_INTERNAL_IRQS + MXC_GPIO_IRQS)
+
+#if defined(CONFIG_MACH_MX31ADS_WM1133_EV1) && !defined(MXC_BOARD_IRQS)
+#define MXC_BOARD_IRQS  80
+#endif
+
+#ifndef MXC_BOARD_IRQS
 #define MXC_BOARD_IRQS	16
+#endif
 
 #define MXC_IPU_IRQ_START	(MXC_BOARD_IRQ_START + MXC_BOARD_IRQS)
 
Signature · 1 line
1.6.5.7
maintainer
#2 lore raw

PATCH 2/2 mx31ads: Provide an IRQ range to the WM835x on the 1133-EV1 module

Quoted 27 lines · Mark Brown

The WM8350 core won't actually use the range yet, but it will in future and the platform data to configure it is there now.

---
 arch/arm/mach-mx3/mx31ads.c           |    1 +
 arch/arm/plat-mxc/include/mach/irqs.h |    7 +++++++
 2 files changed, 8 insertions(+), 0 deletions(-)
arch/arm/mach-mx3/mx31ads.c +1 -0
index c486c2f..ed8498a 100644
@@ -452,6 +452,7 @@ static int mx31_wm8350_init(struct wm8350 *wm8350)
 
 static struct wm8350_platform_data __initdata mx31_wm8350_pdata = {
 	.init = mx31_wm8350_init,
+	.irq_base = MXC_BOARD_IRQ_START + MXC_MAX_EXP_IO_LINES,
 };
 #endif
 
arch/arm/plat-mxc/include/mach/irqs.h +0 -0
index ead9d59..ae801e5 100644
@@ -37,7 +37,14 @@
  * within sensible limits.

arch/arm/plat-mxc/include/mach/irqs.h line 47

Quoted 10 lines
arch/arm/plat-mxc/include/mach/irqs.h +7 -0
  */
 #define MXC_BOARD_IRQ_START	(MXC_INTERNAL_IRQS + MXC_GPIO_IRQS)
+
+#if defined(CONFIG_MACH_MX31ADS_WM1133_EV1) && !defined(MXC_BOARD_IRQS)
+#define MXC_BOARD_IRQS  80
+#endif
+
+#ifndef MXC_BOARD_IRQS
 #define MXC_BOARD_IRQS	16
+#endif

I just had a look how other architectures handle this and I like it how pxa does it:

/*
* 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. 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_H4700)
#define IRQ_BOARD_END (IRQ_BOARD_START + 70)
#elif defined(CONFIG_MACH_ZYLONITE)
#define IRQ_BOARD_END (IRQ_BOARD_START + 32)
#elif defined(CONFIG_PXA_EZX)
#define IRQ_BOARD_END (IRQ_BOARD_START + 23)
#else
#define IRQ_BOARD_END (IRQ_BOARD_START + 16)
#endif

Can we do the same, so something like this?

/*
* 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. There will be 16 IRQs by default. If it is not enough,
* MXC_BOARD_IRQS 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.
*/

#if defined(CONFIG_MACH_MX31ADS_WM1133_EV1)
#define MXC_BOARD_IRQS 80
#else
#define MXC_BOARD_IRQS 16
#endif

Sascha

Signature · 4 lines
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |
author
#3 lore raw

PATCH 2/2 mx31ads: Provide an IRQ range to the WM835x on the 1133-EV1 module

Quoted 2 lines · Sascha Hauer

I just had a look how other architectures handle this and I like it how pxa does it:

Yeah, my thinking here was to achieve the same thing with something more like the existing i.MX code plus a bit more whitespace for legibility - the end result is pretty much the same but a little less dense. You'd wind up with an ordered stack of these ifdef blocks very much like those that PXA has. I'm not that fussed either way, really, but I do like a bit more whitespace.

maintainer
#4 lore raw

PATCH 2/2 mx31ads: Provide an IRQ range to the WM835x on the 1133-EV1 module

Quoted 11 lines · Mark Brown
Quoted 2 lines · Sascha Hauer

I just had a look how other architectures handle this and I like it how pxa does it:

Yeah, my thinking here was to achieve the same thing with something more like the existing i.MX code plus a bit more whitespace for legibility - the end result is pretty much the same but a little less dense. You'd wind up with an ordered stack of these ifdef blocks very much like those that PXA has. I'm not that fussed either way, really, but I do like a bit more whitespace.

Feel free to add more whitespaces. What I like about pxa is that it makes clear that MXC_BOARD_IRQS is defined exactly in this file (no additional #ifndef MXC_BOARD_IRQS) and that it describes how people should add additional irqs.

Sascha

Signature · 4 lines
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |