|
@@ -12,6 +12,8 @@
|
|
* published by the Free Software Foundation.
|
|
* published by the Free Software Foundation.
|
|
*/
|
|
*/
|
|
|
|
|
|
|
|
+#include <linux/dmaengine.h>
|
|
|
|
+
|
|
struct s3c24xx_uart_info {
|
|
struct s3c24xx_uart_info {
|
|
char *name;
|
|
char *name;
|
|
unsigned int type;
|
|
unsigned int type;
|
|
@@ -41,6 +43,40 @@ struct s3c24xx_serial_drv_data {
|
|
unsigned int fifosize[CONFIG_SERIAL_SAMSUNG_UARTS];
|
|
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 {
|
|
struct s3c24xx_uart_port {
|
|
unsigned char rx_claimed;
|
|
unsigned char rx_claimed;
|
|
unsigned char tx_claimed;
|
|
unsigned char tx_claimed;
|
|
@@ -59,6 +95,8 @@ struct s3c24xx_uart_port {
|
|
/* reference to platform data */
|
|
/* reference to platform data */
|
|
struct s3c2410_uartcfg *cfg;
|
|
struct s3c2410_uartcfg *cfg;
|
|
|
|
|
|
|
|
+ struct s3c24xx_uart_dma *dma;
|
|
|
|
+
|
|
#ifdef CONFIG_CPU_FREQ
|
|
#ifdef CONFIG_CPU_FREQ
|
|
struct notifier_block freq_transition;
|
|
struct notifier_block freq_transition;
|
|
#endif
|
|
#endif
|