/* 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
}\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
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