summaryrefslogtreecommitdiffstats
path: root/arch/arm/plat-stmp3xxx/irq.c
diff options
context:
space:
mode:
authordmitry pervushin <dpervushin@embeddedalley.com>2009-05-31 13:32:11 +0100
committerRussell King <rmk+kernel@arm.linux.org.uk>2009-05-31 13:55:56 +0100
commit98f420b23a62e0c9df78c5851860d47bf1bc87dd (patch)
treeb7e88059454d2410b1a2107c17a748a03d366fdf /arch/arm/plat-stmp3xxx/irq.c
parent3f52326a85666c1cb0210eb5556ef3d483933cfc (diff)
downloadop-kernel-dev-98f420b23a62e0c9df78c5851860d47bf1bc87dd.zip
op-kernel-dev-98f420b23a62e0c9df78c5851860d47bf1bc87dd.tar.gz
[ARM] 5532/1: Freescale STMP: register definitions [3/3]
Replace HW_zzz register access macros by regular __raw_readl/__raw_writel calls Signed-off-by: dmitry pervushin <dpervushin@embeddedalley.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/plat-stmp3xxx/irq.c')
-rw-r--r--arch/arm/plat-stmp3xxx/irq.c22
1 files changed, 7 insertions, 15 deletions
diff --git a/arch/arm/plat-stmp3xxx/irq.c b/arch/arm/plat-stmp3xxx/irq.c
index cb36590..20de4e0 100644
--- a/arch/arm/plat-stmp3xxx/irq.c
+++ b/arch/arm/plat-stmp3xxx/irq.c
@@ -22,21 +22,15 @@
#include <linux/sysdev.h>
#include <mach/stmp3xxx.h>
+#include <mach/platform.h>
#include <mach/regs-icoll.h>
void __init stmp3xxx_init_irq(struct irq_chip *chip)
{
- unsigned int i;
+ unsigned int i, lv;
/* Reset the interrupt controller */
- HW_ICOLL_CTRL_CLR(BM_ICOLL_CTRL_CLKGATE);
- udelay(10);
- HW_ICOLL_CTRL_CLR(BM_ICOLL_CTRL_SFTRST);
- udelay(10);
- HW_ICOLL_CTRL_SET(BM_ICOLL_CTRL_SFTRST);
- while (!(HW_ICOLL_CTRL_RD() & BM_ICOLL_CTRL_CLKGATE))
- continue;
- HW_ICOLL_CTRL_CLR(BM_ICOLL_CTRL_SFTRST | BM_ICOLL_CTRL_CLKGATE);
+ stmp3xxx_reset_block(REGS_ICOLL_BASE + HW_ICOLL_CTRL, true);
/* Disable all interrupts initially */
for (i = 0; i < NR_REAL_IRQS; i++) {
@@ -47,13 +41,11 @@ void __init stmp3xxx_init_irq(struct irq_chip *chip)
}
/* Ensure vector is cleared */
- HW_ICOLL_LEVELACK_WR(1);
- HW_ICOLL_LEVELACK_WR(2);
- HW_ICOLL_LEVELACK_WR(4);
- HW_ICOLL_LEVELACK_WR(8);
+ for (lv = 0; lv < 4; lv++)
+ __raw_writel(1 << lv, REGS_ICOLL_BASE + HW_ICOLL_LEVELACK);
+ __raw_writel(0, REGS_ICOLL_BASE + HW_ICOLL_VECTOR);
- HW_ICOLL_VECTOR_WR(0);
/* Barrier */
- (void) HW_ICOLL_STAT_RD();
+ (void)__raw_readl(REGS_ICOLL_BASE + HW_ICOLL_STAT);
}
OpenPOWER on IntegriCloud