From 6a3c357a50e7ce4f612a66dfdc5e03e71433eabf Mon Sep 17 00:00:00 2001 From: Kevin O'Connor Date: Mon, 24 May 2021 21:17:51 -0400 Subject: [PATCH] stm32: Add alternate serial ports on stm32f4 Signed-off-by: Kevin O'Connor --- src/stm32/Kconfig | 13 ++++++++++--- src/stm32/serial.c | 12 ++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/stm32/Kconfig b/src/stm32/Kconfig index 2d1495c4..cdd4527f 100644 --- a/src/stm32/Kconfig +++ b/src/stm32/Kconfig @@ -233,18 +233,25 @@ choice config STM32_SERIAL_USART1_ALT_PA15_PA14 bool "Serial (on USART1 PA15/PA14)" if LOW_LEVEL_OPTIONS && MACH_STM32F0 select SERIAL + config STM32_SERIAL_USART1_ALT_PB7_PB6 + bool "Serial (on USART1 PB7/PB6)" if LOW_LEVEL_OPTIONS && MACH_STM32F4 + select SERIAL config STM32_SERIAL_USART2 bool "Serial (on USART2 PA3/PA2)" if LOW_LEVEL_OPTIONS select SERIAL config STM32_SERIAL_USART2_ALT_PA15_PA14 bool "Serial (on USART2 PA15/PA14)" if LOW_LEVEL_OPTIONS && MACH_STM32F0 select SERIAL + config STM32_SERIAL_USART2_ALT_PD6_PD5 + bool "Serial (on USART2 PD6/PD5)" if LOW_LEVEL_OPTIONS && MACH_STM32F4 + select SERIAL config STM32_SERIAL_USART3 - bool "Serial (on USART3 PB11/PB10)" if LOW_LEVEL_OPTIONS && !MACH_STM32F0 + bool "Serial (on USART3 PB11/PB10)" if LOW_LEVEL_OPTIONS + depends on MACH_STM32F405 || MACH_STM32F407 || MACH_STM32F446 select SERIAL config STM32_SERIAL_USART3_ALT_PD9_PD8 - depends on LOW_LEVEL_OPTIONS && (MACH_STM32F405 || MACH_STM32F407) - bool "Serial (on USART3 PD9/PD8)" + bool "Serial (on USART3 PD9/PD8)" if LOW_LEVEL_OPTIONS + depends on MACH_STM32F405 || MACH_STM32F407 || MACH_STM32F446 select SERIAL config STM32_CANBUS_PA11_PA12 bool "CAN bus (on PA11/PA12)" if HAVE_STM32_CANBUS diff --git a/src/stm32/serial.c b/src/stm32/serial.c index 38432fa5..5806eaab 100644 --- a/src/stm32/serial.c +++ b/src/stm32/serial.c @@ -18,12 +18,24 @@ #define GPIO_Tx GPIO('A', 9) #define USARTx USART1 #define USARTx_IRQn USART1_IRQn +#elif CONFIG_STM32_SERIAL_USART1_ALT_PB7_PB6 + DECL_CONSTANT_STR("RESERVE_PINS_serial", "PB7,PB6"); + #define GPIO_Rx GPIO('B', 7) + #define GPIO_Tx GPIO('B', 6) + #define USARTx USART1 + #define USARTx_IRQn USART1_IRQn #elif CONFIG_STM32_SERIAL_USART2 DECL_CONSTANT_STR("RESERVE_PINS_serial", "PA3,PA2"); #define GPIO_Rx GPIO('A', 3) #define GPIO_Tx GPIO('A', 2) #define USARTx USART2 #define USARTx_IRQn USART2_IRQn +#elif CONFIG_STM32_SERIAL_USART2_ALT_PD6_PD5 + DECL_CONSTANT_STR("RESERVE_PINS_serial", "PD6,PD5"); + #define GPIO_Rx GPIO('D', 6) + #define GPIO_Tx GPIO('D', 5) + #define USARTx USART2 + #define USARTx_IRQn USART2_IRQn #elif CONFIG_STM32_SERIAL_USART3 DECL_CONSTANT_STR("RESERVE_PINS_serial", "PB11,PB10"); #define GPIO_Rx GPIO('B', 11)