From 6f4217a5f06305d2f707b9a094154b97be39885b Mon Sep 17 00:00:00 2001 From: chenxing Date: Fri, 30 Aug 2013 17:58:53 +0800 Subject: [PATCH] rk3188: adjust leakage table && support Low freq add some voltage for low leakage chip --- arch/arm/mach-rk3188/dvfs.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/arch/arm/mach-rk3188/dvfs.c b/arch/arm/mach-rk3188/dvfs.c index b3f69742e207..e11a07c11b7c 100755 --- a/arch/arm/mach-rk3188/dvfs.c +++ b/arch/arm/mach-rk3188/dvfs.c @@ -93,9 +93,12 @@ static struct lkg_maxvolt lkg_volt_table[] = { /* avdd_com & vdd_arm short circuit */ static struct lkg_maxvolt lkg_volt_table[] = { {.leakage_level = 3, .maxvolt = 1350 * 1000}, + {.leakage_level = 5, .maxvolt = 1300 * 1000}, {.leakage_level = 15, .maxvolt = 1250 * 1000}, }; #endif +#define LOW_LEAKAGE_BOUND 2 +#define VOLT_COMPENSATION (25000) // uV static int leakage_level = 0; #define MHZ (1000 * 1000) #define KHZ (1000) @@ -154,6 +157,7 @@ void dvfs_adjust_table_lmtvolt(struct clk *clk, struct cpufreq_frequency_table * } } + // limit high voltage for (i = 0; table[i].frequency != CPUFREQ_TABLE_END; i++) { if (table[i].index > maxvolt) { printk("\t\tadjust table freq=%d KHz, index=%d mV", table[i].frequency, table[i].index); @@ -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); } } +#if 0 + /* + * Low freq add some voltage for low leakage chip. + * Open it when necessary. + * + */ + + // limit low voltage + if (strncmp(clk->dvfs_info->name, "cpu", strlen("cpu")) == 0 + && leakage_level <= LOW_LEAKAGE_BOUND) { + for (i = 0; table[i].frequency != CPUFREQ_TABLE_END; i++) { + if (table[i].index + VOLT_COMPENSATION < maxvolt) { + printk("\t\tadjust table freq=%d KHz, index=%d mV", + table[i].frequency, table[i].index); + table[i].index += VOLT_COMPENSATION; + printk(" to index=%d mV\n", table[i].index); + } + } + } +#endif } #define NO_VOLT_DIFF -- 2.34.1