summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Roese <sr@denx.de>2010-10-12 09:39:45 +0200
committerWolfgang Denk <wd@denx.de>2010-10-13 21:59:31 +0200
commit1a2d9b30e31e2b7ed0acb64bfb2290911e3c9efb (patch)
tree99bbf7feeedc5135ea9dd31e26ee829aa5217ca7
parent4bbfd3e279d70afc89456048e024e6b923c9d325 (diff)
ns16550: Add WATCHDOG_RESET to putc for short watchdog timeout boards
Call watchdog_reset() upon newline. This is done here in putc since the environment code uses a single puts() to print the complete envrironment upon "printenv". So we can't put this watchdog call in puts(). This is needed for boards with a very short watchdog timeout, like the lwmon5 with a 100ms timeout. Without this patch this board resets in the commands with long outputs, like "printenv" or "fdt print". Note that the image size is not increased with this patch when CONFIG_HW_WATCHDOG or CONFIG_WATCHDOG are not defined since the compiler optimizes this additional code away. Signed-off-by: Stefan Roese <sr@denx.de> Fix typo in comment. Signed-off-by: Wolfgang Denk <wd@denx.de>
-rw-r--r--drivers/serial/ns16550.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/serial/ns16550.c b/drivers/serial/ns16550.c
index 7e833fde5fd..32f24dee50e 100644
--- a/drivers/serial/ns16550.c
+++ b/drivers/serial/ns16550.c
@@ -70,6 +70,15 @@ void NS16550_putc (NS16550_t com_port, char c)
{
while ((serial_in(&com_port->lsr) & UART_LSR_THRE) == 0);
serial_out(c, &com_port->thr);
+
+ /*
+ * Call watchdog_reset() upon newline. This is done here in putc
+ * since the environment code uses a single puts() to print the complete
+ * environment upon "printenv". So we can't put this watchdog call
+ * in puts().
+ */
+ if (c == '\n')
+ WATCHDOG_RESET();
}
#ifndef CONFIG_NS16550_MIN_FUNCTIONS