summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2011-01-07 12:02:11 +0900
committerPaul Mundt <lethal@linux-sh.org>2011-01-07 12:02:11 +0900
commitc0312b33daa721a92633181fd4fe508484c81a2d (patch)
tree295b45ade75a7044066bb392eaa619a7f2c52d49
parent6ef9f6fd8eb22f4838e9b0006d16936511e3f7f8 (diff)
ARM: mach-shmobile: update for GIC changes.
This fixes up the SMP support to use the refactored GIC APIs. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
-rw-r--r--arch/arm/mach-shmobile/entry-gic.S8
-rw-r--r--arch/arm/mach-shmobile/include/mach/smp.h6
-rw-r--r--arch/arm/mach-shmobile/intc-sh73a0.c4
-rw-r--r--arch/arm/mach-shmobile/smp-sh73a0.c2
4 files changed, 9 insertions, 11 deletions
diff --git a/arch/arm/mach-shmobile/entry-gic.S b/arch/arm/mach-shmobile/entry-gic.S
index 6e4fa471519..e20239b08c8 100644
--- a/arch/arm/mach-shmobile/entry-gic.S
+++ b/arch/arm/mach-shmobile/entry-gic.S
@@ -2,19 +2,17 @@
* ARM Interrupt demux handler using GIC
*
* Copyright (C) 2010 Magnus Damm
- * Copyright (C) 2010 Renesas Solutions Corp.
+ * Copyright (C) 2011 Paul Mundt
+ * Copyright (C) 2010 - 2011 Renesas Solutions Corp.
*
* This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any
* warranty of any kind, whether express or implied.
*/
+#include <asm/assembler.h>
#include <asm/entry-macro-multi.S>
#include <asm/hardware/gic.h>
#include <asm/hardware/entry-macro-gic.S>
- .macro get_irqnr_preamble, base, tmp
- ldr \base, =(0xf0000100)
- .endm
-
arch_irq_handler shmobile_handle_irq_gic
diff --git a/arch/arm/mach-shmobile/include/mach/smp.h b/arch/arm/mach-shmobile/include/mach/smp.h
index f4a35ff82c6..50db94e927a 100644
--- a/arch/arm/mach-shmobile/include/mach/smp.h
+++ b/arch/arm/mach-shmobile/include/mach/smp.h
@@ -2,15 +2,15 @@
#define __MACH_SMP_H
#include <asm/hardware/gic.h>
-#include <asm/smp_mpidr.h>
/*
* We use IRQ1 as the IPI
*/
-static inline void smp_cross_call(const struct cpumask *mask)
+static inline void smp_cross_call(const struct cpumask *mask, int ipi)
{
#if defined(CONFIG_ARM_GIC)
- gic_raise_softirq(mask, 1);
+ gic_raise_softirq(mask, ipi);
#endif
}
+
#endif
diff --git a/arch/arm/mach-shmobile/intc-sh73a0.c b/arch/arm/mach-shmobile/intc-sh73a0.c
index 5af2be07c2b..322d8d57cbc 100644
--- a/arch/arm/mach-shmobile/intc-sh73a0.c
+++ b/arch/arm/mach-shmobile/intc-sh73a0.c
@@ -252,10 +252,10 @@ static irqreturn_t sh73a0_intcs_demux(int irq, void *dev_id)
void __init sh73a0_init_irq(void)
{
+ void __iomem *gic_base = __io(0xf0001000);
void __iomem *intevtsa = ioremap_nocache(0xffd20100, PAGE_SIZE);
- gic_dist_init(0, __io(0xf0001000), 29);
- gic_cpu_init(0, __io(0xf0000100));
+ gic_init(0, 29, gic_base, gic_base);
register_intc_controller(&intcs_desc);
diff --git a/arch/arm/mach-shmobile/smp-sh73a0.c b/arch/arm/mach-shmobile/smp-sh73a0.c
index 4e71fd416cd..a156d2108df 100644
--- a/arch/arm/mach-shmobile/smp-sh73a0.c
+++ b/arch/arm/mach-shmobile/smp-sh73a0.c
@@ -64,7 +64,7 @@ unsigned int __init sh73a0_get_core_count(void)
void __cpuinit sh73a0_secondary_init(unsigned int cpu)
{
- gic_cpu_init(0, __io(0xf0000100));
+ gic_secondary_init(0);
}
int __cpuinit sh73a0_boot_secondary(unsigned int cpu)