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_RADIO_INTENSET_DISABLED_Msk         RADIO_INTENSET_DISABLED_Msk
193 #define HAL_RADIO_SHORTS_TRX_END_DISABLE_Msk    RADIO_SHORTS_END_DISABLE_Msk
194 #define HAL_RADIO_SHORTS_TRX_PHYEND_DISABLE_Msk RADIO_SHORTS_PHYEND_DISABLE_Msk
195 
196 /* HAL abstraction of Radio IRQ number */
197 #define HAL_RADIO_IRQn                          RADIO_IRQn
198 
hal_radio_reset(void)199 static inline void hal_radio_reset(void)
200 {
201 	if (nrf52_errata_102() || nrf52_errata_106() || nrf52_errata_107()) {
202 		/* Workaround for nRF52 anomalies 102, 106, and 107. */
203 		*(volatile uint32_t *)0x40001774 =
204 			((*(volatile uint32_t *)0x40001774) & 0xfffffffe)
205 			| 0x01000000;
206 	}
207 }
208 
hal_radio_stop(void)209 static inline void hal_radio_stop(void)
210 {
211 	/* TODO: Add any required cleanup of actions taken in hal_radio_reset()
212 	 */
213 }
214 
hal_radio_ram_prio_setup(void)215 static inline void hal_radio_ram_prio_setup(void)
216 {
217 	struct {
218 		uint32_t volatile reserved_0[0x5a0 >> 2];
219 		uint32_t volatile bridge_type;
220 		uint32_t volatile reserved_1[((0xe00 - 0x5a0) >> 2) - 1];
221 		struct {
222 			uint32_t volatile CPU0;
223 			uint32_t volatile SPIS1;
224 			uint32_t volatile RADIO;
225 			uint32_t volatile ECB;
226 			uint32_t volatile CCM;
227 			uint32_t volatile AAR;
228 			uint32_t volatile SAADC;
229 			uint32_t volatile UARTE;
230 			uint32_t volatile SERIAL0;
231 			uint32_t volatile SERIAL2;
232 			uint32_t volatile NFCT;
233 			uint32_t volatile I2S;
234 			uint32_t volatile PDM;
235 			uint32_t volatile PWM;
236 		} RAMPRI;
237 	} volatile *NRF_AMLI = (void volatile *)0x40000000UL;
238 
239 	NRF_AMLI->RAMPRI.CPU0    = 0xFFFFFFFFUL;
240 	NRF_AMLI->RAMPRI.SPIS1   = 0xFFFFFFFFUL;
241 	NRF_AMLI->RAMPRI.RADIO   = 0x00000000UL;
242 	NRF_AMLI->RAMPRI.ECB     = 0xFFFFFFFFUL;
243 	NRF_AMLI->RAMPRI.CCM     = 0x00000000UL;
244 	NRF_AMLI->RAMPRI.AAR     = 0xFFFFFFFFUL;
245 	NRF_AMLI->RAMPRI.SAADC   = 0xFFFFFFFFUL;
246 	NRF_AMLI->RAMPRI.UARTE   = 0xFFFFFFFFUL;
247 	NRF_AMLI->RAMPRI.SERIAL0 = 0xFFFFFFFFUL;
248 	NRF_AMLI->RAMPRI.SERIAL2 = 0xFFFFFFFFUL;
249 	NRF_AMLI->RAMPRI.NFCT    = 0xFFFFFFFFUL;
250 	NRF_AMLI->RAMPRI.I2S     = 0xFFFFFFFFUL;
251 	NRF_AMLI->RAMPRI.PDM     = 0xFFFFFFFFUL;
252 	NRF_AMLI->RAMPRI.PWM     = 0xFFFFFFFFUL;
253 }
254 
hal_radio_phy_mode_get(uint8_t phy,uint8_t flags)255 static inline uint32_t hal_radio_phy_mode_get(uint8_t phy, uint8_t flags)
256 {
257 	ARG_UNUSED(flags);
258 	uint32_t mode;
259 
260 	switch (phy) {
261 	case BIT(0):
262 	default:
263 		mode = RADIO_MODE_MODE_Ble_1Mbit;
264 		break;
265 
266 	case BIT(1):
267 		mode = RADIO_MODE_MODE_Ble_2Mbit;
268 		break;
269 	}
270 
271 	return mode;
272 }
273 
hal_radio_tx_power_min_get(void)274 static inline uint32_t hal_radio_tx_power_min_get(void)
275 {
276 	return RADIO_TXPOWER_TXPOWER_Neg40dBm;
277 }
278 
hal_radio_tx_power_max_get(void)279 static inline uint32_t hal_radio_tx_power_max_get(void)
280 {
281 	return RADIO_TXPOWER_TXPOWER_Pos4dBm;
282 }
283 
hal_radio_tx_power_floor(int8_t tx_power_lvl)284 static inline uint32_t hal_radio_tx_power_floor(int8_t tx_power_lvl)
285 {
286 	if (tx_power_lvl >= (int8_t)RADIO_TXPOWER_TXPOWER_Pos4dBm) {
287 		return RADIO_TXPOWER_TXPOWER_Pos4dBm;
288 	}
289 
290 	if (tx_power_lvl >= (int8_t)RADIO_TXPOWER_TXPOWER_Pos3dBm) {
291 		return RADIO_TXPOWER_TXPOWER_Pos3dBm;
292 	}
293 
294 	if (tx_power_lvl >= (int8_t)RADIO_TXPOWER_TXPOWER_0dBm) {
295 		return RADIO_TXPOWER_TXPOWER_0dBm;
296 	}
297 
298 	if (tx_power_lvl >= (int8_t)RADIO_TXPOWER_TXPOWER_Neg4dBm) {
299 		return RADIO_TXPOWER_TXPOWER_Neg4dBm;
300 	}
301 
302 	if (tx_power_lvl >= (int8_t)RADIO_TXPOWER_TXPOWER_Neg8dBm) {
303 		return RADIO_TXPOWER_TXPOWER_Neg8dBm;
304 	}
305 
306 	if (tx_power_lvl >= (int8_t)RADIO_TXPOWER_TXPOWER_Neg12dBm) {
307 		return RADIO_TXPOWER_TXPOWER_Neg12dBm;
308 	}
309 
310 	if (tx_power_lvl >= (int8_t)RADIO_TXPOWER_TXPOWER_Neg16dBm) {
311 		return RADIO_TXPOWER_TXPOWER_Neg16dBm;
312 	}
313 
314 	if (tx_power_lvl >= (int8_t)RADIO_TXPOWER_TXPOWER_Neg20dBm) {
315 		return RADIO_TXPOWER_TXPOWER_Neg20dBm;
316 	}
317 
318 	/* Note: The -30 dBm power level is deprecated so ignore it! */
319 	return RADIO_TXPOWER_TXPOWER_Neg40dBm;
320 }
321 
hal_radio_tx_ready_delay_us_get(uint8_t phy,uint8_t flags)322 static inline uint32_t hal_radio_tx_ready_delay_us_get(uint8_t phy, uint8_t flags)
323 {
324 	ARG_UNUSED(flags);
325 
326 	switch (phy) {
327 	default:
328 	case BIT(0):
329 		return HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_1M_US;
330 	case BIT(1):
331 		return HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_2M_US;
332 	}
333 }
334 
hal_radio_rx_ready_delay_us_get(uint8_t phy,uint8_t flags)335 static inline uint32_t hal_radio_rx_ready_delay_us_get(uint8_t phy, uint8_t flags)
336 {
337 	ARG_UNUSED(flags);
338 
339 	switch (phy) {
340 	default:
341 	case BIT(0):
342 		return HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_1M_US;
343 	case BIT(1):
344 		return HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_2M_US;
345 	}
346 }
347 
hal_radio_tx_chain_delay_us_get(uint8_t phy,uint8_t flags)348 static inline uint32_t hal_radio_tx_chain_delay_us_get(uint8_t phy, uint8_t flags)
349 {
350 	ARG_UNUSED(phy);
351 	ARG_UNUSED(flags);
352 
353 	return HAL_RADIO_NRF52832_TX_CHAIN_DELAY_US;
354 }
355 
hal_radio_rx_chain_delay_us_get(uint8_t phy,uint8_t flags)356 static inline uint32_t hal_radio_rx_chain_delay_us_get(uint8_t phy, uint8_t flags)
357 {
358 	ARG_UNUSED(flags);
359 
360 	switch (phy) {
361 	default:
362 	case BIT(0):
363 		return HAL_RADIO_NRF52832_RX_CHAIN_DELAY_1M_US;
364 	case BIT(1):
365 		return HAL_RADIO_NRF52832_RX_CHAIN_DELAY_2M_US;
366 	}
367 }
368 
hal_radio_tx_ready_delay_ns_get(uint8_t phy,uint8_t flags)369 static inline uint32_t hal_radio_tx_ready_delay_ns_get(uint8_t phy, uint8_t flags)
370 {
371 	ARG_UNUSED(flags);
372 
373 	switch (phy) {
374 	default:
375 	case BIT(0):
376 		return HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_1M_NS;
377 	case BIT(1):
378 		return HAL_RADIO_NRF52832_TXEN_TXIDLE_TX_2M_NS;
379 	}
380 }
381 
hal_radio_rx_ready_delay_ns_get(uint8_t phy,uint8_t flags)382 static inline uint32_t hal_radio_rx_ready_delay_ns_get(uint8_t phy, uint8_t flags)
383 {
384 	ARG_UNUSED(flags);
385 
386 	switch (phy) {
387 	default:
388 	case BIT(0):
389 		return HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_1M_NS;
390 	case BIT(1):
391 		return HAL_RADIO_NRF52832_RXEN_RXIDLE_RX_2M_NS;
392 	}
393 }
394 
hal_radio_tx_chain_delay_ns_get(uint8_t phy,uint8_t flags)395 static inline uint32_t hal_radio_tx_chain_delay_ns_get(uint8_t phy, uint8_t flags)
396 {
397 	ARG_UNUSED(phy);
398 	ARG_UNUSED(flags);
399 
400 	return HAL_RADIO_NRF52832_TX_CHAIN_DELAY_US;
401 }
402 
hal_radio_rx_chain_delay_ns_get(uint8_t phy,uint8_t flags)403 static inline uint32_t hal_radio_rx_chain_delay_ns_get(uint8_t phy, uint8_t flags)
404 {
405 	ARG_UNUSED(flags);
406 
407 	switch (phy) {
408 	default:
409 	case BIT(0):
410 		return HAL_RADIO_NRF52832_RX_CHAIN_DELAY_1M_NS;
411 	case BIT(1):
412 		return HAL_RADIO_NRF52832_RX_CHAIN_DELAY_2M_NS;
413 	}
414 }
415