diff options
Diffstat (limited to 'target/linux/generic/patches-3.2/994-mpcore_wdt_fix_timer_mode_setup.patch')
-rw-r--r-- | target/linux/generic/patches-3.2/994-mpcore_wdt_fix_timer_mode_setup.patch | 57 |
1 files changed, 0 insertions, 57 deletions
diff --git a/target/linux/generic/patches-3.2/994-mpcore_wdt_fix_timer_mode_setup.patch b/target/linux/generic/patches-3.2/994-mpcore_wdt_fix_timer_mode_setup.patch deleted file mode 100644 index 009092376f..0000000000 --- a/target/linux/generic/patches-3.2/994-mpcore_wdt_fix_timer_mode_setup.patch +++ /dev/null @@ -1,57 +0,0 @@ -Allow watchdog to set its iterrupt as pending when it is configured -for timer mode (in other words, allow emitting interrupt). -Also add macros for all Watchdog Control Register flags. - -Signed-off-by: Vitaly Kuzmichev <vkuzmichev@mvista.com> ---- - arch/arm/include/asm/smp_twd.h | 6 ++++++ - drivers/watchdog/mpcore_wdt.c | 15 +++++++++++---- - 2 files changed, 17 insertions(+), 4 deletions(-) - ---- a/arch/arm/include/asm/smp_twd.h -+++ b/arch/arm/include/asm/smp_twd.h -@@ -18,6 +18,12 @@ - #define TWD_TIMER_CONTROL_PERIODIC (1 << 1) - #define TWD_TIMER_CONTROL_IT_ENABLE (1 << 2) - -+#define TWD_WDOG_CONTROL_ENABLE (1 << 0) -+#define TWD_WDOG_CONTROL_PERIODIC (1 << 1) -+#define TWD_WDOG_CONTROL_IT_ENABLE (1 << 2) -+#define TWD_WDOG_CONTROL_TIMER_MODE (0 << 3) -+#define TWD_WDOG_CONTROL_WATCHDOG_MODE (1 << 3) -+ - struct clock_event_device; - - extern void __iomem *twd_base; ---- a/drivers/watchdog/mpcore_wdt.c -+++ b/drivers/watchdog/mpcore_wdt.c -@@ -118,18 +118,25 @@ static void mpcore_wdt_stop(struct mpcor - - static void mpcore_wdt_start(struct mpcore_wdt *wdt) - { -+ u32 mode; -+ - dev_printk(KERN_INFO, wdt->dev, "enabling watchdog.\n"); - - /* This loads the count register but does NOT start the count yet */ - mpcore_wdt_keepalive(wdt); - -+ /* Setup watchdog - prescale=256, enable=1 */ -+ mode = (255 << 8) | TWD_WDOG_CONTROL_ENABLE; -+ - if (mpcore_noboot) { -- /* Enable watchdog - prescale=256, watchdog mode=0, enable=1 */ -- writel(0x0000FF01, wdt->base + TWD_WDOG_CONTROL); -+ /* timer mode, send interrupt */ -+ mode |= TWD_WDOG_CONTROL_TIMER_MODE | -+ TWD_WDOG_CONTROL_IT_ENABLE; - } else { -- /* Enable watchdog - prescale=256, watchdog mode=1, enable=1 */ -- writel(0x0000FF09, wdt->base + TWD_WDOG_CONTROL); -+ /* watchdog mode */ -+ mode |= TWD_WDOG_CONTROL_WATCHDOG_MODE; - } -+ writel(mode, wdt->base + TWD_WDOG_CONTROL); - } - - static int mpcore_wdt_set_heartbeat(int t) |