drivers: clock_control: Make LSE driving configurable
Make the LSE driving capability configurable for the STM32 series. Fixes #44737. Signed-off-by: Benedikt Schmidt <benedikt.schmidt@embedded-solutions.at>
This commit is contained in:
parent
0d44525eb7
commit
86469b1d0b
20 changed files with 65 additions and 12 deletions
|
@ -397,6 +397,8 @@ static void start_ble_rf(void)
|
|||
}
|
||||
|
||||
#if STM32_LSE_ENABLED
|
||||
/* Configure driving capability */
|
||||
LL_RCC_LSE_SetDriveCapability(STM32_LSE_DRIVING << RCC_BDCR_LSEDRV_Pos);
|
||||
/* Select LSE clock */
|
||||
LL_RCC_LSE_Enable();
|
||||
while (!LL_RCC_LSE_IsReady()) {
|
||||
|
|
|
@ -473,6 +473,9 @@ static void set_up_fixed_clock_sources(void)
|
|||
/* Enable backup domain */
|
||||
LL_PWR_EnableBkUpAccess();
|
||||
|
||||
/* Configure driving capability */
|
||||
LL_RCC_LSE_SetDriveCapability(STM32_LSE_DRIVING << RCC_BDCR_LSEDRV_Pos);
|
||||
|
||||
/* Enable LSE oscillator */
|
||||
LL_RCC_LSE_Enable();
|
||||
while (LL_RCC_LSE_IsReady() != 1) {
|
||||
|
|
|
@ -336,6 +336,9 @@ static void set_up_fixed_clock_sources(void)
|
|||
}
|
||||
}
|
||||
|
||||
/* Configure driving capability */
|
||||
LL_RCC_LSE_SetDriveCapability(STM32_LSE_DRIVING << RCC_BDCR_LSEDRV_Pos);
|
||||
|
||||
/* Enable LSE Oscillator */
|
||||
LL_RCC_LSE_Enable();
|
||||
/* Wait for LSE ready */
|
||||
|
|
|
@ -75,6 +75,8 @@ void config_enable_default_clocks(void)
|
|||
/* Wait for Backup domain access */
|
||||
}
|
||||
|
||||
/* Configure driving capability */
|
||||
LL_RCC_LSE_SetDriveCapability(STM32_LSE_DRIVING << RCC_BDCR_LSEDRV_Pos);
|
||||
/* Enable LSE Oscillator (32.768 kHz) */
|
||||
LL_RCC_LSE_Enable();
|
||||
while (!LL_RCC_LSE_IsReady()) {
|
||||
|
|
|
@ -88,6 +88,8 @@ void config_enable_default_clocks(void)
|
|||
/* Wait for Backup domain access */
|
||||
}
|
||||
|
||||
/* Configure driving capability */
|
||||
LL_RCC_LSE_SetDriveCapability(STM32_LSE_DRIVING << RCC_BDCR_LSEDRV_Pos);
|
||||
/* Enable LSE Oscillator (32.768 kHz) */
|
||||
LL_RCC_LSE_Enable();
|
||||
while (!LL_RCC_LSE_IsReady()) {
|
||||
|
|
|
@ -279,6 +279,7 @@ static int sys_clock_driver_init(const struct device *dev)
|
|||
|
||||
/* enable LSE clock */
|
||||
LL_RCC_LSE_DisableBypass();
|
||||
LL_RCC_LSE_SetDriveCapability(STM32_LSE_DRIVING << RCC_BDCR_LSEDRV_Pos);
|
||||
LL_RCC_LSE_Enable();
|
||||
while (!LL_RCC_LSE_IsReady()) {
|
||||
/* Wait for LSE ready */
|
||||
|
|
|
@ -49,8 +49,9 @@
|
|||
|
||||
clk_lse: clk-lse {
|
||||
#clock-cells = <0>;
|
||||
compatible = "fixed-clock";
|
||||
compatible = "st,stm32-lse-clock";
|
||||
clock-frequency = <32768>;
|
||||
driving-capability = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
|
|
@ -50,8 +50,9 @@
|
|||
|
||||
clk_lse: clk-lse {
|
||||
#clock-cells = <0>;
|
||||
compatible = "fixed-clock";
|
||||
compatible = "st,stm32-lse-clock";
|
||||
clock-frequency = <32768>;
|
||||
driving-capability = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
|
|
@ -55,8 +55,9 @@
|
|||
|
||||
clk_lse: clk-lse {
|
||||
#clock-cells = <0>;
|
||||
compatible = "fixed-clock";
|
||||
compatible = "st,stm32-lse-clock";
|
||||
clock-frequency = <32768>;
|
||||
driving-capability = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
|
|
@ -52,8 +52,9 @@
|
|||
|
||||
clk_lse: clk-lse {
|
||||
#clock-cells = <0>;
|
||||
compatible = "fixed-clock";
|
||||
compatible = "st,stm32-lse-clock";
|
||||
clock-frequency = <32768>;
|
||||
driving-capability = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
|
|
@ -51,8 +51,9 @@
|
|||
|
||||
clk_lse: clk-lse {
|
||||
#clock-cells = <0>;
|
||||
compatible = "fixed-clock";
|
||||
compatible = "st,stm32-lse-clock";
|
||||
clock-frequency = <32768>;
|
||||
driving-capability = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
|
|
@ -66,8 +66,9 @@
|
|||
|
||||
clk_lse: clk-lse {
|
||||
#clock-cells = <0>;
|
||||
compatible = "fixed-clock";
|
||||
compatible = "st,stm32-lse-clock";
|
||||
clock-frequency = <32768>;
|
||||
driving-capability = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
|
|
@ -56,8 +56,9 @@
|
|||
|
||||
clk_lse: clk-lse {
|
||||
#clock-cells = <0>;
|
||||
compatible = "fixed-clock";
|
||||
compatible = "st,stm32-lse-clock";
|
||||
clock-frequency = <32768>;
|
||||
driving-capability = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
|
|
@ -58,8 +58,9 @@
|
|||
|
||||
clk_lse: clk-lse {
|
||||
#clock-cells = <0>;
|
||||
compatible = "fixed-clock";
|
||||
compatible = "st,stm32-lse-clock";
|
||||
clock-frequency = <32768>;
|
||||
driving-capability = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
|
|
@ -66,8 +66,9 @@
|
|||
|
||||
clk_lse: clk-lse {
|
||||
#clock-cells = <0>;
|
||||
compatible = "fixed-clock";
|
||||
compatible = "st,stm32-lse-clock";
|
||||
clock-frequency = <32768>;
|
||||
driving-capability = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
|
|
@ -64,8 +64,9 @@
|
|||
|
||||
clk_lse: clk-lse {
|
||||
#clock-cells = <0>;
|
||||
compatible = "fixed-clock";
|
||||
compatible = "st,stm32-lse-clock";
|
||||
clock-frequency = <32768>;
|
||||
driving-capability = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
|
|
@ -71,8 +71,9 @@
|
|||
|
||||
clk_lse: clk-lse {
|
||||
#clock-cells = <0>;
|
||||
compatible = "fixed-clock";
|
||||
compatible = "st,stm32-lse-clock";
|
||||
clock-frequency = <32768>;
|
||||
driving-capability = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
|
|
@ -59,8 +59,9 @@
|
|||
|
||||
clk_lse: clk-lse {
|
||||
#clock-cells = <0>;
|
||||
compatible = "fixed-clock";
|
||||
compatible = "st,stm32-lse-clock";
|
||||
clock-frequency = <32768>;
|
||||
driving-capability = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
|
22
dts/bindings/clock/st,stm32-lse-clock.yaml
Normal file
22
dts/bindings/clock/st,stm32-lse-clock.yaml
Normal file
|
@ -0,0 +1,22 @@
|
|||
# Copyright (c) 2022, SILA Embedded Solutions GmbH
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
description: STM32 LSE Clock
|
||||
|
||||
compatible: "st,stm32-lse-clock"
|
||||
|
||||
include: [fixed-clock.yaml]
|
||||
|
||||
properties:
|
||||
driving-capability:
|
||||
type: int
|
||||
required: true
|
||||
description: |
|
||||
LSE driving capability, within the range 0 to 3.
|
||||
0 represents the lowests driving capability, 3
|
||||
the highest.
|
||||
enum:
|
||||
- 0
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
|
@ -180,9 +180,15 @@
|
|||
#if DT_NODE_HAS_COMPAT_STATUS(DT_NODELABEL(clk_lse), fixed_clock, okay)
|
||||
#define STM32_LSE_ENABLED 1
|
||||
#define STM32_LSE_FREQ DT_PROP(DT_NODELABEL(clk_lse), clock_frequency)
|
||||
#define STM32_LSE_DRIVING 0
|
||||
#elif DT_NODE_HAS_COMPAT_STATUS(DT_NODELABEL(clk_lse), st_stm32_lse_clock, okay)
|
||||
#define STM32_LSE_ENABLED 1
|
||||
#define STM32_LSE_FREQ DT_PROP(DT_NODELABEL(clk_lse), clock_frequency)
|
||||
#define STM32_LSE_DRIVING DT_PROP(DT_NODELABEL(clk_lse), driving_capability)
|
||||
#else
|
||||
#define STM32_LSE_ENABLED 0
|
||||
#define STM32_LSE_FREQ 0
|
||||
#define STM32_LSE_DRIVING 0
|
||||
#endif
|
||||
|
||||
#if DT_NODE_HAS_COMPAT_STATUS(DT_NODELABEL(clk_msi), st_stm32_msi_clock, okay) || \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue