Message ID | 1312283104-15060-1-git-send-email-hong.xu@atmel.com |
---|---|
State | Accepted |
Commit | 1f4faedd51ee72a57afb9edba2d71ba01a2ec20e |
Delegated to: | Reinhard Meyer |
Headers | show |
Dear Hong Xu, > Before reset dbgu transmitter, we just wait TXEMPTY to drain the > transmitter register(Just in case). If not doing this, we may sometimes > see several weird characters from DBGU. > > A short delay is also added to make sure the new serial settings are > settled. > > Signed-off-by: Hong Xu <hong.xu@atmel.com> > --- > Changes since V2, > Using __udelay to avoid potential endless loop > > drivers/serial/atmel_usart.c | 11 ++++++++++- > 1 files changed, 10 insertions(+), 1 deletions(-) Applied to u-boot-atmel/next. Thanks, Reinhard
diff --git a/drivers/serial/atmel_usart.c b/drivers/serial/atmel_usart.c index e326b2b..943ef70 100644 --- a/drivers/serial/atmel_usart.c +++ b/drivers/serial/atmel_usart.c @@ -49,17 +49,26 @@ int serial_init(void) { atmel_usart3_t *usart = (atmel_usart3_t *)CONFIG_USART_BASE; + /* + * Just in case: drain transmitter register + * 1000us is enough for baudrate >= 9600 + */ + if (!(readl(&usart->csr) & USART3_BIT(TXEMPTY))) + __udelay(1000); + writel(USART3_BIT(RSTRX) | USART3_BIT(RSTTX), &usart->cr); serial_setbrg(); - writel(USART3_BIT(RXEN) | USART3_BIT(TXEN), &usart->cr); writel((USART3_BF(USART_MODE, USART3_USART_MODE_NORMAL) | USART3_BF(USCLKS, USART3_USCLKS_MCK) | USART3_BF(CHRL, USART3_CHRL_8) | USART3_BF(PAR, USART3_PAR_NONE) | USART3_BF(NBSTOP, USART3_NBSTOP_1)), &usart->mr); + writel(USART3_BIT(RXEN) | USART3_BIT(TXEN), &usart->cr); + /* 100us is enough for the new settings to be settled */ + __udelay(100); return 0; }
Before reset dbgu transmitter, we just wait TXEMPTY to drain the transmitter register(Just in case). If not doing this, we may sometimes see several weird characters from DBGU. A short delay is also added to make sure the new serial settings are settled. Signed-off-by: Hong Xu <hong.xu@atmel.com> --- Changes since V2, Using __udelay to avoid potential endless loop drivers/serial/atmel_usart.c | 11 ++++++++++- 1 files changed, 10 insertions(+), 1 deletions(-)