8484hal_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