aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoseph Lo <josephl@nvidia.com>2013-02-26 11:28:07 -0500
committerStephen Warren <swarren@nvidia.com>2013-03-11 16:30:58 -0400
commite562b86581d2ccf3faaf55b1235b4e6438cb7712 (patch)
tree9ff3b10029796a3eb8e94c901abd8efd494fcaa3
parent7e56474456221541aab7b2fe415ff400d7c9910a (diff)
ARM: tegra: bring up secondary CPU for Tegra114
The secondary CPU can be brought up by toggling the power in PMC. Then the flow controller will release CPU to go by clearing the reset and clamp signal automatically. Based on the work by: Bo Yan <byan@nvidia.com> Signed-off-by: Joseph Lo <josephl@nvidia.com> Signed-off-by: Stephen Warren <swarren@nvidia.com>
-rw-r--r--arch/arm/mach-tegra/platsmp.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/platsmp.c b/arch/arm/mach-tegra/platsmp.c
index 601bd0c3f983..516aab28fe34 100644
--- a/arch/arm/mach-tegra/platsmp.c
+++ b/arch/arm/mach-tegra/platsmp.c
@@ -146,6 +146,12 @@ remove_clamps:
146 return 0; 146 return 0;
147} 147}
148 148
149static int tegra114_boot_secondary(unsigned int cpu, struct task_struct *idle)
150{
151 cpu = cpu_logical_map(cpu);
152 return tegra_pmc_cpu_power_on(cpu);
153}
154
149static int __cpuinit tegra_boot_secondary(unsigned int cpu, 155static int __cpuinit tegra_boot_secondary(unsigned int cpu,
150 struct task_struct *idle) 156 struct task_struct *idle)
151{ 157{
@@ -153,6 +159,8 @@ static int __cpuinit tegra_boot_secondary(unsigned int cpu,
153 return tegra20_boot_secondary(cpu, idle); 159 return tegra20_boot_secondary(cpu, idle);
154 if (IS_ENABLED(CONFIG_ARCH_TEGRA_3x_SOC) && tegra_chip_id == TEGRA30) 160 if (IS_ENABLED(CONFIG_ARCH_TEGRA_3x_SOC) && tegra_chip_id == TEGRA30)
155 return tegra30_boot_secondary(cpu, idle); 161 return tegra30_boot_secondary(cpu, idle);
162 if (IS_ENABLED(CONFIG_ARCH_TEGRA_114_SOC) && tegra_chip_id == TEGRA114)
163 return tegra114_boot_secondary(cpu, idle);
156 164
157 return -EINVAL; 165 return -EINVAL;
158} 166}