15 #include <linux/errno.h>
17 #include <linux/device.h>
22 #include <asm/cacheflush.h>
42 #define EVP_CPU_RESET_VECTOR \
43 (IO_ADDRESS(TEGRA_EXCEPTION_VECTORS_BASE) + 0x100)
45 static void __cpuinit tegra_secondary_init(
unsigned int cpu)
56 static int tegra20_power_up_cpu(
unsigned int cpu)
59 tegra_enable_cpu_clock(cpu);
67 static int tegra30_power_up_cpu(
unsigned int cpu)
92 tegra_enable_cpu_clock(cpu);
116 tegra_put_cpu_in_reset(cpu);
128 status = tegra20_power_up_cpu(cpu);
131 status = tegra30_power_up_cpu(cpu);
142 tegra_cpu_out_of_reset(cpu);
151 static void __init tegra_smp_init_cpus(
void)
155 if (ncores > nr_cpu_ids) {
156 pr_warn(
"SMP: %u cores greater than maximum (%u), clipping\n",
161 for (i = 0; i < ncores; i++)
167 static void __init tegra_smp_prepare_cpus(
unsigned int max_cpus)
174 .smp_init_cpus = tegra_smp_init_cpus,
175 .smp_prepare_cpus = tegra_smp_prepare_cpus,
176 .smp_secondary_init = tegra_secondary_init,
177 .smp_boot_secondary = tegra_boot_secondary,
178 #ifdef CONFIG_HOTPLUG_CPU