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