Skip to content

Commit

Permalink
cpu/nrfxx: simplify LFCLK source selection
Browse files Browse the repository at this point in the history
Signed-off-by: Dylan Laduranty <[email protected]>
  • Loading branch information
dylad committed Jul 6, 2023
1 parent 0a5d07c commit 1d0177d
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 19 deletions.
9 changes: 9 additions & 0 deletions cpu/nrf51/cpu.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
*/
Expand Down
9 changes: 9 additions & 0 deletions cpu/nrf52/cpu.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
*/
Expand Down
9 changes: 9 additions & 0 deletions cpu/nrf53/cpu.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
*/
Expand Down
23 changes: 4 additions & 19 deletions cpu/nrf5x_common/clock.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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;
Expand Down
8 changes: 8 additions & 0 deletions cpu/nrf9160/cpu.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
*/
Expand Down

0 comments on commit 1d0177d

Please sign in to comment.