rk3188: adjust leakage table && support Low freq add some voltage for low leakage...
authorchenxing <chenxing@rock-chips.com>
Fri, 30 Aug 2013 09:58:53 +0000 (17:58 +0800)
committerchenxing <chenxing@rock-chips.com>
Fri, 30 Aug 2013 09:58:53 +0000 (17:58 +0800)
arch/arm/mach-rk3188/dvfs.c

index b3f69742e20790b92d02fdddc2e02a73df6aee75..e11a07c11b7c1311c898c59092f3f21ee58ed7c0 100755 (executable)
@@ -93,9 +93,12 @@ static struct lkg_maxvolt lkg_volt_table[] = {
 /* avdd_com & vdd_arm short circuit */\r
 static struct lkg_maxvolt lkg_volt_table[] = {\r
        {.leakage_level = 3,    .maxvolt = 1350 * 1000},\r
+       {.leakage_level = 5,    .maxvolt = 1300 * 1000},\r
        {.leakage_level = 15,   .maxvolt = 1250 * 1000},\r
 };\r
 #endif\r
+#define LOW_LEAKAGE_BOUND      2\r
+#define VOLT_COMPENSATION      (25000) // uV\r
 static int leakage_level = 0;\r
 #define MHZ    (1000 * 1000)\r
 #define KHZ    (1000)\r
@@ -154,6 +157,7 @@ void dvfs_adjust_table_lmtvolt(struct clk *clk, struct cpufreq_frequency_table *
                }\r
        }\r
 \r
+       // limit high voltage\r
        for (i = 0; table[i].frequency != CPUFREQ_TABLE_END; i++) {\r
                if (table[i].index > maxvolt) {\r
                        printk("\t\tadjust table freq=%d KHz, index=%d mV", table[i].frequency, table[i].index);\r
@@ -161,6 +165,26 @@ void dvfs_adjust_table_lmtvolt(struct clk *clk, struct cpufreq_frequency_table *
                        printk(" to index=%d mV\n", table[i].index);\r
                }\r
        }\r
+#if 0\r
+       /*\r
+        * Low freq add some voltage for low leakage chip.\r
+        * Open it when necessary.\r
+        *\r
+        */\r
+\r
+       // limit low voltage\r
+       if (strncmp(clk->dvfs_info->name, "cpu", strlen("cpu")) == 0\r
+                       && leakage_level <= LOW_LEAKAGE_BOUND) {\r
+               for (i = 0; table[i].frequency != CPUFREQ_TABLE_END; i++) {\r
+                       if (table[i].index + VOLT_COMPENSATION < maxvolt) {\r
+                               printk("\t\tadjust table freq=%d KHz, index=%d mV",\r
+                                               table[i].frequency, table[i].index);\r
+                               table[i].index += VOLT_COMPENSATION;\r
+                               printk(" to index=%d mV\n", table[i].index);\r
+                       }\r
+               }\r
+       }\r
+#endif\r
 }\r
 \r
 #define NO_VOLT_DIFF\r