[PATCH 90/133] [Jaunty SRU] ARM.imx51 Freescale:ENGR00112279 DVFS CORE: Frequency and voltage keep changing up and down
Brad Figg
brad.figg at canonical.com
Thu Jul 9 16:49:20 UTC 2009
From: Nancy Chen <Nancy.Chen at freescale.com>
DVFS CORE: GP frequency and voltage keep changing up and down
with UBUNTU system if DVFS core is enabled.
Signed-off-by: Nancy Chen <Nancy.Chen at freescale.com>
Signed-off-by: Brad Figg <brad.figg at canonical.com>
---
arch/arm/mach-mx51/devices.c | 6 +++---
arch/arm/plat-mxc/dvfs_core.c | 15 +++++++++------
2 files changed, 12 insertions(+), 9 deletions(-)
diff --git a/arch/arm/mach-mx51/devices.c b/arch/arm/mach-mx51/devices.c
index 915a4f6..5b9aa9a 100644
--- a/arch/arm/mach-mx51/devices.c
+++ b/arch/arm/mach-mx51/devices.c
@@ -780,12 +780,12 @@ struct mxc_dvfs_platform_data dvfs_core_data = {
.div3ck_mask = 0xE0000000,
.div3ck_offset = 29,
.div3ck_val = 2,
- .emac_val = 0x10,
+ .emac_val = 0x08,
.upthr_val = 25,
.dnthr_val = 9,
.pncthr_val = 33,
- .upcnt_val = 3,
- .dncnt_val = 3,
+ .upcnt_val = 10,
+ .dncnt_val = 10,
.delay_time = 30,
.num_wp = 2,
};
diff --git a/arch/arm/plat-mxc/dvfs_core.c b/arch/arm/plat-mxc/dvfs_core.c
index 52b5db6..d34ce60 100644
--- a/arch/arm/plat-mxc/dvfs_core.c
+++ b/arch/arm/plat-mxc/dvfs_core.c
@@ -215,9 +215,7 @@ static int set_cpu_freq(int wp)
reg &=
~(MXC_GPCVCR_VINC_MASK | MXC_GPCVCR_VCNTU_MASK |
MXC_GPCVCR_VCNT_MASK);
- reg |=
- (1 << MXC_GPCVCR_VCNTU_OFFSET) |
- (100 << MXC_GPCVCR_VCNT_OFFSET);
+ reg |= (1 << MXC_GPCVCR_VCNTU_OFFSET) | (100 << MXC_GPCVCR_VCNT_OFFSET);
__raw_writel(reg, dvfs_data->gpc_vcr_reg_addr);
if (rate < org_cpu_rate) {
@@ -301,7 +299,7 @@ static int init_dvfs_controller(void)
/* Set EMAC value */
__raw_writel((dvfs_data->emac_val << MXC_DVFSEMAC_EMAC_OFFSET),
- dvfs_data->dvfs_emac_reg_addr);
+ dvfs_data->dvfs_emac_reg_addr);
return 0;
}
@@ -390,7 +388,7 @@ static void dvfs_core_workqueue_handler(struct work_struct *work)
if (ret == 0)
set_high_bus_freq();
}
- }
+ }
#if defined(CONFIG_CPU_FREQ)
if (cpufreq_trig_needed == 1) {
@@ -443,6 +441,12 @@ static void stop_dvfs(void)
set_high_bus_freq();
set_cpu_freq(curr_wp);
+#if defined(CONFIG_CPU_FREQ)
+ if (cpufreq_trig_needed == 1) {
+ cpufreq_trig_needed = 0;
+ cpufreq_update_policy(0);
+ }
+#endif
}
clk_disable(dvfs_clk);
@@ -460,7 +464,6 @@ static ssize_t dvfs_enable_show(struct device *dev,
return sprintf(buf, "DVFS is disabled\n");
}
-
static ssize_t dvfs_enable_store(struct device *dev,
struct device_attribute *attr,
const char *buf, size_t size)
--
1.6.0.4
More information about the kernel-team
mailing list