Ventana: KBC: Removing the KBC usage on ventana
[linux-2.6.git] / arch / arm / mach-tegra / platsmp.c
index 5ac06c1..582810c 100644 (file)
@@ -7,7 +7,7 @@
  *  Copyright (C) 2009 Palm
  *  All Rights Reserved
  *
- *  Copyright (C) 2010 NVIDIA Corporation
+ *  Copyright (C) 2010-2011 NVIDIA Corporation
  *
  * 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
@@ -78,9 +78,7 @@ static unsigned int available_cpus(void)
 
 static int is_g_cluster_available(unsigned int cpu)
 {
-#ifdef CONFIG_ARCH_TEGRA_2x_SOC
-       return -EPERM;
-#else
+#ifdef CONFIG_TEGRA_CLUSTER_CONTROL
        u32 fuse_sku = readl(FUSE_SKU_DIRECT_CONFIG);
        u32 bond_out = readl(CAR_BOND_OUT_V);
 
@@ -96,6 +94,8 @@ static int is_g_cluster_available(unsigned int cpu)
         *        (e.g., low battery, over temperature, etc.). Add checks for
         *        these conditions. */
        return 0;
+#else
+       return -EPERM;
 #endif
 }
 
@@ -125,7 +125,7 @@ static int power_up_cpu(unsigned int cpu)
         * On first boot entry do not wait - go to direct ungate.
         */
        if (cpu_isset(cpu, tegra_cpu_init_map)) {
-               timeout = jiffies + HZ;
+               timeout = jiffies + 5;
                do {
                        if (is_cpu_powered(cpu))
                                goto remove_clamps;
@@ -136,7 +136,7 @@ static int power_up_cpu(unsigned int cpu)
        /* First boot or Flow controller did not work as expected. Try to
           directly toggle power gates. Error if direct power on also fails. */
        if (!is_cpu_powered(cpu)) {
-               ret = tegra_powergate_power_on(TEGRA_CPU_POWERGATE_ID(cpu));
+               ret = tegra_unpowergate_partition(TEGRA_CPU_POWERGATE_ID(cpu));
                if (ret)
                        goto fail;
 
@@ -188,6 +188,11 @@ int boot_secondary(unsigned int cpu, struct task_struct *idle)
 {
        int status;
 
+       /* Avoid timer calibration on slave cpus. Use the value calibrated
+        * on master cpu. This reduces the bringup time for each slave cpu
+        * by around 260ms.
+        */
+       preset_lpj = loops_per_jiffy;
        if (is_lp_cluster()) {
                struct clk *cpu_clk, *cpu_g_clk;