stm32:rcc: update _get_clock (uart/i2c) to handle all cases
Adds handling for missing cases. While i2c only has 3 cases, uarts have
all 4, so make sure they're handled properly.
Removes duplicated/redundant definitions.
Adds doxygen wrappers, even if only for internal use.
Fixes: e41ac6ea71 stm32: added peripheral clock get helpers for all stm32
Signed-of-by: Karl Palsson <karlp@tweak.au>
This commit is contained in:
@@ -630,12 +630,14 @@ static uint32_t rcc_get_usart_clksel_freq(uint8_t shift) {
|
||||
uint8_t clksel = (RCC_CFGR3 >> shift) & RCC_CFGR3_USARTxSW_MASK;
|
||||
uint8_t hpre = (RCC_CFGR >> RCC_CFGR_HPRE_SHIFT) & RCC_CFGR_HPRE_MASK;
|
||||
switch (clksel) {
|
||||
case RCC_CFGR3_USART1SW_PCLK:
|
||||
return rcc_apb1_frequency;
|
||||
case RCC_CFGR3_USART1SW_SYSCLK:
|
||||
return rcc_ahb_frequency * rcc_get_div_from_hpre(hpre);
|
||||
case RCC_CFGR3_USART1SW_HSI:
|
||||
return 8000000U;
|
||||
case RCC_CFGR3_USARTxSW_PCLK:
|
||||
return rcc_apb1_frequency;
|
||||
case RCC_CFGR3_USARTxSW_SYSCLK:
|
||||
return rcc_ahb_frequency * rcc_get_div_from_hpre(hpre);
|
||||
case RCC_CFGR3_USARTxSW_LSE:
|
||||
return 32768;
|
||||
case RCC_CFGR3_USARTxSW_HSI:
|
||||
return 8000000U;
|
||||
}
|
||||
cm3_assert_not_reached();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user