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