diff --git a/drivers/timer/nrf_grtc_timer.c b/drivers/timer/nrf_grtc_timer.c index fb9c859caeb..ee3f35e09d0 100644 --- a/drivers/timer/nrf_grtc_timer.c +++ b/drivers/timer/nrf_grtc_timer.c @@ -426,8 +426,12 @@ int z_nrf_grtc_wakeup_prepare(uint64_t wake_time_us) nrfy_grtc_timeout_get(NRF_GRTC) * CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC / 32768 + MAX_CC_LATCH_WAIT_TIME_US; k_busy_wait(wait_time); -#if DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(lfxo)) && NRF_GRTC_HAS_CLKSEL +#if NRF_GRTC_HAS_CLKSEL +#if defined(CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC) + nrfx_grtc_clock_source_set(NRF_GRTC_CLKSEL_LFLPRC); +#elif DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(lfxo)) nrfx_grtc_clock_source_set(NRF_GRTC_CLKSEL_LFXO); +#endif #endif k_spin_unlock(&lock, key); return 0; @@ -501,11 +505,15 @@ static int sys_clock_driver_init(void) z_nrf_clock_control_lf_on(mode); #endif -#if defined(CONFIG_NRF_GRTC_TIMER_CLOCK_MANAGEMENT) && \ - DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(lfxo)) && NRF_GRTC_HAS_CLKSEL +#if defined(CONFIG_NRF_GRTC_TIMER_CLOCK_MANAGEMENT) && NRF_GRTC_HAS_CLKSEL +#if defined(CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC) + /* Switch to LFPRC as the low-frequency clock source. */ + nrfx_grtc_clock_source_set(NRF_GRTC_CLKSEL_LFLPRC); +#elif DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(lfxo)) /* Switch to LFXO as the low-frequency clock source. */ nrfx_grtc_clock_source_set(NRF_GRTC_CLKSEL_LFXO); #endif +#endif #if defined(CONFIG_NRF_GRTC_ALWAYS_ON) nrfx_grtc_active_request_set(true);