[U-Boot] [PATCH 6/8] Adds wait to atmel_usart serial_init function
Reinhard Meyer
u-boot at emk-elektronik.de
Mon Jul 4 09:42:49 CEST 2011
Dear Alex Waterman,
> Adds a short busy loop wait to the atmel_usart.c serial_init()
> function.
>
> Signed-off-by: Alex Waterman <awaterman at dawning.com>
> ---
> drivers/serial/atmel_usart.c | 6 ++++++
> 1 files changed, 6 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/serial/atmel_usart.c b/drivers/serial/atmel_usart.c
> index e326b2b..e355706 100644
> --- a/drivers/serial/atmel_usart.c
> +++ b/drivers/serial/atmel_usart.c
> @@ -47,6 +47,8 @@ void serial_setbrg(void)
>
> int serial_init(void)
> {
> +
> + volatile int i = 0;
> atmel_usart3_t *usart = (atmel_usart3_t *)CONFIG_USART_BASE;
>
> writel(USART3_BIT(RSTRX) | USART3_BIT(RSTTX), &usart->cr);
> @@ -61,6 +63,10 @@ int serial_init(void)
> | USART3_BF(NBSTOP, USART3_NBSTOP_1)),
> &usart->mr);
>
> + /* Short wait to let the serial port init. */
> + for (; i < 10000; i++)
> + ;
> +
> return 0;
> }
1. Why is this delay needed in the first place?
Apparently it has not been required before.
2. Such a delay loop is highly dependant on toolchain,
cache and page situation and processor speed. It can not be
accepted as a solution. If a delay is really required here
and cannot be substituting by reading the UARTs status
register, udelay() must be used.
Best Regards,
Reinhard
More information about the U-Boot
mailing list