serial_pl010.c: add watchdog support
authorStuart Wood <stuart.wood@labxtechnologies.com>
Mon, 2 Jun 2008 20:42:19 +0000 (16:42 -0400)
committerWolfgang Denk <wd@denx.de>
Sun, 29 Jun 2008 17:53:30 +0000 (19:53 +0200)
Signed-off-by: Stuart Wood <stuart.wood@labxtechnologies.com>
drivers/serial/serial_pl010.c

index 417b6aeda646afbf95fce370eba7ed3c198f52f4..134ed0967fb77b0d8d5e17e0e67c49dfc897e645 100644 (file)
@@ -29,6 +29,7 @@
 /* Should be fairly simple to make it work with the PL010 as well */
 
 #include <common.h>
+#include <watchdog.h>
 
 #ifdef CFG_PL010_SERIAL
 
@@ -137,7 +138,8 @@ void serial_setbrg (void)
 static void pl010_putc (int portnum, char c)
 {
        /* Wait until there is space in the FIFO */
-       while (IO_READ (port[portnum] + UART_PL01x_FR) & UART_PL01x_FR_TXFF);
+       while (IO_READ (port[portnum] + UART_PL01x_FR) & UART_PL01x_FR_TXFF)
+               WATCHDOG_RESET();
 
        /* Send the character */
        IO_WRITE (port[portnum] + UART_PL01x_DR, c);
@@ -148,7 +150,8 @@ static int pl010_getc (int portnum)
        unsigned int data;
 
        /* Wait until there is data in the FIFO */
-       while (IO_READ (port[portnum] + UART_PL01x_FR) & UART_PL01x_FR_RXFE);
+       while (IO_READ (port[portnum] + UART_PL01x_FR) & UART_PL01x_FR_RXFE)
+               WATCHDOG_RESET();
 
        data = IO_READ (port[portnum] + UART_PL01x_DR);
 
@@ -164,6 +167,7 @@ static int pl010_getc (int portnum)
 
 static int pl010_tstc (int portnum)
 {
+       WATCHDOG_RESET();
        return !(IO_READ (port[portnum] + UART_PL01x_FR) &
                 UART_PL01x_FR_RXFE);
 }