diff options
author | Seshendra Gadagottu <sgadagottu@nvidia.com> | 2012-12-11 16:25:53 -0800 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2013-09-14 12:48:33 -0700 |
commit | 6e6a3384d0e05897be6a2f95954950e791da73ae (patch) | |
tree | 64d2e9983fb43727bf7057a74f316cd123d006ff | |
parent | 478c0034e6b9c075ffd2c49e0465e96f71c1445b (diff) |
ARM: tegra14x: secondary cpu booting sequence
Secondary cpu boot sequence corrected for first time
booting and hot-plug booting. For first time booting
partition power un-gating needs to be done. For hot-plug
booting flow controller needs to be programmed for
SCLK event trigger.
Also fixed the merge issue in tegar11 code, so that
tegra11 hotplug code can be re-used.
Change-Id: I65673fb221b47eb24169d8c8cd7a8ebb1db5dd15
Signed-off-by: Seshendra Gadagottu <sgadagottu@nvidia.com>
Reviewed-on: http://git-master/r/174363
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Bo Yan <byan@nvidia.com>
-rw-r--r-- | arch/arm/mach-tegra/platsmp.c | 46 |
1 files changed, 1 insertions, 45 deletions
diff --git a/arch/arm/mach-tegra/platsmp.c b/arch/arm/mach-tegra/platsmp.c index 878a5d1e09d4..6502d1fe21a9 100644 --- a/arch/arm/mach-tegra/platsmp.c +++ b/arch/arm/mach-tegra/platsmp.c @@ -248,45 +248,6 @@ static int tegra11x_power_up_cpu(unsigned int cpu) return 0; } -static int tegra14x_power_up_cpu(unsigned int cpu) -{ - u32 reg; - int ret; - unsigned long timeout; - - BUG_ON(cpu == smp_processor_id()); - BUG_ON(is_lp_cluster()); - - cpu = cpu_logical_map(cpu); - - if (!cpu_isset(cpu, tegra_cpu_init_map)) { - ret = tegra_unpowergate_partition(TEGRA_CPU_POWERGATE_ID(cpu)); - if (ret) - goto fail; - } - - /* Wait for the power to come up. */ - timeout = jiffies + msecs_to_jiffies(2000); - - do { - if (is_cpu_powered(cpu)) - goto remove_clamps; - udelay(10); - } while (time_before(jiffies, timeout)); - ret = -ETIMEDOUT; - goto fail; - -remove_clamps: - /* Remove I/O clamps. */ - ret = tegra_powergate_remove_clamping(TEGRA_CPU_POWERGATE_ID(cpu)); -fail: - - /* Clear flow controller CSR. */ - flowctrl_write_cpu_csr(cpu, 0); - - return ret; -} - static int __cpuinit tegra_boot_secondary(unsigned int cpu, struct task_struct *idle) { int status; @@ -364,13 +325,8 @@ static int __cpuinit tegra_boot_secondary(unsigned int cpu, struct task_struct * status = tegra30_power_up_cpu(cpu); break; case TEGRA11X: - status = tegra11x_power_up_cpu(cpu); - break; case TEGRA14X: - /* set SCLK as event trigger for flow conroller */ - flowctrl_write_cpu_csr(cpu, 0x1); - flowctrl_write_cpu_halt(cpu, 0x48000000); - status = tegra14x_power_up_cpu(cpu); + status = tegra11x_power_up_cpu(cpu); break; default: status = -EINVAL; |