arm: tegra: tweak cpu-emc ratio
Donghan Ryu [Tue, 20 May 2014 00:59:24 +0000 (09:59 +0900)]
the old cpu-emc ratio is probably not very optimal
for newer CPUs with higher max CPU and EMC frequencies.
It would be better if have a table of these per CPU
architecture but tuning this hard-coded value for now
won't make things any worse.

Also, much lower CPU_AVG_ACT_THRESHOLD is used for
tegra12x and tegra13x

Bug 1455015
Bug 1473244
Bug 1497785
Bug 1500639
Bug 1504328
Bug 200004223

Change-Id: I96d4d4d36474c1d7f1d62762666e944fbd04b03e
Signed-off-by: Donghan Ryu <dryu@nvidia.com>
Reviewed-on: http://git-master/r/411700
Reviewed-by: Riham Haidar <rhaidar@nvidia.com>
Tested-by: Riham Haidar <rhaidar@nvidia.com>

arch/arm/mach-tegra/tegra12_clocks.c
arch/arm/mach-tegra/tegra3_actmon.c

index b21ee9e..c231263 100644 (file)
@@ -9339,11 +9339,11 @@ unsigned long tegra_emc_to_cpu_ratio(unsigned long cpu_rate)
        if (cpu_rate >= 1300000)
                return emc_max_rate;    /* cpu >= 1.3GHz, emc max */
        else if (cpu_rate >= 975000)
-               return 400000000;       /* cpu >= 975 MHz, emc 400 MHz */
+               return 550000000;       /* cpu >= 975 MHz, emc 550 MHz */
        else if (cpu_rate >= 725000)
-               return  200000000;      /* cpu >= 725 MHz, emc 200 MHz */
+               return  350000000;      /* cpu >= 725 MHz, emc 350 MHz */
        else if (cpu_rate >= 500000)
-               return  100000000;      /* cpu >= 500 MHz, emc 100 MHz */
+               return  150000000;      /* cpu >= 500 MHz, emc 150 MHz */
        else if (cpu_rate >= 275000)
                return  50000000;       /* cpu >= 275 MHz, emc 50 MHz */
        else
index 83e96ba..11517b0 100644 (file)
@@ -601,8 +601,11 @@ static struct actmon_dev actmon_dev_avp = {
        },
 };
 
-
+#if defined(CONFIG_ARCH_TEGRA_12x_SOC) || defined(CONFIG_ARCH_TEGRA_13x_SOC)
+#define CPU_AVG_ACT_THRESHOLD 2000
+#else
 #define CPU_AVG_ACT_THRESHOLD 50000
+#endif
 /* EMC-cpu activity monitor: frequency sampling device:
  * activity counter is incremented every 256 memory transactions, and
  * each transaction takes 2 EMC clocks; count_weight = 512 on Tegra3.