
2009/11/10 Minkyu Kang mk7.kang@samsung.com:
Because of Frame error, Parity error and Overrun error are occured only receive operation, need to masking when error checking.
Signed-off-by: Minkyu Kang mk7.kang@samsung.com
drivers/serial/serial_s5pc1xx.c | 24 +++++++++++++++++------- 1 files changed, 17 insertions(+), 7 deletions(-)
diff --git a/drivers/serial/serial_s5pc1xx.c b/drivers/serial/serial_s5pc1xx.c index 68c06a9..e06234d 100644 --- a/drivers/serial/serial_s5pc1xx.c +++ b/drivers/serial/serial_s5pc1xx.c @@ -98,14 +98,24 @@ int serial_init_dev(const int dev_index) return 0; }
-static int serial_err_check(const int dev_index) +static int serial_err_check(const int dev_index, int op) { struct s5pc1xx_uart *const uart = s5pc1xx_get_base_uart(dev_index);
- unsigned int mask;
- /*
- * UERSTAT
- * Break Detect [3]
- * Frame Err [2] : receive operation
- * Parity Err [1] : receive operation
- * Overrun Err [0] : receive operation
- */
- if (op)
- mask = 0x8;
- else
- mask = 0xf;
- if (readl(&uart->uerstat) & 0xf)
- return 1;
- return 0;
- return readl(&uart->uerstat) & mask;
}
/* @@ -119,7 +129,7 @@ int serial_getc_dev(const int dev_index)
/* wait for character to arrive */ while (!(readl(&uart->utrstat) & 0x1)) {
- if (serial_err_check(dev_index))
- if (serial_err_check(dev_index, 0))
return 0; }
@@ -135,7 +145,7 @@ void serial_putc_dev(const char c, const int dev_index)
/* wait for room in the tx FIFO */ while (!(readl(&uart->utrstat) & 0x2)) {
- if (serial_err_check(dev_index))
- if (serial_err_check(dev_index, 1))
return; }
-- 1.5.4.3 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
applied to u-boot-samsung
Minkyu Kang