From 1d0177dc311d44729380ad889278f1df2f92c558 Mon Sep 17 00:00:00 2001 From: Dylan Laduranty Date: Thu, 6 Jul 2023 15:47:22 +0200 Subject: [PATCH] cpu/nrfxx: simplify LFCLK source selection Signed-off-by: Dylan Laduranty --- cpu/nrf51/cpu.c | 9 +++++++++ cpu/nrf52/cpu.c | 9 +++++++++ cpu/nrf53/cpu.c | 9 +++++++++ cpu/nrf5x_common/clock.c | 23 ++++------------------- cpu/nrf9160/cpu.c | 8 ++++++++ 5 files changed, 39 insertions(+), 19 deletions(-) diff --git a/cpu/nrf51/cpu.c b/cpu/nrf51/cpu.c index aa6f4cadd3..8b91680b3c 100644 --- a/cpu/nrf51/cpu.c +++ b/cpu/nrf51/cpu.c @@ -25,6 +25,15 @@ #include "periph/init.h" #include "stdio_base.h" +/** + * @brief LFCLK Clock selection configuration guard +*/ +#if ((CLOCK_LFCLK != CLOCK_LFCLKSRC_SRC_RC) && \ + (CLOCK_LFCLK != CLOCK_LFCLKSRC_SRC_Xtal) && \ + (CLOCK_LFCLK != CLOCK_LFCLKSRC_SRC_Synth)) +#error "LFCLK init: CLOCK_LFCLK has invalid value" +#endif + /** * @brief Initialize the CPU, set IRQ priorities */ diff --git a/cpu/nrf52/cpu.c b/cpu/nrf52/cpu.c index 79e894de54..7f34a4d231 100644 --- a/cpu/nrf52/cpu.c +++ b/cpu/nrf52/cpu.c @@ -35,6 +35,15 @@ static bool ftpan_32(void); static bool ftpan_37(void); static bool ftpan_36(void); +/** + * @brief LFCLK Clock selection configuration guard +*/ +#if ((CLOCK_LFCLK != CLOCK_LFCLKSRC_SRC_RC) && \ + (CLOCK_LFCLK != CLOCK_LFCLKSRC_SRC_Xtal) && \ + (CLOCK_LFCLK != CLOCK_LFCLKSRC_SRC_Synth)) +#error "LFCLK init: CLOCK_LFCLK has invalid value" +#endif + /** * @brief Initialize the CPU, set IRQ priorities */ diff --git a/cpu/nrf53/cpu.c b/cpu/nrf53/cpu.c index 221807f59c..77b8b6a742 100644 --- a/cpu/nrf53/cpu.c +++ b/cpu/nrf53/cpu.c @@ -27,6 +27,15 @@ #include "stdio_base.h" #include "board.h" +/** + * @brief LFCLK Clock selection configuration guard +*/ +#if ((CLOCK_LFCLK != CLOCK_LFCLKSRC_SRC_LFRC) && \ + (CLOCK_LFCLK != CLOCK_LFCLKSRC_SRC_LFXO) && \ + (CLOCK_LFCLK != CLOCK_LFCLKSRC_SRC_LFSYNT)) +#error "LFCLK init: CLOCK_LFCLK has invalid value" +#endif + /** * @brief Initialize the CPU, set IRQ priorities */ diff --git a/cpu/nrf5x_common/clock.c b/cpu/nrf5x_common/clock.c index 63a340c8d9..8347b06101 100644 --- a/cpu/nrf5x_common/clock.c +++ b/cpu/nrf5x_common/clock.c @@ -23,23 +23,16 @@ #include "nrf_clock.h" #include "periph_conf.h" -/* make sure both clocks are configured */ +/* make HFCLK clock is configured */ #ifndef CLOCK_HFCLK #error "Clock init: CLOCK_HFCLK is not defined by your board!" #endif -#ifndef CLOCK_LFCLK -#error "Clock init: CLOCK_LFCLK is not defined by your board!" -#endif /* Add compatibility wrapper defines for nRF families with Cortex-M33 core */ #ifdef NRF_CLOCK_S #define NRF_CLOCK NRF_CLOCK_S #endif -#ifdef CLOCK_LFCLKSRC_SRC_LFRC -#define CLOCK_LFCLKSRC_SRC_RC CLOCK_LFCLKSRC_SRC_LFRC -#endif - static unsigned _hfxo_requests = 0; void clock_init_hf(void) @@ -92,17 +85,9 @@ void clock_start_lf(void) return; } -#if (CLOCK_LFCLK == 0) - NRF_CLOCK->LFCLKSRC = (CLOCK_LFCLKSRC_SRC_RC); -#elif (CLOCK_LFCLK == 1) - NRF_CLOCK->LFCLKSRC = (CLOCK_LFCLKSRC_SRC_Xtal); -#elif (CLOCK_LFCLK == 2) - NRF_CLOCK->LFCLKSRC = (CLOCK_LFCLKSRC_SRC_Synth); -#elif (CLOCK_LFCLK == 3) - NRF_CLOCK->LFCLKSRC = (CLOCK_LFCLKSRC_SRC_LFXO); -#else -#error "LFCLK init: CLOCK_LFCLK has invalid value" -#endif + /* Select LFCLK source */ + NRF_CLOCK->LFCLKSRC = CLOCK_LFCLK; + /* enable LF clock */ NRF_CLOCK->EVENTS_LFCLKSTARTED = 0; NRF_CLOCK->TASKS_LFCLKSTART = 1; diff --git a/cpu/nrf9160/cpu.c b/cpu/nrf9160/cpu.c index e32b7b272e..a61d54c8d1 100644 --- a/cpu/nrf9160/cpu.c +++ b/cpu/nrf9160/cpu.c @@ -25,6 +25,14 @@ #include "periph/init.h" #include "stdio_base.h" +/** + * @brief LFCLK Clock selection configuration guard +*/ +#if ((CLOCK_LFCLK != CLOCK_LFCLKSRC_SRC_LFRC) && \ + (CLOCK_LFCLK != CLOCK_LFCLKSRC_SRC_LFXO)) +#error "LFCLK init: CLOCK_LFCLK has invalid value" +#endif + /** * @brief Initialize the CPU, set IRQ priorities */