linux-uconsole/drivers/tty/serial
Richard Genoud 990a142ee0 tty/serial: atmel: RS485 half duplex w/DMA: enable RX after TX is done
commit b389f173aa upstream.

When using RS485 in half duplex, RX should be enabled when TX is
finished, and stopped when TX starts.

Before commit 0058f0871e ("tty/serial: atmel: fix RS485 half
duplex with DMA"), RX was not disabled in atmel_start_tx() if the DMA
was used. So, collisions could happened.

But disabling RX in atmel_start_tx() uncovered another bug:
RX was enabled again in the wrong place (in atmel_tx_dma) instead of
being enabled when TX is finished (in atmel_complete_tx_dma), so the
transmission simply stopped.

This bug was not triggered before commit 0058f0871e
("tty/serial: atmel: fix RS485 half duplex with DMA") because RX was
never disabled before.

Moving atmel_start_rx() in atmel_complete_tx_dma() corrects the problem.

Reported-by: Gil Weber <webergil@gmail.com>
Fixes: 0058f0871e
Tested-by: Gil Weber <webergil@gmail.com>
Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
Acked-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
Tested-by: Bryan Evenson <bevenson@melinkcorp.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-04-21 09:30:08 +02:00
..
8250 serial: 8250_pci: Detach low-level driver during PCI error recovery 2017-03-30 09:35:20 +02:00
cpm_uart tty: serial: cpm_uart: Fix module autoload for OF platform driver 2015-10-04 19:09:21 +01:00
jsm serial: jsm: some off by one bugs 2015-03-26 23:00:36 +01:00
21285.c
68328serial.c tty: Remove tty_port::close_wait 2015-10-17 21:11:29 -07:00
altera_jtaguart.c drivers/tty/serial: altera: fix typos in #endif comments 2015-05-06 22:26:58 +02:00
altera_uart.c serial: altera_uart: Use of_property_read_u32 instead of open-coding it 2015-10-04 17:47:49 +01:00
amba-pl010.c
amba-pl011.c serial: amba-pl011: fix incorrect integer size in pl011_fifo_to_tty() 2015-10-17 21:29:21 -07:00
apbuart.c tty: serial: apbuart: Fix module autoload for OF platform driver 2015-10-04 19:09:21 +01:00
apbuart.h
ar933x_uart.c
arc_uart.c
atmel_serial.c tty/serial: atmel: RS485 half duplex w/DMA: enable RX after TX is done 2017-04-21 09:30:08 +02:00
bcm63xx_uart.c bcm63xx_uart: Use the device name when registering an interrupt 2015-11-20 16:19:54 -08:00
bfin_sport_uart.c
bfin_sport_uart.h
bfin_uart.c serial: bfin: ctsrts: enfore Kconfig naming convention 2015-05-06 22:26:59 +02:00
clps711x.c serial: mctrl-gpio: rename init function 2015-10-04 18:46:43 +01:00
crisv10.c tty: Remove tty_port::close_wait 2015-10-17 21:11:29 -07:00
crisv10.h
digicolor-usart.c
dz.c
dz.h
earlycon-arm-semihost.c
earlycon.c serial: earlycon: Add missing spinlock initialization 2015-12-12 23:05:28 -08:00
efm32-uart.c
etraxfs-uart.c serial: etraxfs-uart: Fix crash 2015-11-20 16:19:54 -08:00
fsl_lpuart.c serial: fsl_lpuart: add earlycon support 2015-10-17 21:18:30 -07:00
icom.c tty: icom.c: move assignment out of if () block 2015-05-10 19:04:17 +02:00
icom.h
ifx6x60.c spi: Drop owner assignment from spi_drivers 2015-10-28 10:30:17 +09:00
ifx6x60.h
imx.c Merge 4.3-rc5 into tty-next 2015-10-12 10:54:35 -07:00
ioc3_serial.c tty: ioc3_serial.c: move assignment out of if () block 2015-05-10 19:04:17 +02:00
ioc4_serial.c tty: ioc4_serial.c: move assignment out of if () block 2015-05-10 19:04:17 +02:00
ip22zilog.c
ip22zilog.h
Kconfig serial: fsl_lpuart: Fix earlycon support 2015-11-20 16:19:54 -08:00
kgdb_nmi.c serial: kgdb_nmi: Use bool function return values of true/false not 1/0 2015-05-06 22:26:57 +02:00
kgdboc.c
lantiq.c drivers/tty: make serial/lantic.c driver explicitly non-modular 2015-07-23 18:27:41 -07:00
lpc32xx_hs.c tty: serial: lpc32xx_hs: fix handling platform_get_irq result 2015-10-04 19:09:21 +01:00
m32r_sio.c
m32r_sio.h
m32r_sio_reg.h
Makefile serial: stm32-usart: Add STM32 USART Driver 2015-06-10 17:34:26 -07:00
max310x.c spi: Drop owner assignment from spi_drivers 2015-10-28 10:30:17 +09:00
max3100.c spi: Drop owner assignment from spi_drivers 2015-10-28 10:30:17 +09:00
mcf.c drivers/tty/serial/mcf.c: fix typo on SERIAL_MCF_CONSOLE 2015-05-06 22:26:59 +02:00
men_z135_uart.c tty: serial: men_z135_uart.c: use mcb memory region size instead of hardcoded one 2015-10-17 21:05:43 -07:00
meson_uart.c ARM: meson: serial: convert iounmap to devm_iounmap 2015-05-06 22:27:02 +02:00
mpc52xx_uart.c serial: mpc52xx: add delay after resetting transmitter to fix broken chars 2015-10-04 17:27:56 +01:00
mpsc.c tty: disable unbind for old 74xx based serial/mpsc console port 2015-10-17 21:18:30 -07:00
msm_serial.c tty: serial: msm: Fix module autoload 2017-02-26 11:07:50 +01:00
msm_serial.h tty: serial: msm: Add RX DMA support 2015-10-04 19:15:17 +01:00
mux.c parisc: serial/mux: Convert to uart_console_device instead of open-coded 2015-10-22 15:44:28 +02:00
mxs-auart.c serial: mctrl-gpio: rename init function 2015-10-04 18:46:43 +01:00
netx-serial.c
nwpserial.c
of_serial.c serial: Enable Freescale 16550 workaround on arm 2015-10-17 21:05:46 -07:00
omap-serial.c serial: omap: Prevent DoS using unprivileged ioctl(TIOCSRS485) 2016-02-25 12:01:14 -08:00
pch_uart.c
pmac_zilog.c tty: constify of_device_id array 2015-03-26 22:49:10 +01:00
pmac_zilog.h
pnx8xxx_uart.c
pxa.c tty: constify of_device_id array 2015-03-26 22:49:10 +01:00
rp2.c
sa1100.c
samsung.c serial: samsung: Continue to work if DMA request fails 2017-03-18 19:09:58 +08:00
samsung.h serial: samsung: fix DMA mode enter condition for small FIFO sizes 2015-08-04 22:07:23 -07:00
sb1250-duart.c
sc16is7xx.c sc16is7xx: Drop bogus use of IRQF_ONESHOT 2017-01-09 08:07:49 +01:00
sccnxp.c
serial-tegra.c serial: tegra: Add helper function for handling RX buffer 2015-10-17 21:07:57 -07:00
serial_core.c tty: Remove tty_port::close_wait 2015-10-17 21:11:29 -07:00
serial_ks8695.c tty/serial: kill off set_irq_flags usage 2015-06-09 12:26:32 -07:00
serial_mctrl_gpio.c serial: mctrl_gpio: implement interrupt handling 2015-10-04 18:47:51 +01:00
serial_mctrl_gpio.h serial: fix mctrl helper functions 2015-10-17 21:21:07 -07:00
serial_txx9.c
sh-sci.c serial: sh-sci: Remove cpufreq notifier to fix crash/deadlock 2016-05-04 14:48:52 -07:00
sh-sci.h serial: sh-sci: Correct SCIF_ERROR_CLEAR for plain SCIF 2015-10-04 17:33:48 +01:00
sirfsoc_uart.c serial: sirf: let uart's receive start in right place 2015-07-23 15:32:04 -07:00
sirfsoc_uart.h serial: sirf: let uart's receive start in right place 2015-07-23 15:32:04 -07:00
sn_console.c drivers/tty: make serial/sn_console.c driver explicitly non-modular 2015-07-23 18:27:41 -07:00
sprd_serial.c tty: serial: sprd: Fix module autoload for OF platform driver 2015-10-04 19:09:21 +01:00
st-asc.c tty/serial: st-asc: drop the use of IRQF_NO_SUSPEND 2015-10-04 19:11:05 +01:00
stm32-usart.c tty/serial: st-asc: drop the use of IRQF_NO_SUSPEND 2015-10-04 19:11:05 +01:00
suncore.c drivers/tty: make serial/suncore.c driver explicitly non-modular 2015-07-23 18:27:41 -07:00
sunhv.c sparc: serial: sunhv: fix a double lock bug 2016-11-21 10:06:40 +01:00
sunsab.c
sunsab.h
sunsu.c
sunzilog.c
sunzilog.h
tilegx.c
timbuart.c
timbuart.h
uartlite.c serial: xilinx: Use platform_get_irq to get irq description structure 2015-04-28 14:26:21 +02:00
ucc_uart.c QE-UART: add "fsl,t1040-ucc-uart" to of_device_id 2016-06-07 18:14:35 -07:00
vr41xx_siu.c
vt8500_serial.c
xilinx_uartps.c serial: xuartps: add __init to earlycon write method 2015-05-10 19:10:08 +02:00
zs.c
zs.h