Workaround anomaly 432:
The bfrom_SysControl() firmware function does not clear the SIC_IWR1
register before executing the PLL programming sequence.  Therefore, any
interrupt enabled in the SIC_IWR1 register prior to the call to
bfrom_SysControl() can prematurely terminate the idle sequence required
for the PLL to relock properly. SIC_IWR0 is properly handled.

Signed-off-by: Mike Frysinger <vap...@gentoo.org>
---
 cpu/blackfin/initcode.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/cpu/blackfin/initcode.c b/cpu/blackfin/initcode.c
index 23d683a..5e48564 100644
--- a/cpu/blackfin/initcode.c
+++ b/cpu/blackfin/initcode.c
@@ -272,8 +272,14 @@ void initcode(ADI_BOOT_DATA *bootstruct)
                memory_settings.uwPllCtl = CONFIG_PLL_CTL_VAL;
                memory_settings.uwPllDiv = CONFIG_PLL_DIV_VAL;
                memory_settings.uwPllLockCnt = CONFIG_PLL_LOCKCNT_VAL;
+#if ANOMALY_05000432
+               bfin_write_SIC_IWR1(0);
+#endif
                syscontrol(SYSCTRL_WRITE | SYSCTRL_VRCTL | SYSCTRL_PLLCTL | 
SYSCTRL_PLLDIV | SYSCTRL_LOCKCNT |
                        (CONFIG_VR_CTL_VAL & FREQ_MASK ? SYSCTRL_INTVOLTAGE : 
SYSCTRL_EXTVOLTAGE), &memory_settings, NULL);
+#if ANOMALY_05000432
+               bfin_write_SIC_IWR1(-1);
+#endif
        } else {
                serial_putc('L');
 
-- 
1.6.1.2

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to