fiq_debugger: keep alive when watchdog enabled
author黄涛 <huangtao@rock-chips.com>
Wed, 30 Jan 2013 02:29:05 +0000 (10:29 +0800)
committer黄涛 <huangtao@rock-chips.com>
Wed, 30 Jan 2013 02:34:16 +0000 (10:34 +0800)
arch/arm/common/fiq_debugger.c

index d92bafa616e58ee0022639da64356411c0ad869e..152f38f5a022b195125fc476afb768d4347c09df 100644 (file)
 
 #include "fiq_debugger_ringbuf.h"
 
+#ifdef CONFIG_RK29_WATCHDOG
+extern void rk29_wdt_keepalive(void);
+#define wdt_keepalive() rk29_wdt_keepalive()
+#else
+#define wdt_keepalive() do {} while (0)
+#endif
+
 #define DEBUG_MAX 64
 #define CMD_COUNT 0x0f
 #define MAX_UNHANDLED_FIQ_COUNT 1000000
@@ -210,6 +217,7 @@ static void dump_kernel_log(struct fiq_debugger_state *state)
        saved_oip = oops_in_progress;
        oops_in_progress = 1;
        for (;;) {
+               wdt_keepalive();
                ret = log_buf_copy(buf, idx, 1023);
                if (ret <= 0)
                        break;
@@ -229,6 +237,8 @@ static void dump_last_kernel_log(struct fiq_debugger_state *state)
        char *s = last_log_get(&size);
 
        for (i = 0; i < size; i++) {
+               if (i % 1024 == 0)
+                       wdt_keepalive();
                c = s[i];
                if (c == '\n') {
                        state->pdata->uart_putc(state->pdev, '\r');