84
84
hal_system_clock_start (void )
85
85
{
86
86
#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 ;
93
87
94
88
#if MYNEWT_VAL_CHOICE (MCU_LFCLK_SOURCE , LFXO )
95
89
@@ -107,50 +101,15 @@ hal_system_clock_start(void)
107
101
NRF_P0 -> PIN_CNF [0 ] = GPIO_PIN_CNF_MCUSEL_Peripheral << GPIO_PIN_CNF_MCUSEL_Pos ;
108
102
NRF_P0 -> PIN_CNF [1 ] = GPIO_PIN_CNF_MCUSEL_Peripheral << GPIO_PIN_CNF_MCUSEL_Pos ;
109
103
#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 );
112
105
#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 );
115
107
#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 );
118
109
#else
119
110
#error Unknown LFCLK source selected
120
111
#endif
121
112
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
- }
154
113
#endif
155
114
if (MYNEWT_VAL (MCU_HFCLCK192_DIV ) == 1 ) {
156
115
NRF_CLOCK -> HFCLK192MCTRL = 0 ;
0 commit comments