serial: samsung: add struct s3c24xx_uart_dma
authorRobert Baldyga <r.baldyga@samsung.com>
Wed, 10 Dec 2014 11:49:22 +0000 (12:49 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 9 Jan 2015 22:25:39 +0000 (14:25 -0800)
This struct contains DMA configuration for each serial port.
It will be used in next commits adding DMA support in driver.

Based on previous work of Sylwester Nawrocki and Lukasz Czerwinski.

Signed-off-by: Robert Baldyga <r.baldyga@samsung.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/samsung.h

index eb071dd19b2d13deb189afba8a9bf6364d29e9ed..8dc250c6b472db4bf20f831c27a9980420b17be3 100644 (file)
@@ -12,6 +12,8 @@
  * published by the Free Software Foundation.
 */
 
+#include <linux/dmaengine.h>
+
 struct s3c24xx_uart_info {
        char                    *name;
        unsigned int            type;
@@ -41,6 +43,40 @@ struct s3c24xx_serial_drv_data {
        unsigned int                    fifosize[CONFIG_SERIAL_SAMSUNG_UARTS];
 };
 
+struct s3c24xx_uart_dma {
+       dma_filter_fn                   fn;
+       void                            *rx_param;
+       void                            *tx_param;
+
+       unsigned int                    rx_chan_id;
+       unsigned int                    tx_chan_id;
+
+       struct dma_slave_config         rx_conf;
+       struct dma_slave_config         tx_conf;
+
+       struct dma_chan                 *rx_chan;
+       struct dma_chan                 *tx_chan;
+
+       dma_addr_t                      rx_addr;
+       dma_addr_t                      tx_addr;
+
+       dma_cookie_t                    rx_cookie;
+       dma_cookie_t                    tx_cookie;
+
+       char                            *rx_buf;
+
+       dma_addr_t                      tx_transfer_addr;
+
+       size_t                          rx_size;
+       size_t                          tx_size;
+
+       struct dma_async_tx_descriptor  *tx_desc;
+       struct dma_async_tx_descriptor  *rx_desc;
+
+       int                             tx_bytes_requested;
+       int                             rx_bytes_requested;
+};
+
 struct s3c24xx_uart_port {
        unsigned char                   rx_claimed;
        unsigned char                   tx_claimed;
@@ -59,6 +95,8 @@ struct s3c24xx_uart_port {
        /* reference to platform data */
        struct s3c2410_uartcfg          *cfg;
 
+       struct s3c24xx_uart_dma         *dma;
+
 #ifdef CONFIG_CPU_FREQ
        struct notifier_block           freq_transition;
 #endif