ARM: pxa: avoid accessing interrupt registers directly
authorEric Miao <eric.y.miao@gmail.com>
Wed, 27 Apr 2011 14:48:04 +0000 (22:48 +0800)
committerEric Miao <eric.y.miao@gmail.com>
Tue, 12 Jul 2011 11:45:21 +0000 (19:45 +0800)
Signed-off-by: Eric Miao <eric.y.miao@gmail.com>
arch/arm/mach-pxa/include/mach/irqs.h
arch/arm/mach-pxa/include/mach/regs-intc.h [deleted file]
arch/arm/mach-pxa/irq.c
arch/arm/mach-pxa/pxa3xx.c
arch/arm/mach-pxa/pxa95x.c

index 038402404e3932e78c702181c6d62cd4e4d145a7..a94c694b4af9e82204457fc2f216e98c6e810506 100644 (file)
 
 #define NR_IRQS                        (IRQ_BOARD_START)
 
+#ifndef __ASSEMBLY__
+struct irq_data;
+
+void pxa_mask_irq(struct irq_data *);
+void pxa_unmask_irq(struct irq_data *);
+#endif
+
 #endif /* __ASM_MACH_IRQS_H */
diff --git a/arch/arm/mach-pxa/include/mach/regs-intc.h b/arch/arm/mach-pxa/include/mach/regs-intc.h
deleted file mode 100644 (file)
index 662288e..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#ifndef __ASM_MACH_REGS_INTC_H
-#define __ASM_MACH_REGS_INTC_H
-
-#include <mach/hardware.h>
-
-/*
- * Interrupt Controller
- */
-
-#define ICIP           __REG(0x40D00000)  /* Interrupt Controller IRQ Pending Register */
-#define ICMR           __REG(0x40D00004)  /* Interrupt Controller Mask Register */
-#define ICLR           __REG(0x40D00008)  /* Interrupt Controller Level Register */
-#define ICFP           __REG(0x40D0000C)  /* Interrupt Controller FIQ Pending Register */
-#define ICPR           __REG(0x40D00010)  /* Interrupt Controller Pending Register */
-#define ICCR           __REG(0x40D00014)  /* Interrupt Controller Control Register */
-#define ICHP           __REG(0x40D00018)  /* Interrupt Controller Highest Priority Register */
-
-#define ICIP2          __REG(0x40D0009C)  /* Interrupt Controller IRQ Pending Register 2 */
-#define ICMR2          __REG(0x40D000A0)  /* Interrupt Controller Mask Register 2 */
-#define ICLR2          __REG(0x40D000A4)  /* Interrupt Controller Level Register 2 */
-#define ICFP2          __REG(0x40D000A8)  /* Interrupt Controller FIQ Pending Register 2 */
-#define ICPR2          __REG(0x40D000AC)  /* Interrupt Controller Pending Register 2 */
-
-#define ICIP3          __REG(0x40D00130)  /* Interrupt Controller IRQ Pending Register 3 */
-#define ICMR3          __REG(0x40D00134)  /* Interrupt Controller Mask Register 3 */
-#define ICLR3          __REG(0x40D00138)  /* Interrupt Controller Level Register 3 */
-#define ICFP3          __REG(0x40D0013C)  /* Interrupt Controller FIQ Pending Register 3 */
-#define ICPR3          __REG(0x40D00140)  /* Interrupt Controller Pending Register 3 */
-
-#endif /* __ASM_MACH_REGS_INTC_H */
index 32ed551bf9c5d363f8181a590e79157ed002f0c1..c89c0e40fe321c45eaf2444f46e8b4da9ba1d73e 100644 (file)
@@ -64,7 +64,7 @@ static inline void __iomem *irq_base(int i)
        return (void __iomem *)io_p2v(phys_base[i]);
 }
 
-static void pxa_mask_irq(struct irq_data *d)
+void pxa_mask_irq(struct irq_data *d)
 {
        void __iomem *base = irq_data_get_irq_chip_data(d);
        uint32_t icmr = __raw_readl(base + ICMR);
@@ -73,7 +73,7 @@ static void pxa_mask_irq(struct irq_data *d)
        __raw_writel(icmr, base + ICMR);
 }
 
-static void pxa_unmask_irq(struct irq_data *d)
+void pxa_unmask_irq(struct irq_data *d)
 {
        void __iomem *base = irq_data_get_irq_chip_data(d);
        uint32_t icmr = __raw_readl(base + ICMR);
index 8521d7d6f1dab39402ef5c36ed3abece4cf17f89..e66dc1562cdadafbd9c5bfd5773cc2ff3d3c88d9 100644 (file)
@@ -31,7 +31,6 @@
 #include <mach/ohci.h>
 #include <mach/pm.h>
 #include <mach/dma.h>
-#include <mach/regs-intc.h>
 #include <mach/smemc.h>
 
 #include "generic.h"
@@ -328,13 +327,13 @@ static void pxa_ack_ext_wakeup(struct irq_data *d)
 
 static void pxa_mask_ext_wakeup(struct irq_data *d)
 {
-       ICMR2 &= ~(1 << ((d->irq - PXA_IRQ(0)) & 0x1f));
+       pxa_mask_irq(d);
        PECR &= ~PECR_IE(d->irq - IRQ_WAKEUP0);
 }
 
 static void pxa_unmask_ext_wakeup(struct irq_data *d)
 {
-       ICMR2 |= 1 << ((d->irq - PXA_IRQ(0)) & 0x1f);
+       pxa_unmask_irq(d);
        PECR |= PECR_IE(d->irq - IRQ_WAKEUP0);
 }
 
index ecc82a330fad09a6747beca85c9007598ded30f5..0ee166b61f81399448d48c119f101829b1a85158 100644 (file)
@@ -27,7 +27,6 @@
 #include <mach/reset.h>
 #include <mach/pm.h>
 #include <mach/dma.h>
-#include <mach/regs-intc.h>
 
 #include "generic.h"
 #include "devices.h"