Re: [U-Boot] [PATCH 6/8] Adds wait to atmel_usart serial_init function
Dear Alex Waterman, > Adds a short busy loop wait to the atmel_usart.c serial_init() > function. > > Signed-off-by: Alex Waterman > --- > 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 < 1; 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 ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH 6/8] Adds wait to atmel_usart serial_init function
Hi Alex, Le 01/07/2011 14:37, Alex Waterman a écrit : > >> Why 'volatile'? Also, there shouldn't be an empty line before it but >> there should be one after it... > I used a volatile to prevent the compiler from optimizing out the (normally) > useless loop. Is there a cleaner way to do this? If the board supports udelay(), you should use that instead of a loop. > Best regards, > Alex Amicalement, -- Albert. ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH 6/8] Adds wait to atmel_usart serial_init function
>Why 'volatile'? Also, there shouldn't be an empty line before it but there > should be one after it... I used a volatile to prevent the compiler from optimizing out the (normally) useless loop. Is there a cleaner way to do this? Best regards, Alex -- Alex Waterman Computer Engineer Phone: 215-896-4920 Email: awater...@dawning.com ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH 6/8] Adds wait to atmel_usart serial_init function
Hello. On 30-06-2011 23:33, Alex Waterman wrote: > Adds a short busy loop wait to the atmel_usart.c serial_init() > function. > Signed-off-by: Alex Waterman > 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; Why 'volatile'? Also, there shouldn't be an empty line before it but there should be one after it... > 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 < 1; i++) > + ; > + > return 0; > } WBR, Sergei ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
[U-Boot] [PATCH 6/8] Adds wait to atmel_usart serial_init function
From: Alex Waterman Adds a short busy loop wait to the atmel_usart.c serial_init() function. Signed-off-by: Alex Waterman --- 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 < 1; i++) + ; + return 0; } -- 1.7.4.4 ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
[U-Boot] [PATCH 6/8] Adds wait to atmel_usart serial_init function
Adds a short busy loop wait to the atmel_usart.c serial_init() function. Signed-off-by: Alex Waterman --- 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 < 1; i++) + ; + return 0; } -- 1.7.4.4 ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot