summaryrefslogtreecommitdiff
path: root/drivers/mxc/pm/dvfs_dptc.c
diff options
context:
space:
mode:
authorQuinn Jensen <quinn.jensen@freescale.com>2007-05-24 18:23:44 -0600
committerQuinn Jensen <quinn.jensen@freescale.com>2007-05-24 18:23:44 -0600
commit5d8e701238c30a8b2df8bc5b116fad8a41a3e89c (patch)
treef96c34e145e7bd1f3cd147996d57cfa3c6ac2837 /drivers/mxc/pm/dvfs_dptc.c
parent26e4293d9a31fc36ffcbf68118bb50e1251fa527 (diff)
Bugzilla 563: MX31 register swizzle work-around
A problem has been discovered with MX31-TO2 silicon where a general register is loaded with an address constant from a PC-relative location. Upon going indirect through this register, the address value contained in the register will have been rotated right by 8 bits, causing a memory fault. At present the cause of the rotation is not known. This patch implements a work around to this problem, although why it works is still unknown. http://www.bitshrine.org/gpp/linux-2.6.19.2-mx31_TO2_reg_swizzle_workaround.patch
Diffstat (limited to 'drivers/mxc/pm/dvfs_dptc.c')
-rw-r--r--drivers/mxc/pm/dvfs_dptc.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/mxc/pm/dvfs_dptc.c b/drivers/mxc/pm/dvfs_dptc.c
index 40c5a79d7b59..cbbd9b51ef46 100644
--- a/drivers/mxc/pm/dvfs_dptc.c
+++ b/drivers/mxc/pm/dvfs_dptc.c
@@ -422,7 +422,11 @@ static int __init dvfs_dptc_init_default_table(void)
return -ENOMEM;
}
+#ifdef CONFIG_MX31_TO2_REG_SWIZZLE_WORKAROUND
+ table_str = default_table_str_rev2;
+#else
table_str = default_table_str;
+#endif
if (cpu_is_mx31()) {
if (system_rev < CHIP_REV_2_0) {
clk = clk_get(NULL, "ckih");
@@ -435,8 +439,10 @@ static int __init dvfs_dptc_init_default_table(void)
}
} else {
#ifdef CONFIG_ARCH_MX3
+#ifndef CONFIG_MX31_TO2_REG_SWIZZLE_WORKAROUND
table_str = default_table_str_rev2;
#endif
+#endif
}
clk_put(clk);
}