1 /*
2  * Copyright (c) 2018 Nordic Semiconductor ASA
3  * Copyright (c) 2018 Ioannis Glaropoulos
4  *
5  * SPDX-License-Identifier: Apache-2.0
6  */
7 
8 #include <nrf_erratas.h>
9 
10 /* Use the NRF_RTC instance for coarse radio event scheduling */
11 #define NRF_RTC NRF_RTC0
12 
13 /* HAL abstraction of event timer prescaler value */
14 #define HAL_EVENT_TIMER_PRESCALER_VALUE 4U
15 
16 /* NRF Radio HW timing constants
17  * - provided in US and NS (for higher granularity)
18  * - based on empirical measurements and sniffer logs
19  */
20 
21 /* TXEN->TXIDLE + TXIDLE->TX (with fast Radio ramp-up mode)
22  * in microseconds for LE 1M PHY.
23  */
24 #define HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_1M_FAST_NS 41050 /* 40.1 + 0.95 */
25 #define HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_1M_FAST_US \
26 	HAL_RADIO_NS2US_ROUND(HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_1M_FAST_NS)
27 
28 /* TXEN->TXIDLE + TXIDLE->TX (with default Radio ramp-up mode)
29  * in microseconds for LE 1M PHY.
30  */
31 #define HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_1M_DEFAULT_NS 141050 /*140.1 + 0.95*/
32 #define HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_1M_DEFAULT_US \
33 	HAL_RADIO_NS2US_ROUND(HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_1M_DEFAULT_NS)
34 
35 /* TXEN->TXIDLE + TXIDLE->TX (with default Radio ramp-up mode
36  * and no HW TIFS auto-switch) in microseconds for LE 1M PHY.
37  */
38 /* 129 + 0.95 */
39 #define HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_1M_DEFAULT_NO_HW_TIFS_NS 129950
40 #define HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_1M_DEFAULT_NO_HW_TIFS_US \
41 	HAL_RADIO_NS2US_ROUND( \
42 		HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_1M_DEFAULT_NO_HW_TIFS_NS)
43 
44 /* TXEN->TXIDLE + TXIDLE->TX (with fast Radio ramp-up mode)
45  * in microseconds for LE 2M PHY.
46  */
47 #define HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_2M_FAST_NS 40000 /* 40.1 - 0.1 */
48 #define HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_2M_FAST_US \
49 	HAL_RADIO_NS2US_ROUND(HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_2M_FAST_NS)
50 
51 /* TXEN->TXIDLE + TXIDLE->TX (with default Radio ramp-up mode)
52  * in microseconds for LE 2M PHY.
53  */
54 #define HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_2M_DEFAULT_NS 144500 /* 144.6 - 0.1 */
55 #define HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_2M_DEFAULT_US \
56 	HAL_RADIO_NS2US_ROUND(HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_2M_DEFAULT_NS)
57 
58 /* TXEN->TXIDLE + TXIDLE->TX (with default Radio ramp-up mode
59  * and no HW TIFS auto-switch) in microseconds for LE 2M PHY.
60  */
61 /* 129 - 0.1 */
62 #define HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_2M_DEFAULT_NO_HW_TIFS_NS 128900
63 #define HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_2M_DEFAULT_NO_HW_TIFS_US \
64 	HAL_RADIO_NS2US_ROUND( \
65 		HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_2M_DEFAULT_NO_HW_TIFS_NS)
66 
67 /* RXEN->RXIDLE + RXIDLE->RX (with fast Radio ramp-up mode)
68  * in microseconds for LE 1M PHY.
69  */
70 #define HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_1M_FAST_NS 40300 /* 40.1 + 0.2 */
71 #define HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_1M_FAST_US \
72 	HAL_RADIO_NS2US_CEIL(HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_1M_FAST_NS)
73 
74 /* RXEN->RXIDLE + RXIDLE->RX (with default Radio ramp-up mode)
75  * in microseconds for LE 1M PHY.
76  */
77 #define HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_1M_DEFAULT_NS 140300 /*140.1 + 0.2*/
78 #define HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_1M_DEFAULT_US \
79 	HAL_RADIO_NS2US_CEIL(HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_1M_DEFAULT_NS)
80 
81 /* RXEN->RXIDLE + RXIDLE->RX (with default Radio ramp-up mode and
82  * no HW TIFS auto-switch) in microseconds for LE 1M PHY.
83  */
84 /* 129 + 0.2 */
85 #define HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_1M_DEFAULT_NO_HW_TIFS_NS 129200
86 #define HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_1M_DEFAULT_NO_HW_TIFS_US \
87 	HAL_RADIO_NS2US_CEIL( \
88 		HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_1M_DEFAULT_NO_HW_TIFS_NS)
89 
90 /* RXEN->RXIDLE + RXIDLE->RX (with fast Radio ramp-up mode)
91  * in microseconds for LE 2M PHY.
92  */
93 #define HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_2M_FAST_NS 40300 /* 40.1 + 0.2 */
94 #define HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_2M_FAST_US \
95 	HAL_RADIO_NS2US_CEIL(HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_2M_FAST_NS)
96 
97 /* RXEN->RXIDLE + RXIDLE->RX (with default Radio ramp-up mode)
98  * in microseconds for LE 2M PHY.
99  */
100 #define HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_2M_DEFAULT_NS 144800 /* 144.6 + 0.2 */
101 #define HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_2M_DEFAULT_US \
102 	HAL_RADIO_NS2US_CEIL(HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_2M_DEFAULT_NS)
103 
104 /* RXEN->RXIDLE + RXIDLE->RX (with default Radio ramp-up mode and
105  * no HW TIFS auto-switch) in microseconds for LE 2M PHY.
106  */
107 /* 129 + 0.2 */
108 #define HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_2M_DEFAULT_NO_HW_TIFS_NS 129200
109 #define HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_2M_DEFAULT_NO_HW_TIFS_US \
110 	HAL_RADIO_NS2US_CEIL(\
111 		HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_2M_DEFAULT_NO_HW_TIFS_NS)
112 
113 #define HAL_RADIO_NRF52832_TX_CHAIN_DELAY_NS     600 /* 0.6 */
114 #define HAL_RADIO_NRF52832_TX_CHAIN_DELAY_US \
115 	HAL_RADIO_NS2US_CEIL(HAL_RADIO_NRF52832_TX_CHAIN_DELAY_NS)
116 
117 #define HAL_RADIO_NRF52832_RX_CHAIN_DELAY_1M_NS  9400 /* 9.4 */
118 #define HAL_RADIO_NRF52832_RX_CHAIN_DELAY_1M_US \
119 	HAL_RADIO_NS2US_CEIL(HAL_RADIO_NRF52832_RX_CHAIN_DELAY_1M_NS)
120 
121 #define HAL_RADIO_NRF52832_RX_CHAIN_DELAY_2M_NS  5450 /* 5.0 + 0.45 */
122 #define HAL_RADIO_NRF52832_RX_CHAIN_DELAY_2M_US \
123 	HAL_RADIO_NS2US_CEIL(HAL_RADIO_NRF52832_RX_CHAIN_DELAY_2M_NS)
124 
125 #if defined(CONFIG_BT_CTLR_RADIO_ENABLE_FAST)
126 #define HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_1M_US \
127 	HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_1M_FAST_US
128 #define HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_1M_NS \
129 	HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_1M_FAST_NS
130 
131 #define HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_2M_US \
132 	HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_2M_FAST_US
133 #define HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_2M_NS \
134 	HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_2M_FAST_NS
135 
136 #define HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_1M_US \
137 	HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_1M_FAST_US
138 #define HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_1M_NS \
139 	HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_1M_FAST_NS
140 
141 #define HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_2M_US \
142 	HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_2M_FAST_US
143 #define HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_2M_NS \
144 	HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_2M_FAST_NS
145 
146 #else /* !CONFIG_BT_CTLR_RADIO_ENABLE_FAST */
147 #if defined(CONFIG_BT_CTLR_TIFS_HW)
148 #define HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_1M_US \
149 	HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_1M_DEFAULT_US
150 #define HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_1M_NS \
151 	HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_1M_DEFAULT_NS
152 
153 #define HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_2M_US \
154 	HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_2M_DEFAULT_US
155 #define HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_2M_NS \
156 	HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_2M_DEFAULT_NS
157 
158 #define HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_1M_US \
159 	HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_1M_DEFAULT_US
160 #define HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_1M_NS \
161 	HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_1M_DEFAULT_NS
162 
163 #define HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_2M_US \
164 	HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_2M_DEFAULT_US
165 #define HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_2M_NS \
166 	HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_2M_DEFAULT_NS
167 
168 #else /* !CONFIG_BT_CTLR_TIFS_HW */
169 #define HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_1M_US \
170 	HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_1M_DEFAULT_NO_HW_TIFS_US
171 #define HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_1M_NS \
172 	HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_1M_DEFAULT_NO_HW_TIFS_NS
173 
174 #define HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_2M_US \
175 	HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_2M_DEFAULT_NO_HW_TIFS_US
176 #define HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_2M_NS \
177 	HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_2M_DEFAULT_NO_HW_TIFS_NS
178 
179 #define HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_1M_US \
180 	HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_1M_DEFAULT_NO_HW_TIFS_US
181 #define HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_1M_NS \
182 	HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_1M_DEFAULT_NO_HW_TIFS_NS
183 
184 #define HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_2M_US \
185 	HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_2M_DEFAULT_NO_HW_TIFS_US
186 #define HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_2M_NS \
187 	HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_2M_DEFAULT_NO_HW_TIFS_NS
188 #endif /* !CONFIG_BT_CTLR_TIFS_HW */
189 #endif /* !CONFIG_BT_CTLR_RADIO_ENABLE_FAST */
190 
191 /* HAL abstraction of Radio bitfields */
192 #define HAL_NRF_RADIO_EVENT_END              NRF_RADIO_EVENT_END
193 #define HAL_RADIO_EVENTS_END                 EVENTS_END
194 #define HAL_RADIO_INTENSET_DISABLED_Msk      RADIO_INTENSET_DISABLED_Msk
195 #define HAL_RADIO_SHORTS_TRX_END_DISABLE_Msk RADIO_SHORTS_END_DISABLE_Msk
196 
197 /* HAL abstraction of Radio IRQ number */
198 #define HAL_RADIO_IRQn                          RADIO_IRQn
199 
hal_radio_reset(void)200 static inline void hal_radio_reset(void)
201 {
202 	if (nrf52_errata_102() || nrf52_errata_106() || nrf52_errata_107()) {
203 		/* Workaround for nRF52 anomalies 102, 106, and 107. */
204 		*(volatile uint32_t *)0x40001774 =
205 			((*(volatile uint32_t *)0x40001774) & 0xfffffffe)
206 			| 0x01000000;
207 	}
208 }
209 
hal_radio_stop(void)210 static inline void hal_radio_stop(void)
211 {
212 	/* TODO: Add any required cleanup of actions taken in hal_radio_reset()
213 	 */
214 }
215 
hal_radio_ram_prio_setup(void)216 static inline void hal_radio_ram_prio_setup(void)
217 {
218 	struct {
219 		uint32_t volatile reserved_0[0x5a0 >> 2];
220 		uint32_t volatile bridge_type;
221 		uint32_t volatile reserved_1[((0xe00 - 0x5a0) >> 2) - 1];
222 		struct {
223 			uint32_t volatile CPU0;
224 			uint32_t volatile SPIS1;
225 			uint32_t volatile RADIO;
226 			uint32_t volatile ECB;
227 			uint32_t volatile CCM;
228 			uint32_t volatile AAR;
229 			uint32_t volatile SAADC;
230 			uint32_t volatile UARTE;
231 			uint32_t volatile SERIAL0;
232 			uint32_t volatile SERIAL2;
233 			uint32_t volatile NFCT;
234 			uint32_t volatile I2S;
235 			uint32_t volatile PDM;
236 			uint32_t volatile PWM;
237 		} RAMPRI;
238 	} volatile *NRF_AMLI = (void volatile *)0x40000000UL;
239 
240 	NRF_AMLI->RAMPRI.CPU0    = 0xFFFFFFFFUL;
241 	NRF_AMLI->RAMPRI.SPIS1   = 0xFFFFFFFFUL;
242 	NRF_AMLI->RAMPRI.RADIO   = 0x00000000UL;
243 	NRF_AMLI->RAMPRI.ECB     = 0xFFFFFFFFUL;
244 	NRF_AMLI->RAMPRI.CCM     = 0x00000000UL;
245 	NRF_AMLI->RAMPRI.AAR     = 0xFFFFFFFFUL;
246 	NRF_AMLI->RAMPRI.SAADC   = 0xFFFFFFFFUL;
247 	NRF_AMLI->RAMPRI.UARTE   = 0xFFFFFFFFUL;
248 	NRF_AMLI->RAMPRI.SERIAL0 = 0xFFFFFFFFUL;
249 	NRF_AMLI->RAMPRI.SERIAL2 = 0xFFFFFFFFUL;
250 	NRF_AMLI->RAMPRI.NFCT    = 0xFFFFFFFFUL;
251 	NRF_AMLI->RAMPRI.I2S     = 0xFFFFFFFFUL;
252 	NRF_AMLI->RAMPRI.PDM     = 0xFFFFFFFFUL;
253 	NRF_AMLI->RAMPRI.PWM     = 0xFFFFFFFFUL;
254 }
255 
hal_radio_phy_mode_get(uint8_t phy,uint8_t flags)256 static inline uint32_t hal_radio_phy_mode_get(uint8_t phy, uint8_t flags)
257 {
258 	ARG_UNUSED(flags);
259 	uint32_t mode;
260 
261 	switch (phy) {
262 	case BIT(0):
263 	default:
264 		mode = RADIO_MODE_MODE_Ble_1Mbit;
265 		break;
266 
267 	case BIT(1):
268 		mode = RADIO_MODE_MODE_Ble_2Mbit;
269 		break;
270 	}
271 
272 	return mode;
273 }
274 
hal_radio_tx_power_min_get(void)275 static inline uint32_t hal_radio_tx_power_min_get(void)
276 {
277 	return RADIO_TXPOWER_TXPOWER_Neg40dBm;
278 }
279 
hal_radio_tx_power_max_get(void)280 static inline uint32_t hal_radio_tx_power_max_get(void)
281 {
282 	return RADIO_TXPOWER_TXPOWER_Pos4dBm;
283 }
284 
hal_radio_tx_power_floor(int8_t tx_power_lvl)285 static inline uint32_t hal_radio_tx_power_floor(int8_t tx_power_lvl)
286 {
287 	if (tx_power_lvl >= (int8_t)RADIO_TXPOWER_TXPOWER_Pos4dBm) {
288 		return RADIO_TXPOWER_TXPOWER_Pos4dBm;
289 	}
290 
291 	if (tx_power_lvl >= (int8_t)RADIO_TXPOWER_TXPOWER_Pos3dBm) {
292 		return RADIO_TXPOWER_TXPOWER_Pos3dBm;
293 	}
294 
295 	if (tx_power_lvl >= (int8_t)RADIO_TXPOWER_TXPOWER_0dBm) {
296 		return RADIO_TXPOWER_TXPOWER_0dBm;
297 	}
298 
299 	if (tx_power_lvl >= (int8_t)RADIO_TXPOWER_TXPOWER_Neg4dBm) {
300 		return RADIO_TXPOWER_TXPOWER_Neg4dBm;
301 	}
302 
303 	if (tx_power_lvl >= (int8_t)RADIO_TXPOWER_TXPOWER_Neg8dBm) {
304 		return RADIO_TXPOWER_TXPOWER_Neg8dBm;
305 	}
306 
307 	if (tx_power_lvl >= (int8_t)RADIO_TXPOWER_TXPOWER_Neg12dBm) {
308 		return RADIO_TXPOWER_TXPOWER_Neg12dBm;
309 	}
310 
311 	if (tx_power_lvl >= (int8_t)RADIO_TXPOWER_TXPOWER_Neg16dBm) {
312 		return RADIO_TXPOWER_TXPOWER_Neg16dBm;
313 	}
314 
315 	if (tx_power_lvl >= (int8_t)RADIO_TXPOWER_TXPOWER_Neg20dBm) {
316 		return RADIO_TXPOWER_TXPOWER_Neg20dBm;
317 	}
318 
319 	/* Note: The -30 dBm power level is deprecated so ignore it! */
320 	return RADIO_TXPOWER_TXPOWER_Neg40dBm;
321 }
322 
hal_radio_tx_ready_delay_us_get(uint8_t phy,uint8_t flags)323 static inline uint32_t hal_radio_tx_ready_delay_us_get(uint8_t phy, uint8_t flags)
324 {
325 	ARG_UNUSED(flags);
326 
327 	switch (phy) {
328 	default:
329 	case BIT(0):
330 		return HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_1M_US;
331 	case BIT(1):
332 		return HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_2M_US;
333 	}
334 }
335 
hal_radio_rx_ready_delay_us_get(uint8_t phy,uint8_t flags)336 static inline uint32_t hal_radio_rx_ready_delay_us_get(uint8_t phy, uint8_t flags)
337 {
338 	ARG_UNUSED(flags);
339 
340 	switch (phy) {
341 	default:
342 	case BIT(0):
343 		return HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_1M_US;
344 	case BIT(1):
345 		return HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_2M_US;
346 	}
347 }
348 
hal_radio_tx_chain_delay_us_get(uint8_t phy,uint8_t flags)349 static inline uint32_t hal_radio_tx_chain_delay_us_get(uint8_t phy, uint8_t flags)
350 {
351 	ARG_UNUSED(phy);
352 	ARG_UNUSED(flags);
353 
354 	return HAL_RADIO_NRF52832_TX_CHAIN_DELAY_US;
355 }
356 
hal_radio_rx_chain_delay_us_get(uint8_t phy,uint8_t flags)357 static inline uint32_t hal_radio_rx_chain_delay_us_get(uint8_t phy, uint8_t flags)
358 {
359 	ARG_UNUSED(flags);
360 
361 	switch (phy) {
362 	default:
363 	case BIT(0):
364 		return HAL_RADIO_NRF52832_RX_CHAIN_DELAY_1M_US;
365 	case BIT(1):
366 		return HAL_RADIO_NRF52832_RX_CHAIN_DELAY_2M_US;
367 	}
368 }
369 
hal_radio_tx_ready_delay_ns_get(uint8_t phy,uint8_t flags)370 static inline uint32_t hal_radio_tx_ready_delay_ns_get(uint8_t phy, uint8_t flags)
371 {
372 	ARG_UNUSED(flags);
373 
374 	switch (phy) {
375 	default:
376 	case BIT(0):
377 		return HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_1M_NS;
378 	case BIT(1):
379 		return HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_2M_NS;
380 	}
381 }
382 
hal_radio_rx_ready_delay_ns_get(uint8_t phy,uint8_t flags)383 static inline uint32_t hal_radio_rx_ready_delay_ns_get(uint8_t phy, uint8_t flags)
384 {
385 	ARG_UNUSED(flags);
386 
387 	switch (phy) {
388 	default:
389 	case BIT(0):
390 		return HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_1M_NS;
391 	case BIT(1):
392 		return HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_2M_NS;
393 	}
394 }
395 
hal_radio_tx_chain_delay_ns_get(uint8_t phy,uint8_t flags)396 static inline uint32_t hal_radio_tx_chain_delay_ns_get(uint8_t phy, uint8_t flags)
397 {
398 	ARG_UNUSED(phy);
399 	ARG_UNUSED(flags);
400 
401 	return HAL_RADIO_NRF52832_TX_CHAIN_DELAY_US;
402 }
403 
hal_radio_rx_chain_delay_ns_get(uint8_t phy,uint8_t flags)404 static inline uint32_t hal_radio_rx_chain_delay_ns_get(uint8_t phy, uint8_t flags)
405 {
406 	ARG_UNUSED(flags);
407 
408 	switch (phy) {
409 	default:
410 	case BIT(0):
411 		return HAL_RADIO_NRF52832_RX_CHAIN_DELAY_1M_NS;
412 	case BIT(1):
413 		return HAL_RADIO_NRF52832_RX_CHAIN_DELAY_2M_NS;
414 	}
415 }
416