[U-Boot] [PATCH] serial_mxc: disable new features of autobaud detection

Stefano Babic sbabic at denx.de
Thu May 15 11:21:57 CEST 2014


Hi Eric,

On 15/05/2014 01:58, Eric Nelson wrote:
> Bit 7 of UCR3 is described in the i.MX3x/i.MX5x/i.MX6x
> reference manuals as follows:
> 
> 	Autobaud Detection Not Improved-. Disables new features of
> 	autobaud detection (See Baud Rate Automatic Detection
>         Protocol, for more details).
> 
> 	0 Autobaud detection new features selected
> 	1 Keep old autobaud detection mechanism
> 
> On at least i.MX6DQ, i.MX6DLS and i.MX53, the "new features"
> occasionally cause the receiver to get out of sync and
> continuously produce received characters of '\xff'.
> 
> This patch disables the "new feature" on all boards, since
> there's no support for auto-baud in U-Boot on any of them.
> 
> More details are available in this post on i.MX Community:
> 	https://community.freescale.com/message/403254
> 
> Signed-off-by: Eric Nelson <eric.nelson at boundarydevices.com>
> Tested-by: Fabio Estevam <fabio.estevam at freescale.com>
> ---
>  drivers/serial/serial_mxc.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/serial/serial_mxc.c b/drivers/serial/serial_mxc.c
> index 56bee55..313d560 100644
> --- a/drivers/serial/serial_mxc.c
> +++ b/drivers/serial/serial_mxc.c
> @@ -77,7 +77,7 @@
>  #define  UCR3_DSR        (1<<10) /* Data set ready */
>  #define  UCR3_DCD        (1<<9)  /* Data carrier detect */
>  #define  UCR3_RI         (1<<8)  /* Ring indicator */
> -#define  UCR3_TIMEOUTEN  (1<<7)  /* Timeout interrupt enable */
> +#define  UCR3_ADNIMP     (1<<7)  /* Autobaud Detection Not Improved */
>  #define  UCR3_RXDSEN	 (1<<6)  /* Receive status interrupt enable */
>  #define  UCR3_AIRINTEN   (1<<5)  /* Async IR wake interrupt enable */
>  #define  UCR3_AWAKEN	 (1<<4)  /* Async wake interrupt enable */
> @@ -186,7 +186,7 @@ static int mxc_serial_init(void)
>  
>  	while (!(__REG(UART_PHYS + UCR2) & UCR2_SRST));
>  
> -	__REG(UART_PHYS + UCR3) = 0x0704;
> +	__REG(UART_PHYS + UCR3) = 0x0704 | UCR3_ADNIMP;
>  	__REG(UART_PHYS + UCR4) = 0x8000;
>  	__REG(UART_PHYS + UESC) = 0x002b;
>  	__REG(UART_PHYS + UTIM) = 0x0;
> 

Thanks to have found a solved this issue !

Acked-by: Stefano Babic <sbabic at denx.de>

Best regards,
Stefano Babic

-- 
=====================================================================
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================


More information about the U-Boot mailing list