9
0
Fork 0
barebox/drivers/serial
Fabio Estevam f20bcf91f6 serial: imx: Fix buggy transmissions when baudrate mismatches
Bit 7 of UCR3 is described in the i.MX reference manuals (with the exception
of i.MX1) as follows:

ADNIMP: 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

The "new features" mechanism occasionally causes the receiver to get out of sync
and continuously produces received characters of '0xff'.

In order to reproduce the problem:

$ cs0.baudrate=19200
- Change the terminal baudrate to 19200
- Type in the console and it should look good
- Change the terminal baudrate back to 115200
- Type 'b' in the console, then a stream of '0xff' is transmitted in loop

Setting the ADNIMP bit avoids the transmission of '0xff' in loop.

Also rename the bit definition as per the reference manual.

Tested on mx6q.

Based on a patch from Eric Nelson for U-boot.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2014-06-03 08:41:50 +02:00
..
Kconfig serial: add Atheros AR933x driver 2014-03-28 10:28:15 +01:00
Makefile serial: add Atheros AR933x driver 2014-03-28 10:28:15 +01:00
amba-pl011.c serial: do not set default baudrate at init 2013-09-22 16:46:51 +02:00
arm_dcc.c console: drop f_caps and check the function pointer getc/putc instead 2013-09-21 09:59:16 +02:00
atmel.c Merge branch 'for-next/rs485' 2013-10-07 08:02:14 +02:00
linux_console.c console: drop f_caps and check the function pointer getc/putc instead 2013-09-21 09:59:16 +02:00
serial_altera.c console: drop f_caps and check the function pointer getc/putc instead 2013-09-21 09:59:16 +02:00
serial_altera_jtag.c console: drop f_caps and check the function pointer getc/putc instead 2013-09-21 09:59:16 +02:00
serial_ar933x.c serial: add Atheros AR933x driver 2014-03-28 10:28:15 +01:00
serial_ar933x.h serial: add Atheros AR933x driver 2014-03-28 10:28:15 +01:00
serial_auart.c serial: do not set default baudrate at init 2013-09-22 16:46:51 +02:00
serial_blackfin.c console: drop f_caps and check the function pointer getc/putc instead 2013-09-21 09:59:16 +02:00
serial_cadence.c console: drop f_caps and check the function pointer getc/putc instead 2013-09-21 09:59:16 +02:00
serial_clps711x.c serial: clps711x: Update driver 2014-01-24 23:10:04 +01:00
serial_imx.c serial: imx: Fix buggy transmissions when baudrate mismatches 2014-06-03 08:41:50 +02:00
serial_mpc5xxx.c console: drop f_caps and check the function pointer getc/putc instead 2013-09-21 09:59:16 +02:00
serial_netx.c console: drop f_caps and check the function pointer getc/putc instead 2013-09-21 09:59:16 +02:00
serial_ns16550.c Merge branch 'for-next/ioresource' 2014-05-05 11:05:51 +02:00
serial_ns16550.h serial: ns16550: Add device ids for omap 2013-11-22 10:56:49 +01:00
serial_omap4_usbboot.c console: drop f_caps and check the function pointer getc/putc instead 2013-09-21 09:59:16 +02:00
serial_pl010.c console: drop f_caps and check the function pointer getc/putc instead 2013-09-21 09:59:16 +02:00
serial_pl010.h Treewide: remove address of the Free Software Foundation 2012-09-17 10:57:41 +02:00
serial_pxa.c console: drop f_caps and check the function pointer getc/putc instead 2013-09-21 09:59:16 +02:00
serial_s3c.c console: drop f_caps and check the function pointer getc/putc instead 2013-09-21 09:59:16 +02:00
stm-serial.c console: drop f_caps and check the function pointer getc/putc instead 2013-09-21 09:59:16 +02:00