[U-Boot] [PATCH 2/2] at91sam9263ek: active watchdog support via at91sam9263ek_wdt_config
Giulio Benetti
giulio.benetti at micronovasrl.com
Thu Jun 18 17:30:49 CEST 2009
I think that with this patch at91 watchdog is enough, it reduces code that
is not yet used and I think it HAS NOT to be used(no wdt init).
Signed-off-by: giulio.benetti at micronovasrl.com
diff -urpN b/drivers/watchdog/at91sam9_wdt.c
a/drivers/watchdog/at91sam9_wdt.c
--- b/drivers/watchdog/at91sam9_wdt.c 2009-06-14 21:30:39.000000000 +0200
+++ a/drivers/watchdog/at91sam9_wdt.c 2009-06-18 17:26:26.000000000 +0200
@@ -5,6 +5,7 @@
*
* Copyright (C) 2008 Jean-Christophe PLAGNIOL-VILLARD
<plagnioj at jcrosoft.com>
* Copyright (C) 2008 Renaud CERRATO r.cerrato at til-technologies.fr
+ * Giulio Benetti <giulio.benetti at micronovasrl.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -24,56 +25,7 @@
#include <asm/arch/io.h>
#include <asm/arch/at91_wdt.h>
-/*
- * AT91SAM9 watchdog runs a 12bit counter @ 256Hz,
- * use this to convert a watchdog
- * value from/to milliseconds.
- */
-#define ms_to_ticks(t) (((t << 8) / 1000) - 1)
-#define ticks_to_ms(t) (((t + 1) * 1000) >> 8)
-
-/* Hardware timeout in seconds */
-#define WDT_HW_TIMEOUT 2
-
-/*
- * Set the watchdog time interval in 1/256Hz (write-once)
- * Counter is 12 bit.
- */
-static int at91_wdt_settimeout(unsigned int timeout)
-{
- unsigned int reg;
- unsigned int mr;
-
- /* Check if disabled */
- mr = at91_sys_read(AT91_WDT_MR);
- if (mr & AT91_WDT_WDDIS) {
- printf("sorry, watchdog is disabled\n");
- return -1;
- }
-
- /*
- * All counting occurs at SLOW_CLOCK / 128 = 256 Hz
- *
- * Since WDV is a 12-bit counter, the maximum period is
- * 4096 / 256 = 16 seconds.
- */
- reg = AT91_WDT_WDRSTEN /* causes watchdog reset */
- /* | AT91_WDT_WDRPROC causes processor reset only */
- | AT91_WDT_WDDBGHLT /* disabled in debug mode */
- | AT91_WDT_WDD /* restart at any time */
- | (timeout & AT91_WDT_WDV); /* timer value */
- at91_sys_write(AT91_WDT_MR, reg);
-
- return 0;
-}
-
void hw_watchdog_reset(void)
{
at91_sys_write(AT91_WDT_CR, AT91_WDT_KEY | AT91_WDT_WDRSTT);
}
-
-void hw_watchdog_init(void)
-{
- /* 16 seconds timer, resets enabled */
- at91_wdt_settimeout(ms_to_ticks(WDT_HW_TIMEOUT * 1000));
-}
--
Giulio Benetti
R&D
Micronova srl
More information about the U-Boot
mailing list