linux/drivers/tty/serial
Tim Kryger 33acbb8269 serial: 8250_dw: Report CTS asserted for auto flow
When a serial port is configured for RTS/CTS flow control, serial core
will disable the transmitter if it observes CTS is de-asserted. This is
perfectly reasonable and appropriate when the UART lacks the ability to
automatically perform CTS flow control.

However, if the UART hardware can manage flow control automatically, it
is important that software not get involved.  When the DesignWare UART
enables 16C750 style auto-RTS/CTS it stops generating interrupts for
changes in CTS state so software mostly stays out of the way.  However,
it does report the true state of CTS in the MSR so software may notice
it is de-asserted and respond by improperly disabling the transmitter.
Once this happens the transmitter will be blocked forever.

To avoid this situation, we simply lie to the 8250 and serial core by
reporting that CTS is asserted whenever auto-RTS/CTS mode is enabled.

Signed-off-by: Tim Kryger <tim.kryger@linaro.org>
Reviewed-by: Matt Porter <matt.porter@linaro.org>
Reviewed-by: Markus Mayer <markus.mayer@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-08-19 17:12:21 -07:00
..
8250 serial: 8250_dw: Report CTS asserted for auto flow 2013-08-19 17:12:21 -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
Kconfig Merge 3.11-rc3 into tty-next 2013-07-29 12:32:30 -07:00
Makefile serial:st-asc: Add ST ASC driver. 2013-07-26 16:08:02 -07:00
altera_jtaguart.c serial: use dev_get_platdata() 2013-07-31 17:56:15 -07:00
altera_uart.c serial: use dev_get_platdata() 2013-07-31 17:56:15 -07:00
amba-pl010.c serial: use dev_get_platdata() 2013-07-31 17:56:15 -07:00
amba-pl011.c serial: amba-pl011: Use __releases/__acquires annotations 2013-08-12 11:37:48 -07:00
apbuart.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
apbuart.h
ar933x_uart.c tty: ar933x_uart: simplify use of devm_ioremap_resource 2013-08-14 12:06:13 -07:00
arc_uart.c Merge 3.11-rc4 into tty-next 2013-08-05 05:41:03 +08:00
atmel_serial.c serial: use dev_get_platdata() 2013-07-31 17:56:15 -07:00
bcm63xx_uart.c serial: remove unnecessary platform_set_drvdata() 2013-07-26 15:39:36 -07:00
bfin_sport_uart.c serial: bfin_sport_uart: Fix incorrect placement of __initdata 2013-08-12 11:37:47 -07:00
bfin_sport_uart.h tty: bfin-sport-uart: Rx interrupt is not called always with irq disabled. 2011-12-09 19:05:33 -08:00
bfin_uart.c serial: bfin_uart: Fix incorrect placement of __initdata 2013-08-12 11:37:47 -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: don't slur over failure in probe_dt 2013-07-31 18:05:41 -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 serial: icom: fix casting warning 2013-08-12 11:35:31 -07:00
icom.h
ifx6x60.c serial: use dev_get_platdata() 2013-07-31 17:56:15 -07:00
ifx6x60.h serial:ifx6x60:Prevent data transfer when IFX6x60 port is shutdown 2012-11-01 08:50:01 -07:00
imx.c serial: i.MX: evaluate linux,stdout-path property 2013-08-12 11:23:53 -07:00
ioc3_serial.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
ioc4_serial.c serial: ioc4_serial: Staticize ioc4_serial_attach_one() 2013-08-12 11:35:32 -07:00
ip22zilog.c TTY: ip22zilog, fix tty_flip_buffer_push call 2013-01-16 07:36:47 -08:00
ip22zilog.h
kgdb_nmi.c kgdb: remove #include <linux/serial_8250.h> from kgdb.h 2013-02-04 15:35:26 -08:00
kgdboc.c KGDB/KDB fixes and cleanups 2012-10-13 11:16:58 +09:00
lantiq.c serial: MIPS: lantiq: fix clock error check 2013-08-12 11:37:48 -07:00
lpc32xx_hs.c serial: lpc32xx: Fix fallout from tty_port conversion 2013-01-18 16:05:15 -08:00
m32r_sio.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
m32r_sio.h TTY: serial, include pci.h in m32r_sio 2012-03-08 11:47:02 -08:00
m32r_sio_reg.h m32r: relocate drivers back out of 8250 dir 2012-02-08 15:04:32 -08:00
max310x.c serial: max310x: Fix dev_pm_ops 2013-07-29 12:47:37 -07:00
max3100.c serial: use dev_get_platdata() 2013-07-31 17:56:15 -07:00
mcf.c serial: use dev_get_platdata() 2013-07-31 17:56:15 -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 serial: use dev_get_platdata() 2013-07-31 17:56:15 -07:00
mrst_max3110.c serial: mrst_max3110: fix casting warning 2013-08-12 11:35:31 -07:00
mrst_max3110.h
msm_serial.c serial: msm_serial: fix comparison of different types 2013-08-12 11:35:32 -07:00
msm_serial.h msm_serial: Make baud_code detection more dynamic 2013-07-26 16:13:29 -07:00
msm_serial_hs.c serial: use dev_get_platdata() 2013-07-31 17:56:15 -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 serial: mxs: remove the MXS_AUART_DMA_CONFIG 2013-08-05 15:05:17 +08: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 OMAP: serial: Remove incorrect disabling of IER interrupt 2013-08-15 17:42:40 -07:00
pch_uart.c serial: pch_uart: fix compilation warning 2013-08-14 18:33:43 -07:00
pmac_zilog.c serial: remove unnecessary platform_set_drvdata() 2013-07-26 15:39:36 -07:00
pmac_zilog.h tty/serial/pmac_zilog: Fix suspend & resume 2011-12-16 11:10:01 +11:00
pnx8xxx_uart.c serial: remove unnecessary platform_set_drvdata() 2013-07-26 15:39:36 -07:00
pxa.c serial: pxa: Staticize local symbols 2013-08-12 11:10:16 -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 serial: use dev_get_platdata() 2013-07-31 17:56:15 -07:00
samsung.h serial: samsung: fix casting warning 2013-08-12 11:35:31 -07:00
sb1250-duart.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
sc26xx.c serial: use dev_get_platdata() 2013-07-31 17:56:15 -07:00
sccnxp.c Revert "serial: sccnxp: Add DT support" 2013-08-02 15:25:19 +08:00
serial-tegra.c serial: tegra: use NULL instead of 0 2013-08-12 11:35:32 -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 serial: use dev_get_platdata() 2013-07-31 17:56:15 -07:00
sh-sci.c serial: sh-sci: use dev_get_platdata() 2013-08-02 11:54:13 +08:00
sh-sci.h serial: sh-sci: remove obsolete Kconfig macros 2013-03-25 14:06:45 -07:00
sirfsoc_uart.c serial: sirf: fix the hardware-flow-ctrl for USP-based UART 2013-08-14 18:33:08 -07:00
sirfsoc_uart.h serial: sirf: fix the hardware-flow-ctrl for USP-based UART 2013-08-14 18:33:08 -07:00
sn_console.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
st-asc.c serial: st-asc: Fix unused variable warning for non DT. 2013-08-03 11:38:29 +08:00
suncore.c tty: sparc: rename drivers/tty/serial/suncore.h -> include/linux/sunserialcore.h 2012-02-10 10:44:35 -08:00
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 serial: timbuart: Staticize local symbols 2013-08-12 11:35:31 -07: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 serial: use dev_get_platdata() 2013-07-31 17:56:15 -07: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