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