Browse Source

drivers: clock_control: add uart clock handling

Add clock bindings for UART/USART (1-9) peripherals in the
`stm32mp2_clock.h`.
Add UART/USART clocks rate reading to the STM32MP2 clock driver.

Signed-off-by: Youssef Zini <youssef.zini@savoirfairelinux.com>
pull/92139/head
Youssef Zini 1 month ago committed by Daniel DeGrasse
parent
commit
03d3075dc8
  1. 33
      drivers/clock_control/clock_stm32_ll_mp2.c
  2. 13
      include/zephyr/dt-bindings/clock/stm32mp2_clock.h

33
drivers/clock_control/clock_stm32_ll_mp2.c

@ -46,10 +46,37 @@ static int stm32_clock_control_off(const struct device *dev, clock_control_subsy @@ -46,10 +46,37 @@ static int stm32_clock_control_off(const struct device *dev, clock_control_subsy
static int stm32_clock_control_get_subsys_rate(const struct device *dev,
clock_control_subsys_t sub_system, uint32_t *rate)
{
struct stm32_pclken *pclken = (struct stm32_pclken *)(sub_system);
ARG_UNUSED(dev);
ARG_UNUSED(sub_system);
ARG_UNUSED(rate);
return -ENOTSUP;
switch (pclken->bus) {
case STM32_CLOCK_PERIPH_USART1:
*rate = LL_RCC_GetUARTClockFreq(LL_RCC_USART1_CLKSOURCE);
break;
case STM32_CLOCK_PERIPH_USART2:
case STM32_CLOCK_PERIPH_UART4:
*rate = LL_RCC_GetUARTClockFreq(LL_RCC_UART24_CLKSOURCE);
break;
case STM32_CLOCK_PERIPH_USART3:
case STM32_CLOCK_PERIPH_UART5:
*rate = LL_RCC_GetUARTClockFreq(LL_RCC_USART35_CLKSOURCE);
break;
case STM32_CLOCK_PERIPH_USART6:
*rate = LL_RCC_GetUARTClockFreq(LL_RCC_USART6_CLKSOURCE);
break;
case STM32_CLOCK_PERIPH_UART7:
case STM32_CLOCK_PERIPH_UART8:
*rate = LL_RCC_GetUARTClockFreq(LL_RCC_UART78_CLKSOURCE);
break;
case STM32_CLOCK_PERIPH_UART9:
*rate = LL_RCC_GetUARTClockFreq(LL_RCC_UART9_CLKSOURCE);
break;
default:
return -ENOTSUP;
}
return 0;
}
static DEVICE_API(clock_control, stm32_clock_control_api) = {

13
include/zephyr/dt-bindings/clock/stm32mp2_clock.h

@ -39,7 +39,18 @@ @@ -39,7 +39,18 @@
#define STM32_CLOCK_PERIPH_GPIOK 0x554
#define STM32_CLOCK_PERIPH_GPIOZ 0x558
/* USART/UART Peripheral */
#define STM32_CLOCK_PERIPH_USART1 0x77C
#define STM32_CLOCK_PERIPH_USART2 0x780
#define STM32_CLOCK_PERIPH_USART3 0x784
#define STM32_CLOCK_PERIPH_UART4 0x788
#define STM32_CLOCK_PERIPH_UART5 0x78C
#define STM32_CLOCK_PERIPH_USART6 0x790
#define STM32_CLOCK_PERIPH_UART7 0x794
#define STM32_CLOCK_PERIPH_UART8 0x798
#define STM32_CLOCK_PERIPH_UART9 0x79C
#define STM32_CLOCK_PERIPH_MIN STM32_CLOCK_PERIPH_GPIOA
#define STM32_CLOCK_PERIPH_MAX STM32_CLOCK_PERIPH_GPIOZ
#define STM32_CLOCK_PERIPH_MAX STM32_CLOCK_PERIPH_UART9
#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32MP2_CLOCK_H_ */

Loading…
Cancel
Save