ARM: tegra: bring up secondary CPU for Tegra114
authorJoseph Lo <josephl@nvidia.com>
Tue, 26 Feb 2013 16:28:07 +0000 (16:28 +0000)
committerStephen Warren <swarren@nvidia.com>
Mon, 11 Mar 2013 20:30:58 +0000 (14:30 -0600)
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>
arch/arm/mach-tegra/platsmp.c

index 601bd0c3f98301cc672ee84af74146db71bcfd2d..516aab28fe34217a8f99576df6b89b99a82f39f9 100644 (file)
@@ -146,6 +146,12 @@ remove_clamps:
        return 0;
 }
 
+static int tegra114_boot_secondary(unsigned int cpu, struct task_struct *idle)
+{
+       cpu = cpu_logical_map(cpu);
+       return tegra_pmc_cpu_power_on(cpu);
+}
+
 static int __cpuinit tegra_boot_secondary(unsigned int cpu,
                                          struct task_struct *idle)
 {
@@ -153,6 +159,8 @@ static int __cpuinit tegra_boot_secondary(unsigned int cpu,
                return tegra20_boot_secondary(cpu, idle);
        if (IS_ENABLED(CONFIG_ARCH_TEGRA_3x_SOC) && tegra_chip_id == TEGRA30)
                return tegra30_boot_secondary(cpu, idle);
+       if (IS_ENABLED(CONFIG_ARCH_TEGRA_114_SOC) && tegra_chip_id == TEGRA114)
+               return tegra114_boot_secondary(cpu, idle);
 
        return -EINVAL;
 }