ARM: shmobile: Use DT for SMP on EMEV2 and KZM9D
authorMagnus Damm <damm@opensource.se>
Tue, 2 Jul 2013 09:28:14 +0000 (18:28 +0900)
committerSimon Horman <horms+renesas@verge.net.au>
Wed, 17 Jul 2013 01:06:46 +0000 (10:06 +0900)
Rework the EMEV2 SMP code to rely on DT for CPU information
instead of reading out number of CPU cores from the SCU.

Signed-off-by: Magnus Damm <damm@opensource.se>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
arch/arm/mach-shmobile/smp-emev2.c

index 80991b35f4ac0af6a7878c3e79cc97d2704995fb..97871655b716db6993ae84b1acba0e2d80187a66 100644 (file)
@@ -38,9 +38,12 @@ static int __cpuinit emev2_boot_secondary(unsigned int cpu, struct task_struct *
 
 static void __init emev2_smp_prepare_cpus(unsigned int max_cpus)
 {
+       /* setup EMEV2 specific SCU base, enable */
+       shmobile_scu_base = ioremap(EMEV2_SCU_BASE, PAGE_SIZE);
        scu_enable(shmobile_scu_base);
 
        /* Tell ROM loader about our vector (in headsmp-scu.S, headsmp.S) */
+       emev2_clock_init(); /* need ioremapped SMU */
        emev2_set_boot_vector(__pa(shmobile_boot_vector));
        shmobile_boot_fn = virt_to_phys(shmobile_boot_scu);
        shmobile_boot_arg = (unsigned long)shmobile_scu_base;
@@ -49,21 +52,7 @@ static void __init emev2_smp_prepare_cpus(unsigned int max_cpus)
        scu_power_mode(shmobile_scu_base, SCU_PM_NORMAL);
 }
 
-static void __init emev2_smp_init_cpus(void)
-{
-       unsigned int ncores;
-
-       /* setup EMEV2 specific SCU base */
-       shmobile_scu_base = ioremap(EMEV2_SCU_BASE, PAGE_SIZE);
-       emev2_clock_init(); /* need ioremapped SMU */
-
-       ncores = shmobile_scu_base ? scu_get_core_count(shmobile_scu_base) : 1;
-
-       shmobile_smp_init_cpus(ncores);
-}
-
 struct smp_operations emev2_smp_ops __initdata = {
-       .smp_init_cpus          = emev2_smp_init_cpus,
        .smp_prepare_cpus       = emev2_smp_prepare_cpus,
        .smp_boot_secondary     = emev2_boot_secondary,
 };