[U-Boot] s5pc1xx: serial: fix the error check logic

Minkyu Kang promsoft at gmail.com
Fri Nov 13 08:36:13 CET 2009


2009/11/10 Minkyu Kang <mk7.kang at 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 at 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 at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
>

applied to u-boot-samsung

Minkyu Kang
-- 
from. prom.
www.promsoft.net


More information about the U-Boot mailing list