aboutsummaryrefslogtreecommitdiffstats
path: root/arch/blackfin/mach-common
diff options
context:
space:
mode:
authorMichael Hennerich <michael.hennerich@analog.com>2008-08-13 05:41:13 -0400
committerBryan Wu <cooloney@kernel.org>2008-08-13 05:41:13 -0400
commit55546ac45dfb4087437bedaed43400630c96680e (patch)
tree6c1d1a055e880b3aecf6e85bd6883740b34df1aa /arch/blackfin/mach-common
parentd3d0ac23a308f92fc5e5e2846ca40e7bffa5cec3 (diff)
Blackfin arch: workaround SIC_IWR1 reset bug, by keeping MDMA0/1 always enabled in SIC_IWR1.
This way we ensure that reboot succeeds. Signed-off-by: Michael Hennerich <michael.hennerich@analog.com> Signed-off-by: Bryan Wu <cooloney@kernel.org>
Diffstat (limited to 'arch/blackfin/mach-common')
-rw-r--r--arch/blackfin/mach-common/ints-priority.c9
-rw-r--r--arch/blackfin/mach-common/pm.c9
2 files changed, 18 insertions, 0 deletions
diff --git a/arch/blackfin/mach-common/ints-priority.c b/arch/blackfin/mach-common/ints-priority.c
index 4271ef3f201a..7f9df4ee7346 100644
--- a/arch/blackfin/mach-common/ints-priority.c
+++ b/arch/blackfin/mach-common/ints-priority.c
@@ -1069,7 +1069,16 @@ int __init init_arch_irq(void)
1069 1069
1070#if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) || defined(CONFIG_BF561) 1070#if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) || defined(CONFIG_BF561)
1071 bfin_write_SIC_IWR0(IWR_DISABLE_ALL); 1071 bfin_write_SIC_IWR0(IWR_DISABLE_ALL);
1072#if defined(CONFIG_BF52x)
1073 /* BF52x system reset does not properly reset SIC_IWR1 which
1074 * will screw up the bootrom as it relies on MDMA0/1 waking it
1075 * up from IDLE instructions. See this report for more info:
1076 * http://blackfin.uclinux.org/gf/tracker/4323
1077 */
1078 bfin_write_SIC_IWR1(IWR_ENABLE(10) | IWR_ENABLE(11));
1079#else
1072 bfin_write_SIC_IWR1(IWR_DISABLE_ALL); 1080 bfin_write_SIC_IWR1(IWR_DISABLE_ALL);
1081#endif
1073# ifdef CONFIG_BF54x 1082# ifdef CONFIG_BF54x
1074 bfin_write_SIC_IWR2(IWR_DISABLE_ALL); 1083 bfin_write_SIC_IWR2(IWR_DISABLE_ALL);
1075# endif 1084# endif
diff --git a/arch/blackfin/mach-common/pm.c b/arch/blackfin/mach-common/pm.c
index a17ace3e0e41..e28c6af1f415 100644
--- a/arch/blackfin/mach-common/pm.c
+++ b/arch/blackfin/mach-common/pm.c
@@ -84,7 +84,16 @@ void bfin_pm_suspend_standby_enter(void)
84 84
85#if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) || defined(CONFIG_BF561) 85#if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) || defined(CONFIG_BF561)
86 bfin_write_SIC_IWR0(IWR_DISABLE_ALL); 86 bfin_write_SIC_IWR0(IWR_DISABLE_ALL);
87#if defined(CONFIG_BF52x)
88 /* BF52x system reset does not properly reset SIC_IWR1 which
89 * will screw up the bootrom as it relies on MDMA0/1 waking it
90 * up from IDLE instructions. See this report for more info:
91 * http://blackfin.uclinux.org/gf/tracker/4323
92 */
93 bfin_write_SIC_IWR1(IWR_ENABLE(10) | IWR_ENABLE(11));
94#else
87 bfin_write_SIC_IWR1(IWR_DISABLE_ALL); 95 bfin_write_SIC_IWR1(IWR_DISABLE_ALL);
96#endif
88# ifdef CONFIG_BF54x 97# ifdef CONFIG_BF54x
89 bfin_write_SIC_IWR2(IWR_DISABLE_ALL); 98 bfin_write_SIC_IWR2(IWR_DISABLE_ALL);
90# endif 99# endif