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