diff options
author | Chip Coldwell <coldwell@redhat.com> | 2008-02-08 07:21:06 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-08 12:22:37 -0500 |
commit | a66706158d6bc4d9eb29c37852001f78f4c8989c (patch) | |
tree | d2d593dc2902c1db1ea6d0ef417dc3426e0b3bae /drivers/serial/Kconfig | |
parent | 1ecc26bd2789ddb253f61e182a61c776663fe44c (diff) |
atmel_serial: add DMA support
This patch is based on the DMA-patch by Chip Coldwell for the AT91/AT32 serial
USARTS, with some tweaks to make it apply neatly on top of the other patches
in this series.
The RX and TX code has been moved to a tasklet and reworked a bit. Instead of
depending on the ENDRX and TIMEOUT bits in CSR, we simply grab as much data as
we can from the DMA buffers. I think this closes a race where the ENDRX bit
is set after we read CSR but before we read RPR, although I haven't confirmed
this.
Similarly, the two TX handlers (ENDTX and TXBUFE) have been combined into one.
Since the current code only uses a single TX buffer, there's no point in
handling those interrupts separately.
This also fixes a DMA sync bug in the original patch.
[linux@bohmer.net: rebased onto irq-splitup patch]
[hskinnemoen@atmel.com: moved to tasklet, fixed dma bug, misc cleanups]
[hskinnemoen@atmel.com: atmel_serial dma: Misc fixes and cleanups]
Signed-off-by: Remy Bohmer <linux@bohmer.net>
Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
Cc: Andrew Victor <linux@maxim.org.za>
Tested-by: Marc Pignat <marc.pignat@hevs.ch>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/serial/Kconfig')
-rw-r--r-- | drivers/serial/Kconfig | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig index 84a054d7e986..b82595cf13e8 100644 --- a/drivers/serial/Kconfig +++ b/drivers/serial/Kconfig | |||
@@ -380,6 +380,21 @@ config SERIAL_ATMEL_CONSOLE | |||
380 | console is the device which receives all kernel messages and | 380 | console is the device which receives all kernel messages and |
381 | warnings and which allows logins in single user mode). | 381 | warnings and which allows logins in single user mode). |
382 | 382 | ||
383 | config SERIAL_ATMEL_PDC | ||
384 | bool "Support DMA transfers on AT91 / AT32 serial port" | ||
385 | depends on SERIAL_ATMEL | ||
386 | default y | ||
387 | help | ||
388 | Say Y here if you wish to use the PDC to do DMA transfers to | ||
389 | and from the Atmel AT91 / AT32 serial port. In order to | ||
390 | actually use DMA transfers, make sure that the use_dma_tx | ||
391 | and use_dma_rx members in the atmel_uart_data struct is set | ||
392 | appropriately for each port. | ||
393 | |||
394 | Note that break and error handling currently doesn't work | ||
395 | properly when DMA is enabled. Make sure that ports where | ||
396 | this matters don't use DMA. | ||
397 | |||
383 | config SERIAL_ATMEL_TTYAT | 398 | config SERIAL_ATMEL_TTYAT |
384 | bool "Install as device ttyATn instead of ttySn" | 399 | bool "Install as device ttyATn instead of ttySn" |
385 | depends on SERIAL_ATMEL=y | 400 | depends on SERIAL_ATMEL=y |