linux/drivers/tty/serial
Sebastian Andrzej Siewior 0a0661ddb8 tty: serial: 8250: omap: add dma support
This patch adds the required pieces to 8250-OMAP UART driver for DMA
support. The TX burst size is set to 1 so we can send an arbitrary
amount of bytes.

The RX burst is currently set to 48 which means we receive an DMA
interrupt every 48 bytes and have to reprogram everything. Less bytes in
the RX-FIFO mean that no DMA transfer will happen and the UART will send a
RX-timeout _or_ RDI event at which point the FIFO will be manually purged.
There is a workaround for TX-DMA on AM33xx where we put the first byte
into the FIFO to kick start the DMA process. Haven't seen this problem on
OMAP36xx (beagle board xm) or DRA7xx.

On AM375x there is "Usage Note 2.7: UART: Cannot Acknowledge Idle
Requests in Smartidle Mode When Configured for DMA Operations" in the
errata document. This problem persists even after disabling DMA in the
UART and will be addressed in the HWMOD.

v10:
	- delay update_registers() from set_termios() until TX-DMA is
	  done. It has been reported / proved that invoking
	  update_registers() while TX-DMA is in progress may stall the
	  DMA operation and it won't finish.
	- use the new omap DMA-TX-RX hooks and DMA only interrupt
	  routine.

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-11-05 19:13:34 -08:00
..
8250 tty: serial: 8250: omap: add dma support 2014-11-05 19:13:34 -08:00
cpm_uart serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
jsm jsm: add support for additional Neo cards 2014-09-08 13:15:49 -07:00
21285.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07: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 serial: altera: Make of_device_id arrays const 2014-09-08 15:28:28 -07:00
altera_uart.c serial: altera: Make of_device_id arrays const 2014-09-08 15:28:28 -07:00
amba-pl010.c serial: amba-pl010: Use devres APIs 2014-07-09 17:13:54 -07:00
amba-pl011.c serial: Refactor uart_flush_buffer() from uart_close() 2014-11-05 18:53:54 -08:00
apbuart.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
apbuart.h
ar933x_uart.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
arc_uart.c Merge 3.16-rc5 into tty-next. 2014-07-13 15:52:12 -07:00
atmel_serial.c serial: Refactor uart_flush_buffer() from uart_close() 2014-11-05 18:53:54 -08:00
bcm63xx_uart.c serial: Fix IGNBRK handling 2014-06-19 13:04:52 -07:00
bfin_sport_uart.c serial: blackfin: Fix missing gpio.h 2014-09-08 16:22:42 -07:00
bfin_sport_uart.h
bfin_uart.c serial: bfin-uart: Fix auto CTS 2014-09-23 21:19:35 -07:00
clps711x.c serial: clps711x: Use mctrl_gpio helpers for handling modem signals 2014-09-08 15:35:03 -07:00
crisv10.c tty: Remove tty_hung_up_p() tests from tty drivers' open() 2014-07-10 16:06:49 -07:00
crisv10.h
dz.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
dz.h
earlycon-arm-semihost.c tty/serial: add arm/arm64 semihosting earlycon 2014-04-24 16:32:27 -07:00
earlycon.c tty/serial: fix 8250 early console option passing to regular console 2014-06-19 13:07:26 -07:00
efm32-uart.c serial: efm32: correct namespacing of location property 2014-07-11 17:49:46 -07:00
fsl_lpuart.c tty: serial: fsl_lpuart: add 32-bit register interface support 2014-07-17 18:15:38 -07:00
icom.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
icom.h
ifx6x60.c serial: ifx6x60: Remove casting the return value which is a void pointer 2013-09-26 14:29:58 -07:00
ifx6x60.h
imx.c serial: imx: change the wait even to interruptiable 2014-09-28 21:26:38 -04:00
ioc3_serial.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
ioc4_serial.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
ip22zilog.c serial: Test for no tx data on tx restart 2014-07-10 16:31:34 -07:00
ip22zilog.h
Kconfig tty: serial: msm: Add earlycon support 2014-09-28 21:49:48 -04:00
kgdb_nmi.c serial: kgdb_nmi: No CON_ENABLED by default 2014-09-08 16:26:07 -07:00
kgdboc.c treewide: Convert retrun typos to return 2013-09-04 12:26:36 +02:00
lantiq.c serial: Use UPF_* constants with struct uart_port flags 2014-07-10 16:06:49 -07:00
lpc32xx_hs.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
m32r_sio_reg.h
m32r_sio.c serial: Test for no tx data on tx restart 2014-07-10 16:31:34 -07:00
m32r_sio.h
Makefile ARM: meson: serial: add MesonX SoC on-chip uart driver 2014-09-08 16:12:40 -07:00
max310x.c driver:gpio remove all usage of gpio_remove retval in driver 2014-09-18 11:03:10 -07:00
max3100.c serial: use dev_get_platdata() 2013-07-31 17:56:15 -07:00
mcf.c serial: Use UPF_* constants with struct uart_port flags 2014-07-10 16:06:49 -07:00
men_z135_uart.c tty: serial: men_z135_uart: Wakeup UART after transmitting 2014-07-09 17:35:42 -07:00
meson_uart.c ARM: meson: serial: add MesonX SoC on-chip uart driver 2014-09-08 16:12:40 -07:00
mfd.c serial: Fix IGNBRK handling 2014-06-19 13:04:52 -07:00
mpc52xx_uart.c serial: mpc52xx: Use default serial core x_char handler 2014-09-08 16:22:42 -07:00
mpsc.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
mrst_max3110.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
mrst_max3110.h
msm_serial_hs.c serial: use dev_get_platdata() 2013-07-31 17:56:15 -07:00
msm_serial.c tty: serial: msm: Add earlycon support 2014-09-28 21:49:48 -04:00
msm_serial.h tty: serial: msm: Support big-endian CPUs 2014-07-10 16:10:42 -07:00
msm_smd_tty.c
mux.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
mxs-auart.c serial: mxs-auart: add sysrq support 2014-11-05 18:56:47 -08:00
netx-serial.c serial: Fix IGNBRK handling 2014-06-19 13:04:52 -07:00
nwpserial.c serial: Fix build failure caused by missing header file 2014-09-08 16:17:45 -07:00
of_serial.c serial: of-serial: fix up PM ops on no_console_suspend and port type 2014-11-05 16:23:34 -08:00
omap-serial.c tty: serial: omap: Remove probe error message 2014-11-05 18:56:47 -08:00
pch_uart.c pch_uart: don't hardcode PCI slot to get DMA device 2014-08-01 16:04:21 -07:00
pmac_zilog.c The branch contains the following device tree changes the v3.17 merge 2014-08-14 09:53:39 -06:00
pmac_zilog.h
pnx8xxx_uart.c serial: Fix IGNBRK handling 2014-06-19 13:04:52 -07:00
pxa.c serial: pxa: fix build with !SERIAL_PXA_CONSOLE 2014-07-10 15:48:41 -07:00
rp2.c tty: remove DEFINE_PCI_DEVICE_TABLE macro 2013-12-08 17:09:07 -08:00
sa1100.c serial: sa1100: delete .set_wake callback 2013-10-16 13:16:18 -07:00
samsung.c ARM: SoC platform changes for 3.17 2014-08-08 11:14:29 -07:00
samsung.h serial: samsung: Neaten dbg uses 2014-05-28 12:27:22 -07:00
sb1250-duart.c serial: Fix IGNBRK handling 2014-06-19 13:04:52 -07:00
sc16is7xx.c tty: sc16is7xx: remove retval from gpiochip_remove() 2014-09-23 17:51:36 +02:00
sccnxp.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
serial_core.c serial: core: Fix port count when uart_open() errors 2014-11-05 18:53:55 -08:00
serial_ks8695.c serial: Fix IGNBRK handling 2014-06-19 13:04:52 -07:00
serial_mctrl_gpio.c tty: serial_mctrl_gpio: Fix COMPILE_TEST build for architectures with custom termios.h 2014-09-20 06:56:55 -07:00
serial_mctrl_gpio.h tty/serial: Add GPIOLIB helpers for controlling modem lines 2014-05-28 12:49:14 -07:00
serial_txx9.c serial: txx9: remove duplicate TXX9_SIFCR_TDIL_MASK define 2014-07-10 16:10:42 -07:00
serial-tegra.c serial: Refactor uart_flush_buffer() from uart_close() 2014-11-05 18:53:54 -08:00
sh-sci.c serial: sh-sci: use dmaengine_terminate_all() API 2014-10-15 21:31:00 +05:30
sh-sci.h serial: sh-sci: Move overrun_bit and error_mask fields out of pdata 2013-12-24 11:17:48 +09:00
sirfsoc_uart.c serial: sirf: transfer more bytes once to decrease interrupts 2014-07-09 17:37:00 -07:00
sirfsoc_uart.h serial: sirf: transfer more bytes once to decrease interrupts 2014-07-09 17:37:00 -07:00
sn_console.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
st-asc.c serial: asc: Conditionally use readl_relaxed (COMPILE_TEST) 2014-09-28 21:49:48 -04:00
suncore.c
sunhv.c serial: Fix send_xchar() handlers 2014-09-08 16:22:42 -07:00
sunsab.c serial: sunsab: Don't enable tx if tx stopped 2014-09-08 16:22:42 -07:00
sunsab.h
sunsu.c serial: Fix IGNBRK handling 2014-06-19 13:04:52 -07:00
sunzilog.c serial: Test for no tx data on tx restart 2014-07-10 16:31:34 -07:00
sunzilog.h
tilegx.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
timbuart.c serial: Refactor uart_flush_buffer() from uart_close() 2014-11-05 18:53:54 -08:00
timbuart.h
uartlite.c tty: serial: uartlite: Remove .owner field for driver 2014-09-08 16:09:13 -07:00
ucc_uart.c serial: treewide: Remove empty implementations of enable_ms() 2014-07-09 17:29:38 -07:00
vr41xx_siu.c serial: vr41xx_siu: delete double assignment 2014-09-08 16:17:45 -07:00
vt8500_serial.c tty: vt8500_serial: explicitly calculate base baud rate 2014-09-08 16:29:36 -07:00
xilinx_uartps.c serial: cadence: Add generic earlycon support 2014-09-28 21:32:37 -04:00
zs.c serial: Fix IGNBRK handling 2014-06-19 13:04:52 -07:00
zs.h