mirror of
https://github.com/apache/nuttx.git
synced 2026-05-24 07:46:16 +08:00
stm32: add support for serial TX DMA
This commit is contained in:
committed by
Alan Carvalho de Assis
parent
0cca102d41
commit
3c34337064
File diff suppressed because it is too large
Load Diff
+201
-36
@@ -282,47 +282,63 @@
|
||||
|
||||
#if !defined(HAVE_SERIALDRIVER) || !defined(CONFIG_ARCH_DMA)
|
||||
# undef CONFIG_USART1_RXDMA
|
||||
# undef CONFIG_USART1_TXDMA
|
||||
# undef CONFIG_USART2_RXDMA
|
||||
# undef CONFIG_USART2_TXDMA
|
||||
# undef CONFIG_USART3_RXDMA
|
||||
# undef CONFIG_USART3_TXDMA
|
||||
# undef CONFIG_UART4_RXDMA
|
||||
# undef CONFIG_UART4_TXDMA
|
||||
# undef CONFIG_UART5_RXDMA
|
||||
# undef CONFIG_UART5_TXDMA
|
||||
# undef CONFIG_USART6_RXDMA
|
||||
# undef CONFIG_USART6_TXDMA
|
||||
# undef CONFIG_UART7_RXDMA
|
||||
# undef CONFIG_UART7_TXDMA
|
||||
# undef CONFIG_UART8_RXDMA
|
||||
# undef CONFIG_UART8_TXDMA
|
||||
#endif
|
||||
|
||||
/* Disable the DMA configuration on all unused USARTs */
|
||||
|
||||
#ifndef CONFIG_STM32_USART1_SERIALDRIVER
|
||||
# undef CONFIG_USART1_RXDMA
|
||||
# undef CONFIG_USART1_TXDMA
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_STM32_USART2_SERIALDRIVER
|
||||
# undef CONFIG_USART2_RXDMA
|
||||
# undef CONFIG_USART2_TXDMA
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_STM32_USART3_SERIALDRIVER
|
||||
# undef CONFIG_USART3_RXDMA
|
||||
# undef CONFIG_USART3_TXDMA
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_STM32_UART4_SERIALDRIVER
|
||||
# undef CONFIG_UART4_RXDMA
|
||||
# undef CONFIG_UART4_TXDMA
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_STM32_UART5_SERIALDRIVER
|
||||
# undef CONFIG_UART5_RXDMA
|
||||
# undef CONFIG_UART5_TXDMA
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_STM32_USART6_SERIALDRIVER
|
||||
# undef CONFIG_USART6_RXDMA
|
||||
# undef CONFIG_USART6_TXDMA
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_STM32_UART7_SERIALDRIVER
|
||||
# undef CONFIG_UART7_RXDMA
|
||||
# undef CONFIG_UART7_TXDMA
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_STM32_UART8_SERIALDRIVER
|
||||
# undef CONFIG_UART8_RXDMA
|
||||
# undef CONFIG_UART8_TXDMA
|
||||
#endif
|
||||
|
||||
/* Is DMA available on any (enabled) USART? */
|
||||
@@ -335,46 +351,195 @@
|
||||
# define SERIAL_HAVE_RXDMA 1
|
||||
#endif
|
||||
|
||||
/* Is DMA used on the console UART? */
|
||||
/* Is TX DMA available on any (enabled) USART? */
|
||||
|
||||
#undef SERIAL_HAVE_CONSOLE_DMA
|
||||
#if defined(CONFIG_USART1_SERIAL_CONSOLE) && defined(CONFIG_USART1_RXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_DMA 1
|
||||
#elif defined(CONFIG_USART2_SERIAL_CONSOLE) && defined(CONFIG_USART2_RXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_DMA 1
|
||||
#elif defined(CONFIG_USART3_SERIAL_CONSOLE) && defined(CONFIG_USART3_RXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_DMA 1
|
||||
#elif defined(CONFIG_UART4_SERIAL_CONSOLE) && defined(CONFIG_UART4_RXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_DMA 1
|
||||
#elif defined(CONFIG_UART5_SERIAL_CONSOLE) && defined(CONFIG_UART5_RXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_DMA 1
|
||||
#elif defined(CONFIG_USART6_SERIAL_CONSOLE) && defined(CONFIG_USART6_RXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_DMA 1
|
||||
#elif defined(CONFIG_UART7_SERIAL_CONSOLE) && defined(CONFIG_UART7_RXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_DMA 1
|
||||
#elif defined(CONFIG_UART8_SERIAL_CONSOLE) && defined(CONFIG_UART8_RXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_DMA 1
|
||||
#undef SERIAL_HAVE_TXDMA
|
||||
#if defined(CONFIG_USART1_TXDMA) || defined(CONFIG_USART2_TXDMA) || \
|
||||
defined(CONFIG_USART3_TXDMA) || defined(CONFIG_UART4_TXDMA) || \
|
||||
defined(CONFIG_UART5_TXDMA) || defined(CONFIG_USART6_TXDMA) || \
|
||||
defined(CONFIG_UART7_TXDMA) || defined(CONFIG_UART8_TXDMA)
|
||||
# define SERIAL_HAVE_TXDMA 1
|
||||
#endif
|
||||
|
||||
/* Is DMA used on all (enabled) USARTs */
|
||||
/* Is RX DMA used on the console UART? */
|
||||
|
||||
#define SERIAL_HAVE_ONLY_DMA 1
|
||||
#if defined(CONFIG_STM32_USART1_SERIALDRIVER) && !defined(CONFIG_USART1_RXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_DMA
|
||||
#elif defined(CONFIG_STM32_USART2_SERIALDRIVER) && !defined(CONFIG_USART2_RXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_DMA
|
||||
#elif defined(CONFIG_STM32_USART3_SERIALDRIVER) && !defined(CONFIG_USART3_RXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_DMA
|
||||
#elif defined(CONFIG_STM32_UART4_SERIALDRIVER) && !defined(CONFIG_UART4_RXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_DMA
|
||||
#elif defined(CONFIG_STM32_UART5_SERIALDRIVER) && !defined(CONFIG_UART5_RXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_DMA
|
||||
#elif defined(CONFIG_STM32_USART6_SERIALDRIVER) && !defined(CONFIG_USART6_RXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_DMA
|
||||
#elif defined(CONFIG_STM32_UART7_SERIALDRIVER) && !defined(CONFIG_UART7_RXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_DMA
|
||||
#elif defined(CONFIG_STM32_UART8_SERIALDRIVER) && !defined(CONFIG_UART8_RXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_DMA
|
||||
#undef SERIAL_HAVE_CONSOLE_RXDMA
|
||||
#if defined(CONFIG_USART1_SERIAL_CONSOLE) && defined(CONFIG_USART1_RXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_RXDMA 1
|
||||
#elif defined(CONFIG_USART2_SERIAL_CONSOLE) && defined(CONFIG_USART2_RXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_RXDMA 1
|
||||
#elif defined(CONFIG_USART3_SERIAL_CONSOLE) && defined(CONFIG_USART3_RXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_RXDMA 1
|
||||
#elif defined(CONFIG_UART4_SERIAL_CONSOLE) && defined(CONFIG_UART4_RXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_RXDMA 1
|
||||
#elif defined(CONFIG_UART5_SERIAL_CONSOLE) && defined(CONFIG_UART5_RXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_RXDMA 1
|
||||
#elif defined(CONFIG_USART6_SERIAL_CONSOLE) && defined(CONFIG_USART6_RXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_RXDMA 1
|
||||
#elif defined(CONFIG_UART7_SERIAL_CONSOLE) && defined(CONFIG_UART7_RXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_RXDMA 1
|
||||
#elif defined(CONFIG_UART8_SERIAL_CONSOLE) && defined(CONFIG_UART8_RXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_RXDMA 1
|
||||
#endif
|
||||
|
||||
/* Is TX DMA used on the console UART? */
|
||||
|
||||
#undef SERIAL_HAVE_CONSOLE_TXDMA
|
||||
#if defined(CONFIG_USART1_SERIAL_CONSOLE) && defined(CONFIG_USART1_TXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_TXDMA 1
|
||||
#elif defined(CONFIG_USART2_SERIAL_CONSOLE) && defined(CONFIG_USART2_TXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_TXDMA 1
|
||||
#elif defined(CONFIG_USART3_SERIAL_CONSOLE) && defined(CONFIG_USART3_TXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_TXDMA 1
|
||||
#elif defined(CONFIG_UART4_SERIAL_CONSOLE) && defined(CONFIG_UART4_TXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_TXDMA 1
|
||||
#elif defined(CONFIG_UART5_SERIAL_CONSOLE) && defined(CONFIG_UART5_TXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_TXDMA 1
|
||||
#elif defined(CONFIG_USART6_SERIAL_CONSOLE) && defined(CONFIG_USART6_TXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_TXDMA 1
|
||||
#elif defined(CONFIG_UART7_SERIAL_CONSOLE) && defined(CONFIG_UART7_TXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_TXDMA 1
|
||||
#elif defined(CONFIG_UART8_SERIAL_CONSOLE) && defined(CONFIG_UART8_TXDMA)
|
||||
# define SERIAL_HAVE_CONSOLE_TXDMA 1
|
||||
#endif
|
||||
|
||||
/* Is RX DMA used on all (enabled) USARTs */
|
||||
|
||||
#define SERIAL_HAVE_ONLY_RXDMA 1
|
||||
#if defined(CONFIG_STM32_USART1) && !defined(CONFIG_USART1_RXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_RXDMA
|
||||
#elif defined(CONFIG_STM32_USART2) && !defined(CONFIG_USART2_RXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_RXDMA
|
||||
#elif defined(CONFIG_STM32_USART3) && !defined(CONFIG_USART3_RXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_RXDMA
|
||||
#elif defined(CONFIG_STM32_UART4) && !defined(CONFIG_UART4_RXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_RXDMA
|
||||
#elif defined(CONFIG_STM32_UART5) && !defined(CONFIG_UART5_RXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_RXDMA
|
||||
#elif defined(CONFIG_STM32_USART6) && !defined(CONFIG_USART6_RXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_RXDMA
|
||||
#elif defined(CONFIG_STM32_UART7) && !defined(CONFIG_UART7_RXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_RXDMA
|
||||
#elif defined(CONFIG_STM32_UART8) && !defined(CONFIG_UART8_RXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_RXDMA
|
||||
#endif
|
||||
|
||||
/* Is TX DMA used on all (enabled) USARTs */
|
||||
|
||||
#define SERIAL_HAVE_ONLY_TXDMA 1
|
||||
#if defined(CONFIG_STM32_USART1) && !defined(CONFIG_USART1_TXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_TXDMA
|
||||
#elif defined(CONFIG_STM32_USART2) && !defined(CONFIG_USART2_TXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_TXDMA
|
||||
#elif defined(CONFIG_STM32_USART3) && !defined(CONFIG_USART3_TXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_TXDMA
|
||||
#elif defined(CONFIG_STM32_UART4) && !defined(CONFIG_UART4_TXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_TXDMA
|
||||
#elif defined(CONFIG_STM32_UART5) && !defined(CONFIG_UART5_TXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_TXDMA
|
||||
#elif defined(CONFIG_STM32_USART6) && !defined(CONFIG_USART6_TXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_TXDMA
|
||||
#elif defined(CONFIG_STM32_UART7) && !defined(CONFIG_UART7_TXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_TXDMA
|
||||
#elif defined(CONFIG_STM32_UART8) && !defined(CONFIG_UART8_TXDMA)
|
||||
# undef SERIAL_HAVE_ONLY_TXDMA
|
||||
#endif
|
||||
|
||||
#undef SERIAL_HAVE_ONLY_DMA
|
||||
#if defined(SERIAL_HAVE_ONLY_RXDMA) && defined(SERIAL_HAVE_ONLY_TXDMA)
|
||||
# define SERIAL_HAVE_ONLY_DMA 1
|
||||
#endif
|
||||
|
||||
/* No DMA ops */
|
||||
|
||||
#undef SERIAL_HAVE_NODMA_OPS
|
||||
#if defined(CONFIG_STM32_USART1) && !defined(CONFIG_USART1_RXDMA) && \
|
||||
!defined(CONFIG_USART1_TXDMA)
|
||||
# define SERIAL_HAVE_NODMA_OPS
|
||||
#elif defined(CONFIG_STM32_USART2) && !defined(CONFIG_USART2_RXDMA) && \
|
||||
!defined(CONFIG_USART2_TXDMA)
|
||||
# define SERIAL_HAVE_NODMA_OPS
|
||||
#elif defined(CONFIG_STM32_USART3) && !defined(CONFIG_USART3_RXDMA) && \
|
||||
!defined(CONFIG_USART3_TXDMA)
|
||||
# define SERIAL_HAVE_NODMA_OPS
|
||||
#elif defined(CONFIG_STM32_UART4) && !defined(CONFIG_USART4_RXDMA) && \
|
||||
!defined(CONFIG_USART4_TXDMA)
|
||||
# define SERIAL_HAVE_NODMA_OPS
|
||||
#elif defined(CONFIG_STM32_UART5) && !defined(CONFIG_USART5_RXDMA) && \
|
||||
!defined(CONFIG_USART5_TXDMA)
|
||||
# define SERIAL_HAVE_NODMA_OPS
|
||||
#elif defined(CONFIG_STM32_USART6) && !defined(CONFIG_USART6_RXDMA) && \
|
||||
!defined(CONFIG_USART6_TXDMA)
|
||||
# define SERIAL_HAVE_NODMA_OPS
|
||||
#elif defined(CONFIG_STM32_UART7) && !defined(CONFIG_USART7_RXDMA) && \
|
||||
!defined(CONFIG_USART7_TXDMA)
|
||||
# define SERIAL_HAVE_NODMA_OPS
|
||||
#elif defined(CONFIG_STM32_UART8) && !defined(CONFIG_USART8_RXDMA) && \
|
||||
!defined(CONFIG_USART8_TXDMA)
|
||||
# define SERIAL_HAVE_NODMA_OPS
|
||||
#endif
|
||||
|
||||
/* RX+TX DMA ops */
|
||||
|
||||
#undef SERIAL_HAVE_RXTXDMA_OPS
|
||||
#if defined(CONFIG_USART1_RXDMA) && defined(CONFIG_USART1_TXDMA)
|
||||
# define SERIAL_HAVE_RXTXDMA_OPS
|
||||
#elif defined(CONFIG_USART2_RXDMA) && defined(CONFIG_USART2_TXDMA)
|
||||
# define SERIAL_HAVE_RXTXDMA_OPS
|
||||
#elif defined(CONFIG_USART3_RXDMA) && defined(CONFIG_USART3_TXDMA)
|
||||
# define SERIAL_HAVE_RXTXDMA_OPS
|
||||
#elif defined(CONFIG_USART4_RXDMA) && defined(CONFIG_USART4_TXDMA)
|
||||
# define SERIAL_HAVE_RXTXDMA_OPS
|
||||
#elif defined(CONFIG_USART5_RXDMA) && defined(CONFIG_USART5_TXDMA)
|
||||
# define SERIAL_HAVE_RXTXDMA_OPS
|
||||
#elif defined(CONFIG_USART6_RXDMA) && defined(CONFIG_USART6_TXDMA)
|
||||
# define SERIAL_HAVE_RXTXDMA_OPS
|
||||
#elif defined(CONFIG_USART7_RXDMA) && defined(CONFIG_USART7_TXDMA)
|
||||
# define SERIAL_HAVE_RXTXDMA_OPS
|
||||
#elif defined(CONFIG_USART8_RXDMA) && defined(CONFIG_USART8_TXDMA)
|
||||
# define SERIAL_HAVE_RXTXDMA_OPS
|
||||
#endif
|
||||
|
||||
/* TX DMA ops */
|
||||
|
||||
#undef SERIAL_HAVE_TXDMA_OPS
|
||||
#if !defined(CONFIG_USART1_RXDMA) && defined(CONFIG_USART1_TXDMA)
|
||||
# define SERIAL_HAVE_TXDMA_OPS
|
||||
#elif !defined(CONFIG_USART2_RXDMA) && defined(CONFIG_USART2_TXDMA)
|
||||
# define SERIAL_HAVE_TXDMA_OPS
|
||||
#elif !defined(CONFIG_USART3_RXDMA) && defined(CONFIG_USART3_TXDMA)
|
||||
# define SERIAL_HAVE_TXDMA_OPS
|
||||
#elif !defined(CONFIG_USART4_RXDMA) && defined(CONFIG_USART4_TXDMA)
|
||||
# define SERIAL_HAVE_TXDMA_OPS
|
||||
#elif !defined(CONFIG_USART5_RXDMA) && defined(CONFIG_USART5_TXDMA)
|
||||
# define SERIAL_HAVE_TXDMA_OPS
|
||||
#elif !defined(CONFIG_USART6_RXDMA) && defined(CONFIG_USART6_TXDMA)
|
||||
# define SERIAL_HAVE_TXDMA_OPS
|
||||
#elif !defined(CONFIG_USART7_RXDMA) && defined(CONFIG_USART7_TXDMA)
|
||||
# define SERIAL_HAVE_TXDMA_OPS
|
||||
#elif !defined(CONFIG_USART8_RXDMA) && defined(CONFIG_USART8_TXDMA)
|
||||
# define SERIAL_HAVE_TXDMA_OPS
|
||||
#endif
|
||||
|
||||
/* RX DMA ops */
|
||||
|
||||
#undef SERIAL_HAVE_RXDMA_OPS
|
||||
#if defined(CONFIG_USART1_RXDMA) && !defined(CONFIG_USART1_TXDMA)
|
||||
# define SERIAL_HAVE_RXDMA_OPS
|
||||
#elif defined(CONFIG_USART2_RXDMA) && !defined(CONFIG_USART2_TXDMA)
|
||||
# define SERIAL_HAVE_RXDMA_OPS
|
||||
#elif defined(CONFIG_USART3_RXDMA) && !defined(CONFIG_USART3_TXDMA)
|
||||
# define SERIAL_HAVE_RXDMA_OPS
|
||||
#elif defined(CONFIG_USART4_RXDMA) && !defined(CONFIG_USART4_TXDMA)
|
||||
# define SERIAL_HAVE_RXDMA_OPS
|
||||
#elif defined(CONFIG_USART5_RXDMA) && !defined(CONFIG_USART5_TXDMA)
|
||||
# define SERIAL_HAVE_RXDMA_OPS
|
||||
#elif defined(CONFIG_USART6_RXDMA) && !defined(CONFIG_USART6_TXDMA)
|
||||
# define SERIAL_HAVE_RXDMA_OPS
|
||||
#elif defined(CONFIG_USART7_RXDMA) && !defined(CONFIG_USART7_TXDMA)
|
||||
# define SERIAL_HAVE_RXDMA_OPS
|
||||
#elif defined(CONFIG_USART8_RXDMA) && !defined(CONFIG_USART8_TXDMA)
|
||||
# define SERIAL_HAVE_RXDMA_OPS
|
||||
#endif
|
||||
|
||||
/* Is RS-485 used? */
|
||||
|
||||
Reference in New Issue
Block a user