3535#define fn_mco2_prescaler (v ) LL_RCC_MCO2_DIV_ ## v
3636#define mco2_prescaler (v ) fn_mco2_prescaler(v)
3737
38- /* Calculate MSI freq for the given range(at RUN range, not after standby) */
39- #if defined(CONFIG_SOC_SERIES_STM32WBX )
40- #define RCC_CALC_MSI_RUN_FREQ ( range ) __LL_RCC_CALC_MSI_FREQ( \
41- range << RCC_CR_MSIRANGE_Pos )
38+ /* Calculate MSI freq for the given range (at RUN range, not after standby) */
39+ #if ! defined(LL_RCC_MSIRANGESEL_RUN )
40+ /* CONFIG_SOC_SERIES_STM32WBX or CONFIG_SOC_SERIES_STM32L0X or CONFIG_SOC_SERIES_STM32L1X */
41+ #define RCC_CALC_MSI_RUN_FREQ () __LL_RCC_CALC_MSI_FREQ(LL_RCC_MSI_GetRange() )
4242#else
43- #define RCC_CALC_MSI_RUN_FREQ (range ) __LL_RCC_CALC_MSI_FREQ( \
44- LL_RCC_MSIRANGESEL_RUN, range << RCC_CR_MSIRANGE_Pos)
43+ /* mainly CONFIG_SOC_SERIES_STM32WLX or CONFIG_SOC_SERIES_STM32L4X or CONFIG_SOC_SERIES_STM32L5X */
44+ #define RCC_CALC_MSI_RUN_FREQ () __LL_RCC_CALC_MSI_FREQ( \
45+ LL_RCC_MSIRANGESEL_RUN, LL_RCC_MSI_GetRange())
4546#endif
4647
4748#if defined(CONFIG_SOC_SERIES_STM32WBX ) || defined(CONFIG_SOC_SERIES_STM32WLX )
@@ -444,9 +445,9 @@ int stm32_clock_control_init(const struct device *dev)
444445#if STM32_PLL_SRC_MSI
445446
446447 /* Set MSI Range */
447- #if ! defined(CONFIG_SOC_SERIES_STM32WBX )
448+ #if defined(RCC_CR_MSIRGSEL )
448449 LL_RCC_MSI_EnableRangeSelection ();
449- #endif
450+ #endif /* RCC_CR_MSIRGSEL */
450451 LL_RCC_MSI_SetRange (STM32_MSI_RANGE << RCC_CR_MSIRANGE_Pos );
451452 LL_RCC_MSI_SetCalibTrimming (0 );
452453
@@ -604,11 +605,11 @@ int stm32_clock_control_init(const struct device *dev)
604605 GET_CURRENT_FLASH_PRESCALER ());
605606
606607 new_hclk_freq = __LL_RCC_CALC_HCLK_FREQ (
607- RCC_CALC_MSI_RUN_FREQ (STM32_MSI_RANGE ),
608+ RCC_CALC_MSI_RUN_FREQ (),
608609 hclk_prescaler );
609610#if defined(CONFIG_SOC_SERIES_STM32WBX ) || defined(CONFIG_SOC_SERIES_STM32WLX )
610611 new_flash_freq = RCC_CALC_FLASH_FREQ (
611- RCC_CALC_MSI_RUN_FREQ (STM32_MSI_RANGE ),
612+ RCC_CALC_MSI_RUN_FREQ (),
612613 flash_prescaler );
613614#else
614615 new_flash_freq = new_hclk_freq ;
@@ -626,10 +627,15 @@ int stm32_clock_control_init(const struct device *dev)
626627 }
627628
628629 /* Set MSI Range */
629- #if ! defined(CONFIG_SOC_SERIES_STM32WBX )
630+ #if defined(RCC_CR_MSIRGSEL )
630631 LL_RCC_MSI_EnableRangeSelection ();
631- #endif
632+ #endif /* RCC_CR_MSIRGSEL */
633+
634+ #if defined(CONFIG_SOC_SERIES_STM32L0X ) || defined(CONFIG_SOC_SERIES_STM32L1X )
635+ LL_RCC_MSI_SetRange (STM32_MSI_RANGE << RCC_ICSCR_MSIRANGE_Pos );
636+ #else
632637 LL_RCC_MSI_SetRange (STM32_MSI_RANGE << RCC_CR_MSIRANGE_Pos );
638+ #endif /* CONFIG_SOC_SERIES_STM32L0X || CONFIG_SOC_SERIES_STM32L1X */
633639
634640#if STM32_MSI_PLL_MODE
635641 /* Enable MSI hardware auto calibration */
0 commit comments