ARM: mach-shmobile: update for GIC changes.
authorPaul Mundt <lethal@linux-sh.org>
Fri, 7 Jan 2011 03:02:11 +0000 (12:02 +0900)
committerPaul Mundt <lethal@linux-sh.org>
Fri, 7 Jan 2011 03:02:11 +0000 (12:02 +0900)
This fixes up the SMP support to use the refactored GIC APIs.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
arch/arm/mach-shmobile/entry-gic.S
arch/arm/mach-shmobile/include/mach/smp.h
arch/arm/mach-shmobile/intc-sh73a0.c
arch/arm/mach-shmobile/smp-sh73a0.c

index 6e4fa4715199a59c263535c8d9eaa6c0b8ecb012..e20239b08c83b91cde4b516020028fb686b91d42 100644 (file)
@@ -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
index f4a35ff82c67d78f6179c75f92162070402b82cc..50db94e927adb16790b2cc404815a2b4fae84880 100644 (file)
@@ -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
index 5af2be07c2b8b5ee9345eb935143f41047ec4589..322d8d57cbcf754b09d15762bf7b0a947394c5d9 100644 (file)
@@ -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);
 
index 4e71fd416cd533a0d2903d81dbe7d03c696361fe..a156d2108df1a9cf582340155557a7a7caf3615e 100644 (file)
@@ -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)