From a96a0d5dccfcbcaf5ab8eb964f1a7918dd743233 Mon Sep 17 00:00:00 2001 From: Marcin Szymczyk Date: Fri, 16 May 2025 12:06:22 +0200 Subject: [PATCH] drivers: clock_control: nrf2_fll16m: use HAL HAL function for setting clock source in nrf_lrcconf is now available. Signed-off-by: Marcin Szymczyk --- drivers/clock_control/clock_control_nrf2_fll16m.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/clock_control/clock_control_nrf2_fll16m.c b/drivers/clock_control/clock_control_nrf2_fll16m.c index cbec791aa77c..b6b1dce72de3 100644 --- a/drivers/clock_control/clock_control_nrf2_fll16m.c +++ b/drivers/clock_control/clock_control_nrf2_fll16m.c @@ -24,6 +24,10 @@ BUILD_ASSERT(DT_NUM_INST_STATUS_OKAY(DT_DRV_COMPAT) == 1, #define FLL16M_MODE_CLOSED_LOOP 1 #define FLL16M_MODE_BYPASS 2 #define FLL16M_MODE_DEFAULT FLL16M_MODE_OPEN_LOOP +#define FLL16M_MODE_LOOP_MASK BIT(0) + +BUILD_ASSERT(FLL16M_MODE_OPEN_LOOP == NRF_LRCCONF_CLK_SRC_OPEN_LOOP); +BUILD_ASSERT(FLL16M_MODE_CLOSED_LOOP == NRF_LRCCONF_CLK_SRC_CLOSED_LOOP); #define FLL16M_HFXO_NODE DT_INST_PHANDLE_BY_NAME(0, clocks, hfxo) @@ -65,13 +69,13 @@ struct fll16m_dev_config { static void activate_fll16m_mode(struct fll16m_dev_data *dev_data, uint8_t mode) { - /* TODO: change to nrf_lrcconf_* function when such is available. */ - if (mode != FLL16M_MODE_DEFAULT) { soc_lrcconf_poweron_request(&dev_data->fll16m_node, NRF_LRCCONF_POWER_MAIN); } - NRF_LRCCONF010->CLKCTRL[0].SRC = mode; + nrf_lrcconf_clock_source_set(NRF_LRCCONF010, 0, + (nrf_lrcconf_clk_src_t)(mode & FLL16M_MODE_LOOP_MASK), + (mode == FLL16M_MODE_BYPASS)); if (mode == FLL16M_MODE_DEFAULT) { soc_lrcconf_poweron_release(&dev_data->fll16m_node, NRF_LRCCONF_POWER_MAIN);