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