summaryrefslogtreecommitdiffstats
path: root/drivers/tty/serial/stm32-usart.h
diff options
context:
space:
mode:
authorAlexandre TORGUE <alexandre.torgue@st.com>2016-09-15 18:42:40 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2016-09-22 11:48:55 +0200
commit3489187204eb75e5635d8836babfd0a18be613f4 (patch)
treef5326fff1fa41e7ce789edb4a0ae46cd43607a39 /drivers/tty/serial/stm32-usart.h
parent3fa047fde43c1a100985751638d0d19b50913ff1 (diff)
downloadlinux-stable-3489187204eb75e5635d8836babfd0a18be613f4.tar.gz
linux-stable-3489187204eb75e5635d8836babfd0a18be613f4.tar.bz2
linux-stable-3489187204eb75e5635d8836babfd0a18be613f4.zip
serial: stm32: adding dma support
This patch adds dma mode support for rx and tx with pio mode as fallback in case of dma error. Signed-off-by: Gerald Baeza <gerald.baeza@st.com> Signed-off-by: Alexandre TORGUE <alexandre.torgue@st.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/tty/serial/stm32-usart.h')
-rw-r--r--drivers/tty/serial/stm32-usart.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/tty/serial/stm32-usart.h b/drivers/tty/serial/stm32-usart.h
index 75f8388c91df..41d974923102 100644
--- a/drivers/tty/serial/stm32-usart.h
+++ b/drivers/tty/serial/stm32-usart.h
@@ -99,6 +99,9 @@ struct stm32_usart_info stm32f7_info = {
/* Dummy bits */
#define USART_SR_DUMMY_RX BIT(16)
+/* USART_ICR (F7) */
+#define USART_CR_TC BIT(6)
+
/* USART_DR */
#define USART_DR_MASK GENMASK(8, 0)
@@ -204,10 +207,21 @@ struct stm32_usart_info stm32f7_info = {
#define STM32_SERIAL_NAME "ttyS"
#define STM32_MAX_PORTS 6
+#define RX_BUF_L 200 /* dma rx buffer length */
+#define RX_BUF_P RX_BUF_L /* dma rx buffer period */
+#define TX_BUF_L 200 /* dma tx buffer length */
+
struct stm32_port {
struct uart_port port;
struct clk *clk;
struct stm32_usart_info *info;
+ struct dma_chan *rx_ch; /* dma rx channel */
+ dma_addr_t rx_dma_buf; /* dma rx buffer bus address */
+ unsigned char *rx_buf; /* dma rx buffer cpu address */
+ struct dma_chan *tx_ch; /* dma tx channel */
+ dma_addr_t tx_dma_buf; /* dma tx buffer bus address */
+ unsigned char *tx_buf; /* dma tx buffer cpu address */
+ bool tx_dma_busy; /* dma tx busy */
bool hw_flow_control;
};