linux/drivers/tty/serial
Stephen Boyd 4a5662d6a6 msm_serial: Fix NUL byte output on UARTDM
UARTDM serial devices require us to wait for the entire TX fifo
to drain before we can change the contents of the NCF_TX
register. Furthermore, if we write any characters to the TX fifo
within the same clock cycle of changing the NCF_TX register the
NCF_TX register won't latch properly.

To fix these issues we should read back the NCF_TX register to
delay any TX fifo accesses by a clock cycle and we should wait
for the TX fifo to drain (instead of just waiting for the fifo to
be ready to receive more characters). Failure to do so leads to
random NUL bytes interspersed in the output.

Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Acked-by: David Brown <davidb@codeaurora.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-07-26 16:13:29 -07:00
..
8250 serial: 8250_pci: use local device ID for ADDI-DATA APCI-7800 2013-07-26 16:10:53 -07:00
cpm_uart serial: use platform_{get,set}_drvdata() 2013-06-03 10:21:33 -07:00
jsm TTY: jsm, remove superfluous check 2013-03-18 16:17:20 -07:00
21285.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
68328serial.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu 2013-05-10 07:22:35 -07:00
altera_jtaguart.c tty: serial: altera_jtaguart: Simplify altera_jtaguart_init() 2013-02-05 11:13:51 -08:00
altera_uart.c serial: altera: remove unnecessary platform_set_drvdata() 2013-05-20 11:53:46 -07:00
amba-pl010.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
amba-pl011.c Pin control changes for the v3.11 kernel cycle: 2013-07-03 11:48:03 -07:00
apbuart.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
apbuart.h
ar933x_uart.c serial: remove unnecessary platform_set_drvdata() 2013-07-26 15:39:36 -07:00
arc_uart.c TTY: cleanup tty->hw_stopped uses 2013-03-18 16:24:30 -07:00
atmel_serial.c serial: remove unnecessary platform_set_drvdata() 2013-07-26 15:39:36 -07:00
bcm63xx_uart.c serial: remove unnecessary platform_set_drvdata() 2013-07-26 15:39:36 -07:00
bfin_sport_uart.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
bfin_sport_uart.h
bfin_uart.c serial: bfin_uart: Remove redundant testing for ifdef CONFIG_SERIAL_BFIN_MODULE 2013-07-26 16:04:50 -07:00
clps711x.c serial: remove unnecessary platform_set_drvdata() 2013-07-26 15:39:36 -07:00
crisv10.c crisv10: use counts from tty_port 2013-03-18 16:26:33 -07:00
crisv10.h crisv10: use counts from tty_port 2013-03-18 16:26:33 -07:00
dz.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
dz.h
efm32-uart.c serial/efm32-uart: make of_device_id array const 2013-07-26 16:06:15 -07:00
fsl_lpuart.c serial: fsl_lpuart: Return proper error on lpuart_serial_init error path 2013-07-26 16:01:20 -07:00
icom.c driver: tty: serial: remove cast for kzalloc return value 2013-03-18 17:09:37 -07:00
icom.h
ifx6x60.c tty: ifx6x60: Remove unused suspend/resume callbacks 2013-03-18 16:29:29 -07:00
ifx6x60.h
imx.c serial: imx: add DMA support for imx6q 2013-07-26 15:44:11 -07:00
ioc3_serial.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
ioc4_serial.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
ip22zilog.c TTY: ip22zilog, fix tty_flip_buffer_push call 2013-01-16 07:36:47 -08:00
ip22zilog.h
Kconfig serial:st-asc: Add ST ASC driver. 2013-07-26 16:08:02 -07:00
kgdb_nmi.c kgdb: remove #include <linux/serial_8250.h> from kgdb.h 2013-02-04 15:35:26 -08:00
kgdboc.c
lantiq.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
lpc32xx_hs.c serial: lpc32xx: Fix fallout from tty_port conversion 2013-01-18 16:05:15 -08:00
m32r_sio_reg.h
m32r_sio.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
m32r_sio.h
Makefile serial:st-asc: Add ST ASC driver. 2013-07-26 16:08:02 -07:00
max310x.c serial: max310x: Add MAX14830 support 2013-07-26 15:53:27 -07:00
max3100.c serial: max3100: use spi_get_drvdata() and spi_set_drvdata() 2013-04-05 15:49:39 -07:00
mcf.c serial: mcf: missing uart_unregister_driver() on error in mcf_init() 2013-05-20 11:54:56 -07:00
mfd.c Power management and ACPI updates for 3.11-rc1 2013-07-03 14:35:40 -07:00
mpc52xx_uart.c serial/mpc52xx_uart: fix kernel panic when system reboot 2013-06-17 12:49:43 -07:00
mpsc.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
mrst_max3110.c tty: mrst_max3110: Use dev_pm_ops 2013-03-18 16:29:29 -07:00
mrst_max3110.h
msm_serial_hs.c TTY: serial/msm_serial_hs, remove unused tty 2013-03-18 16:24:30 -07:00
msm_serial.c msm_serial: Fix NUL byte output on UARTDM 2013-07-26 16:13:29 -07:00
msm_serial.h msm_serial: Fix NUL byte output on UARTDM 2013-07-26 16:13:29 -07:00
msm_smd_tty.c TTY: msm_smd_tty, clean up activate/shutdown 2013-03-18 16:19:44 -07:00
mux.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
mxs-auart.c drivers/tty/serial: don't use devm_pinctrl_get_select_default() in probe 2013-07-24 15:21:13 -07:00
netx-serial.c serial: remove unnecessary platform_set_drvdata() 2013-07-26 15:39:36 -07:00
nwpserial.c tty: nwpserial: Pass correct pointer to free_irq() 2013-05-20 11:54:55 -07:00
of_serial.c serial: use platform_{get,set}_drvdata() 2013-06-03 10:21:33 -07:00
omap-serial.c serial: omap: enable PM runtime only when its fully configured 2013-07-26 16:01:20 -07:00
pch_uart.c pch_uart: Use DMI interface for board detection 2013-07-26 16:04:50 -07:00
pmac_zilog.c serial: remove unnecessary platform_set_drvdata() 2013-07-26 15:39:36 -07:00
pmac_zilog.h
pnx8xxx_uart.c serial: remove unnecessary platform_set_drvdata() 2013-07-26 15:39:36 -07:00
pxa.c serial: remove unnecessary platform_set_drvdata() 2013-07-26 15:39:36 -07:00
rp2.c serial: rp2: New driver for Comtrol RocketPort 2 cards 2013-01-17 17:28:39 -08:00
sa1100.c serial: remove unnecessary platform_set_drvdata() 2013-07-26 15:39:36 -07:00
samsung.c ARM SoC late changes 2013-07-02 14:42:51 -07:00
samsung.h tty: serial/samsung: fix modular build 2013-04-11 13:14:37 -07:00
sb1250-duart.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
sc26xx.c serial: use platform_{get,set}_drvdata() 2013-06-03 10:21:33 -07:00
sccnxp.c serial: remove unnecessary platform_set_drvdata() 2013-07-26 15:39:36 -07:00
serial_core.c serial: report base_baud after initialization 2013-07-26 16:03:05 -07:00
serial_ks8695.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
serial_txx9.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
serial-tegra.c treewide: Fix typo in printk 2013-05-28 12:02:13 +02:00
sh-sci.c serial: sh-sci: Initialise variables before access in sci_set_termios() 2013-06-26 17:41:16 +09:00
sh-sci.h serial: sh-sci: remove obsolete Kconfig macros 2013-03-25 14:06:45 -07:00
sirfsoc_uart.c serial: remove unnecessary platform_set_drvdata() 2013-07-26 15:39:36 -07:00
sirfsoc_uart.h serial: sirf: only use lookup table to set baudrate when ioclk=150MHz 2013-01-17 17:18:55 -08:00
sn_console.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
st-asc.c serial:st-asc: Add ST ASC driver. 2013-07-26 16:08:02 -07:00
suncore.c
sunhv.c serial: use platform_{get,set}_drvdata() 2013-06-03 10:21:33 -07:00
sunsab.c serial: use platform_{get,set}_drvdata() 2013-06-03 10:21:33 -07:00
sunsab.h
sunsu.c serial: use platform_{get,set}_drvdata() 2013-06-03 10:21:33 -07:00
sunzilog.c serial: use platform_{get,set}_drvdata() 2013-06-03 10:21:33 -07:00
sunzilog.h
timbuart.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
timbuart.h
uartlite.c tty: serial: uartlite: Support uartlite on big and little endian systems 2013-02-13 08:38:45 -08:00
ucc_uart.c driver: tty: add missing unregister in err case 2013-06-03 10:30:43 -07:00
vr41xx_siu.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
vt8500_serial.c serial: remove unnecessary platform_set_drvdata() 2013-07-26 15:39:36 -07:00
xilinx_uartps.c ARM SoC specific changes 2013-07-02 13:43:38 -07:00
zs.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
zs.h