diff options
author | Michael Hennerich <michael.hennerich@analog.com> | 2008-08-13 05:41:13 -0400 |
---|---|---|
committer | Bryan Wu <cooloney@kernel.org> | 2008-08-13 05:41:13 -0400 |
commit | 55546ac45dfb4087437bedaed43400630c96680e (patch) | |
tree | 6c1d1a055e880b3aecf6e85bd6883740b34df1aa | |
parent | d3d0ac23a308f92fc5e5e2846ca40e7bffa5cec3 (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>
-rw-r--r-- | arch/blackfin/mach-common/ints-priority.c | 9 | ||||
-rw-r--r-- | arch/blackfin/mach-common/pm.c | 9 |
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 |