Skip to content

Commit 9aad62f

Browse files
committed
mcu/nrf5340: Use Low Frequency Clock source setting API in startup
Code from function hal_system_clock_start was moved into new API, so now we can call that API with proper argument to avoid code repetition.
1 parent bfc7fa2 commit 9aad62f

File tree

1 file changed

+3
-44
lines changed

1 file changed

+3
-44
lines changed

hw/mcu/nordic/nrf5340/src/hal_system.c

Lines changed: 3 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -84,12 +84,6 @@ void
8484
hal_system_clock_start(void)
8585
{
8686
#if MYNEWT_VAL(MCU_LFCLK_SOURCE)
87-
uint32_t regmsk;
88-
uint32_t regval;
89-
uint32_t clksrc;
90-
91-
regmsk = CLOCK_LFCLKSTAT_STATE_Msk | CLOCK_LFCLKSTAT_SRC_Msk;
92-
regval = CLOCK_LFCLKSTAT_STATE_Running << CLOCK_LFCLKSTAT_STATE_Pos;
9387

9488
#if MYNEWT_VAL_CHOICE(MCU_LFCLK_SOURCE, LFXO)
9589

@@ -107,50 +101,15 @@ hal_system_clock_start(void)
107101
NRF_P0->PIN_CNF[0] = GPIO_PIN_CNF_MCUSEL_Peripheral << GPIO_PIN_CNF_MCUSEL_Pos;
108102
NRF_P0->PIN_CNF[1] = GPIO_PIN_CNF_MCUSEL_Peripheral << GPIO_PIN_CNF_MCUSEL_Pos;
109103
#endif
110-
regval |= CLOCK_LFCLKSTAT_SRC_LFXO << CLOCK_LFCLKSTAT_SRC_Pos;
111-
clksrc = CLOCK_LFCLKSTAT_SRC_LFXO;
104+
nrf5340_set_lf_clock_source(CLOCK_LFCLKSTAT_SRC_LFXO);
112105
#elif MYNEWT_VAL_CHOICE(MCU_LFCLK_SOURCE, LFSYNTH)
113-
regval |= CLOCK_LFCLKSTAT_SRC_LFSYNT << CLOCK_LFCLKSTAT_SRC_Pos;
114-
clksrc = CLOCK_LFCLKSTAT_SRC_LFSYNT;
106+
nrf5340_set_lf_clock_source(CLOCK_LFCLKSTAT_SRC_LFSYNT);
115107
#elif MYNEWT_VAL_CHOICE(MCU_LFCLK_SOURCE, LFRC)
116-
regval |= CLOCK_LFCLKSTAT_SRC_LFRC << CLOCK_LFCLKSTAT_SRC_Pos;
117-
clksrc = CLOCK_LFCLKSTAT_SRC_LFRC;
108+
nrf5340_set_lf_clock_source(CLOCK_LFCLKSTAT_SRC_LFRC);
118109
#else
119110
#error Unknown LFCLK source selected
120111
#endif
121112

122-
#if MYNEWT_VAL_CHOICE(MCU_LFCLK_SOURCE, LFSYNTH)
123-
/* Must turn on HFLCK for synthesized 32768 crystal */
124-
if ((NRF_CLOCK->HFCLKSTAT & CLOCK_HFCLKSTAT_STATE_Msk) !=
125-
(CLOCK_HFCLKSTAT_STATE_Running << CLOCK_HFCLKSTAT_STATE_Pos)) {
126-
NRF_CLOCK->EVENTS_HFCLKSTARTED = 0;
127-
nrf5340_clock_hfxo_request();
128-
while (1) {
129-
if ((NRF_CLOCK->EVENTS_HFCLKSTARTED) != 0) {
130-
break;
131-
}
132-
}
133-
} else {
134-
nrf5340_clock_hfxo_request();
135-
}
136-
#endif
137-
138-
/* Check if this clock source is already running */
139-
if ((NRF_CLOCK->LFCLKSTAT & regmsk) != regval) {
140-
NRF_CLOCK->TASKS_LFCLKSTOP = 1;
141-
NRF_CLOCK->EVENTS_LFCLKSTARTED = 0;
142-
NRF_CLOCK->LFCLKSRC = clksrc;
143-
NRF_CLOCK->TASKS_LFCLKSTART = 1;
144-
145-
/* Wait here till started! */
146-
while (1) {
147-
if (NRF_CLOCK->EVENTS_LFCLKSTARTED) {
148-
if ((NRF_CLOCK->LFCLKSTAT & regmsk) == regval) {
149-
break;
150-
}
151-
}
152-
}
153-
}
154113
#endif
155114
if (MYNEWT_VAL(MCU_HFCLCK192_DIV) == 1) {
156115
NRF_CLOCK->HFCLK192MCTRL = 0;

0 commit comments

Comments
 (0)