-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ARM: shmobile: Introduce shared SCU SMP boot code
Add SMP boot functions for SCU equipped mach-shmobile SoCs. At this point shmobile_smp_scu_prepare_cpus() controls the SCU and installs boot fn and arg, while shmobile_smp_scu_boot_secondary() currently does nothing. In the future the boot function and arg install code will be reworked, so the empty function is ground work for that. 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
8b3e32c
commit c970d4e
Showing
2 changed files
with
34 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
/* | ||
* SMP support for SoCs with SCU covered by mach-shmobile | ||
* | ||
* Copyright (C) 2013 Magnus Damm | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 as | ||
* published by the Free Software Foundation. | ||
*/ | ||
#include <linux/init.h> | ||
#include <linux/io.h> | ||
#include <linux/smp.h> | ||
#include <asm/smp_plat.h> | ||
#include <asm/smp_scu.h> | ||
#include <mach/common.h> | ||
|
||
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; | ||
|
||
/* enable SCU and cache coherency on booting CPU */ | ||
scu_enable(shmobile_scu_base); | ||
scu_power_mode(shmobile_scu_base, SCU_PM_NORMAL); | ||
} | ||
|
||
int shmobile_smp_scu_boot_secondary(unsigned int cpu, struct task_struct *idle) | ||
{ | ||
/* do nothing for now */ | ||
return 0; | ||
} |