Skip to content

Commit

Permalink
ARM: shmobile: Per-CPU SMP boot / sleep code for SCU SoCs
Browse files Browse the repository at this point in the history
Hook in the per-CPU boot and sleep code in the shared
mach-shmobile SCU code. CPUs may be kept in the asm
routine until ->boot_secondary() when the per-CPU
boot vector is installed. At the end of ->die() the
asm sleep routine is invoked.

Signed-off-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
  • Loading branch information
Magnus Damm authored and Simon Horman committed Aug 6, 2013
1 parent cc61591 commit 1d33a35
Showing 1 changed file with 11 additions and 6 deletions.
17 changes: 11 additions & 6 deletions arch/arm/mach-shmobile/platsmp-scu.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,9 @@

void __init shmobile_smp_scu_prepare_cpus(unsigned int max_cpus)
{
shmobile_boot_fn = virt_to_phys(shmobile_boot_scu);
shmobile_boot_arg = (unsigned long)shmobile_scu_base;
/* install boot code shared by all CPUs */
shmobile_boot_fn = virt_to_phys(shmobile_smp_boot);
shmobile_boot_arg = MPIDR_HWID_BITMASK;

/* enable SCU and cache coherency on booting CPU */
scu_enable(shmobile_scu_base);
Expand All @@ -28,22 +29,26 @@ void __init shmobile_smp_scu_prepare_cpus(unsigned int max_cpus)

int shmobile_smp_scu_boot_secondary(unsigned int cpu, struct task_struct *idle)
{
/* do nothing for now */
/* For this particular CPU register SCU boot vector */
shmobile_smp_hook(cpu, virt_to_phys(shmobile_boot_scu),
(unsigned long)shmobile_scu_base);
return 0;
}

#ifdef CONFIG_HOTPLUG_CPU
void shmobile_smp_scu_cpu_die(unsigned int cpu)
{
/* For this particular CPU deregister boot vector */
shmobile_smp_hook(cpu, 0, 0);

dsb();
flush_cache_all();

/* disable cache coherency */
scu_power_mode(shmobile_scu_base, SCU_PM_POWEROFF);

/* Endless loop until reset */
while (1)
cpu_do_idle();
/* jump to shared mach-shmobile sleep / reset code */
shmobile_smp_sleep();
}

static int shmobile_smp_scu_psr_core_disabled(int cpu)
Expand Down

0 comments on commit 1d33a35

Please sign in to comment.