summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Liu <lliubbo@gmail.com>2011-12-27 15:05:53 +0800
committersonic <sonic@sonic-linuxvm.(none)>2013-03-04 13:42:07 +0800
commit49c2da53b7aa63f68118fa9ffa5c5e546440ebb2 (patch)
tree3034e5856175c7e276b1425a1a28e493b1ad99b3
parent4a207e8b9a1ecc3e87d5a63bb5442dbcd50bd4b6 (diff)
downloadu-boot-imx-49c2da53b7aa63f68118fa9ffa5c5e546440ebb2.zip
u-boot-imx-49c2da53b7aa63f68118fa9ffa5c5e546440ebb2.tar.gz
u-boot-imx-49c2da53b7aa63f68118fa9ffa5c5e546440ebb2.tar.bz2
blackfin: bf60x: add hw watchdog support
Signed-off-by: Bob Liu <lliubbo@gmail.com> Signed-off-by: Sonic Zhang <sonic.zhang@analog.com> Signed-off-by: Sonic Zhang <sonic.adi@gmail.com>
-rw-r--r--arch/blackfin/cpu/initcode.c13
-rw-r--r--arch/blackfin/cpu/start.S2
-rw-r--r--include/configs/bf609-ezkit.h1
3 files changed, 16 insertions, 0 deletions
diff --git a/arch/blackfin/cpu/initcode.c b/arch/blackfin/cpu/initcode.c
index a717148..ce9a435 100644
--- a/arch/blackfin/cpu/initcode.c
+++ b/arch/blackfin/cpu/initcode.c
@@ -461,8 +461,21 @@ program_early_devices(ADI_BOOT_DATA *bs, uint *sdivB, uint *divB, uint *vcoB)
*/
if (CONFIG_BFIN_BOOT_MODE != BFIN_BOOT_BYPASS) {
serial_putc('e');
+#ifdef __ADSPBF60x__
+ bfin_write_SEC_GCTL(0x2);
+ SSYNC();
+ bfin_write_SEC_FCTL(0xc1);
+ bfin_write_SEC_SCTL(2, bfin_read_SEC_SCTL(2) | 0x6);
+
+ bfin_write_SEC_CCTL(0x2);
+ SSYNC();
+ bfin_write_SEC_GCTL(0x1);
+ bfin_write_SEC_CCTL(0x1);
+#endif
bfin_write_WDOG_CNT(MSEC_TO_SCLK(CONFIG_HW_WATCHDOG_TIMEOUT_INITCODE));
+#if CONFIG_BFIN_BOOT_MODE != BFIN_BOOT_UART
bfin_write_WDOG_CTL(0);
+#endif
serial_putc('f');
}
#endif
diff --git a/arch/blackfin/cpu/start.S b/arch/blackfin/cpu/start.S
index 90b4d1a..7155fc8 100644
--- a/arch/blackfin/cpu/start.S
+++ b/arch/blackfin/cpu/start.S
@@ -65,6 +65,7 @@ ENTRY(_start)
p5.h = HI(COREMMR_BASE);
#ifdef CONFIG_HW_WATCHDOG
+#ifndef __ADSPBF60x__
# ifndef CONFIG_HW_WATCHDOG_TIMEOUT_START
# define CONFIG_HW_WATCHDOG_TIMEOUT_START 5000
# endif
@@ -78,6 +79,7 @@ ENTRY(_start)
/* fire up the watchdog - R0.L above needs to be 0x0000 */
W[p4 + (WDOG_CTL - SYSMMR_BASE)] = r0;
#endif
+#endif
/* Turn on the serial for debugging the init process */
serial_early_init
diff --git a/include/configs/bf609-ezkit.h b/include/configs/bf609-ezkit.h
index 6dffab8..02149fa 100644
--- a/include/configs/bf609-ezkit.h
+++ b/include/configs/bf609-ezkit.h
@@ -63,6 +63,7 @@
#define CONFIG_SYS_MONITOR_LEN (768 * 1024)
#define CONFIG_SYS_MALLOC_LEN (512 * 1024)
+#define CONFIG_HW_WATCHDOG
/*
* Network Settings
*/