summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--chip/stm32/registers.h8
-rw-r--r--chip/stm32/uart.c8
2 files changed, 13 insertions, 3 deletions
diff --git a/chip/stm32/registers.h b/chip/stm32/registers.h
index 4a15c20d2d..70c846a683 100644
--- a/chip/stm32/registers.h
+++ b/chip/stm32/registers.h
@@ -608,8 +608,14 @@ typedef volatile struct timer_ctlr timer_ctlr_t;
#define STM32_RCC_APB2ENR REG32(STM32_RCC_BASE + 0x60)
#define STM32_RCC_CCIPR REG32(STM32_RCC_BASE + 0x88)
-#define STM32_RCC_CCIPR_LPUART1SEL_SHIFT (10)
+#define STM32_RCC_CCIPR_PCLK 0
+#define STM32_RCC_CCIPR_SYSCLK 1
+#define STM32_RCC_CCIPR_HSI 2
+#define STM32_RCC_CCIPR_LSE 3
#define STM32_RCC_CCIPR_USART1SEL_SHIFT (0)
+#define STM32_RCC_CCIPR_USART1SEL_MASK (2 << STM32_RCC_CCIPR_USART1SEL_SHIFT)
+#define STM32_RCC_CCIPR_LPUART1SEL_SHIFT (10)
+#define STM32_RCC_CCIPR_LPUART1SEL_MASK (2 << STM32_RCC_CCIPR_LPUART1SEL_SHIFT)
#define STM32_RCC_BDCR REG32(STM32_RCC_BASE + 0x90)
diff --git a/chip/stm32/uart.c b/chip/stm32/uart.c
index d18b4b781a..8fbb6a3436 100644
--- a/chip/stm32/uart.c
+++ b/chip/stm32/uart.c
@@ -268,8 +268,12 @@ void uart_init(void)
STM32_RCC_CFGR3 |= 0x030000; /* USART2 clock source from HSI(8MHz) */
#endif /* UARTN */
#elif defined(CHIP_FAMILY_STM32L4)
- STM32_RCC_CCIPR |= (0x2 << STM32_RCC_CCIPR_USART1SEL_SHIFT);
- STM32_RCC_CCIPR |= (0x2 << STM32_RCC_CCIPR_LPUART1SEL_SHIFT);
+ STM32_RCC_CCIPR &= ~STM32_RCC_CCIPR_USART1SEL_MASK;
+ STM32_RCC_CCIPR |= (STM32_RCC_CCIPR_SYSCLK <<
+ STM32_RCC_CCIPR_USART1SEL_SHIFT);
+ STM32_RCC_CCIPR &= ~STM32_RCC_CCIPR_LPUART1SEL_MASK;
+ STM32_RCC_CCIPR |= (STM32_RCC_CCIPR_SYSCLK <<
+ STM32_RCC_CCIPR_LPUART1SEL_SHIFT);
#endif /* CHIP_FAMILY_STM32F0 || CHIP_FAMILY_STM32F3 */
/* Enable USART clock */