1 /*
2 * Copyright (c) 2018 Nordic Semiconductor ASA
3 * Copyright (c) 2018 Ioannis Glaropoulos
4 * Copyright (c) 2018 Oticon A/S
5 *
6 * SPDX-License-Identifier: Apache-2.0
7 */
8
9 /*
10 * This header needs lots of types and macros, instead of relaying on
11 * good inclusion order let's pull them through soc.h
12 */
13 #include <soc.h>
14
15 /* Use the NRF_RTC instance for coarse radio event scheduling */
16 #define NRF_RTC NRF_RTC0
17
18 /* HAL abstraction of event timer prescaler value */
19 #define HAL_EVENT_TIMER_PRESCALER_VALUE 4U
20
21 /* NRF Radio HW timing constants
22 * - provided in US and NS (for higher granularity)
23 * - based on the timings configured in the HW models, which are based
24 * on the product specification
25 * - Note that this timings are approx. the same as in the real HW,
26 * but tend to be rounded to the nearest microsecond
27 */
28
29 /* TXEN->TXIDLE + TXIDLE->TX (with fast Radio ramp-up mode)
30 * in microseconds for LE 1M PHY.
31 */
32 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_1M_FAST_NS 41000
33 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_1M_FAST_US \
34 HAL_RADIO_NS2US_ROUND(HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_1M_FAST_NS)
35
36 /* TXEN->TXIDLE + TXIDLE->TX (with default Radio ramp-up mode)
37 * in microseconds for LE 1M PHY.
38 */
39 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_1M_DEFAULT_NS 141000
40 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_1M_DEFAULT_US \
41 HAL_RADIO_NS2US_ROUND(HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_1M_DEFAULT_NS)
42
43 /* TXEN->TXIDLE + TXIDLE->TX (with default Radio ramp-up mode
44 * and no HW TIFS auto-switch) in microseconds for LE 1M PHY.
45 */
46 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_1M_DEFAULT_NO_HW_TIFS_NS 130000
47 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_1M_DEFAULT_NO_HW_TIFS_US \
48 HAL_RADIO_NS2US_ROUND( \
49 HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_1M_DEFAULT_NO_HW_TIFS_NS)
50
51 /* TXEN->TXIDLE + TXIDLE->TX (with fast Radio ramp-up mode)
52 * in microseconds for LE 2M PHY.
53 */
54 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_2M_FAST_NS 40000
55 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_2M_FAST_US \
56 HAL_RADIO_NS2US_ROUND(HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_2M_FAST_NS)
57
58 /* TXEN->TXIDLE + TXIDLE->TX (with default Radio ramp-up mode)
59 * in microseconds for LE 2M PHY.
60 */
61 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_2M_DEFAULT_NS 140000
62 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_2M_DEFAULT_US \
63 HAL_RADIO_NS2US_ROUND(HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_2M_DEFAULT_NS)
64
65 /* TXEN->TXIDLE + TXIDLE->TX (with default Radio ramp-up mode
66 * and no HW TIFS auto-switch) in microseconds for LE 2M PHY.
67 */
68 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_2M_DEFAULT_NO_HW_TIFS_NS 129000
69 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_2M_DEFAULT_NO_HW_TIFS_US \
70 HAL_RADIO_NS2US_ROUND( \
71 HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_2M_DEFAULT_NO_HW_TIFS_NS)
72
73 /* TXEN->TXIDLE + TXIDLE->TX (with fast Radio ramp-up mode)
74 * in microseconds for LE CODED PHY [S2].
75 */
76 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S2_FAST_NS 42000
77 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S2_FAST_US \
78 HAL_RADIO_NS2US_ROUND(HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S2_FAST_NS)
79
80 /* TXEN->TXIDLE + TXIDLE->TX (with default Radio ramp-up mode)
81 * in microseconds for LE 2M PHY [S2].
82 */
83 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S2_DEFAULT_NS 132000
84 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S2_DEFAULT_US \
85 HAL_RADIO_NS2US_ROUND(HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S2_DEFAULT_NS)
86
87 /* TXEN->TXIDLE + TXIDLE->TX (with default Radio ramp-up mode and
88 * no HW TIFS auto-switch) in microseconds for LE 2M PHY [S2].
89 */
90 /* 129.5 + 2.2 */
91 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S2_DEFAULT_NO_HW_TIFS_NS 132000
92 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S2_DEFAULT_NO_HW_TIFS_US \
93 HAL_RADIO_NS2US_ROUND( \
94 HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S2_DEFAULT_NO_HW_TIFS_NS)
95
96 /* TXEN->TXIDLE + TXIDLE->TX (with fast Radio ramp-up mode)
97 * in microseconds for LE CODED PHY [S8].
98 */
99 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S8_FAST_NS 42000
100 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S8_FAST_US \
101 HAL_RADIO_NS2US_ROUND(HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S8_FAST_NS)
102 /* TXEN->TXIDLE + TXIDLE->TX (with default Radio ramp-up mode)
103 * in microseconds for LE 2M PHY [S8].
104 */
105 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S8_DEFAULT_NS 122000
106 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S8_DEFAULT_US \
107 HAL_RADIO_NS2US_ROUND(HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S8_DEFAULT_NS)
108
109 /* TXEN->TXIDLE + TXIDLE->TX (with default Radio ramp-up mode and
110 * no HW TIFS auto-switch) in microseconds for LE 2M PHY [S8].
111 */
112 /* 129.5 + 2.2 */
113 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S8_DEFAULT_NO_HW_TIFS_NS 132000
114 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S8_DEFAULT_NO_HW_TIFS_US \
115 HAL_RADIO_NS2US_ROUND( \
116 HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S8_DEFAULT_NO_HW_TIFS_NS)
117
118 /* RXEN->RXIDLE + RXIDLE->RX (with fast Radio ramp-up mode)
119 * in microseconds for LE 1M PHY.
120 */
121 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_1M_FAST_NS 40000
122 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_1M_FAST_US \
123 HAL_RADIO_NS2US_CEIL(HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_1M_FAST_NS)
124
125 /* RXEN->RXIDLE + RXIDLE->RX (with default Radio ramp-up mode)
126 * in microseconds for LE 1M PHY.
127 */
128 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_1M_DEFAULT_NS 140000
129 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_1M_DEFAULT_US \
130 HAL_RADIO_NS2US_CEIL(HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_1M_DEFAULT_NS)
131
132 /* RXEN->RXIDLE + RXIDLE->RX (with default Radio ramp-up mode and
133 * no HW TIFS auto-switch) in microseconds for LE 1M PHY.
134 */
135 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_1M_DEFAULT_NO_HW_TIFS_NS 129000
136 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_1M_DEFAULT_NO_HW_TIFS_US \
137 HAL_RADIO_NS2US_CEIL( \
138 HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_1M_DEFAULT_NO_HW_TIFS_NS)
139
140 /* RXEN->RXIDLE + RXIDLE->RX (with fast Radio ramp-up mode)
141 * in microseconds for LE 2M PHY.
142 */
143 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_2M_FAST_NS 40000
144 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_2M_FAST_US \
145 HAL_RADIO_NS2US_CEIL(HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_2M_FAST_NS)
146
147 /* RXEN->RXIDLE + RXIDLE->RX (with default Radio ramp-up mode)
148 * in microseconds for LE 2M PHY.
149 */
150 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_2M_DEFAULT_NS 140000
151 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_2M_DEFAULT_US \
152 HAL_RADIO_NS2US_CEIL(HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_2M_DEFAULT_NS)
153
154 /* RXEN->RXIDLE + RXIDLE->RX (with default Radio ramp-up mode and
155 * no HW TIFS auto-switch) in microseconds for LE 2M PHY.
156 */
157 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_2M_DEFAULT_NO_HW_TIFS_NS 129000
158 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_2M_DEFAULT_NO_HW_TIFS_US \
159 HAL_RADIO_NS2US_CEIL(\
160 HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_2M_DEFAULT_NO_HW_TIFS_NS)
161
162
163 /* RXEN->RXIDLE + RXIDLE->RX (with fast Radio ramp-up mode)
164 * in microseconds for LE Coded PHY [S2].
165 */
166 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S2_FAST_NS 40000
167 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S2_FAST_US \
168 HAL_RADIO_NS2US_CEIL(HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S2_FAST_NS)
169
170 /* RXEN->RXIDLE + RXIDLE->RX (with default Radio ramp-up mode)
171 * in microseconds for LE Coded PHY [S2].
172 */
173 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S2_DEFAULT_NS 120000
174 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S2_DEFAULT_US \
175 HAL_RADIO_NS2US_CEIL(HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S2_DEFAULT_NS)
176
177 /* RXEN->RXIDLE + RXIDLE->RX (with default Radio ramp-up mode
178 * and no HW TIFS auto-switch) in microseconds for LE Coded PHY [S2].
179 */
180 /* 129.5 + 0.2 */
181 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S2_DEFAULT_NO_HW_TIFS_NS 130000
182 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S2_DEFAULT_NO_HW_TIFS_US \
183 HAL_RADIO_NS2US_CEIL( \
184 HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S2_DEFAULT_NO_HW_TIFS_NS)
185
186 /* RXEN->RXIDLE + RXIDLE->RX (with fast Radio ramp-up mode)
187 * in microseconds for LE Coded PHY [S8].
188 */
189 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S8_FAST_NS 40000
190 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S8_FAST_US \
191 HAL_RADIO_NS2US_CEIL(HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S8_FAST_NS)
192
193 /* RXEN->RXIDLE + RXIDLE->RX (with default Radio ramp-up mode)
194 * in microseconds for LE Coded PHY [S8].
195 */
196 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S8_DEFAULT_NS 120000
197 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S8_DEFAULT_US \
198 HAL_RADIO_NS2US_CEIL(HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S8_DEFAULT_NS)
199
200 /* RXEN->RXIDLE + RXIDLE->RX (with default Radio ramp-up mode and
201 * no HW TIFS auto-switch) in microseconds for LE Coded PHY [S8].
202 */
203 /* 129.5 + 0.2 */
204 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S8_DEFAULT_NO_HW_TIFS_NS 130000
205 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S8_DEFAULT_NO_HW_TIFS_US \
206 HAL_RADIO_NS2US_CEIL( \
207 HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S8_DEFAULT_NO_HW_TIFS_NS)
208
209
210 #define HAL_RADIO_NRF52833_TX_CHAIN_DELAY_NS 1000
211 #define HAL_RADIO_NRF52833_TX_CHAIN_DELAY_US \
212 HAL_RADIO_NS2US_CEIL(HAL_RADIO_NRF52833_TX_CHAIN_DELAY_NS)
213
214 #define HAL_RADIO_NRF52833_RX_CHAIN_DELAY_1M_NS 9000
215 #define HAL_RADIO_NRF52833_RX_CHAIN_DELAY_1M_US \
216 HAL_RADIO_NS2US_CEIL(HAL_RADIO_NRF52833_RX_CHAIN_DELAY_1M_NS)
217
218 #define HAL_RADIO_NRF52833_RX_CHAIN_DELAY_2M_NS 5000
219 #define HAL_RADIO_NRF52833_RX_CHAIN_DELAY_2M_US \
220 HAL_RADIO_NS2US_CEIL(HAL_RADIO_NRF52833_RX_CHAIN_DELAY_2M_NS)
221
222 #define HAL_RADIO_NRF52833_RX_CHAIN_DELAY_S2_US 30
223 #define HAL_RADIO_NRF52833_RX_CHAIN_DELAY_S2_NS 30000
224 #define HAL_RADIO_NRF52833_RX_CHAIN_DELAY_S8_US 30
225 #define HAL_RADIO_NRF52833_RX_CHAIN_DELAY_S8_NS 30000
226
227
228 #if defined(CONFIG_BT_CTLR_RADIO_ENABLE_FAST)
229 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_1M_US \
230 HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_1M_FAST_US
231 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_1M_NS \
232 HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_1M_FAST_NS
233
234 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_2M_US \
235 HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_2M_FAST_US
236 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_2M_NS \
237 HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_2M_FAST_NS
238
239 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S2_US \
240 HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S2_FAST_US
241 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S2_NS \
242 HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S2_FAST_NS
243
244 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S8_US \
245 HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S8_FAST_US
246 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S8_NS \
247 HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S8_FAST_NS
248
249 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_1M_US \
250 HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_1M_FAST_US
251 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_1M_NS \
252 HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_1M_FAST_NS
253
254 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_2M_US \
255 HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_2M_FAST_US
256 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_2M_NS \
257 HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_2M_FAST_NS
258
259 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S2_US \
260 HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S2_FAST_US
261 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S2_NS \
262 HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S2_FAST_NS
263
264 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S8_US \
265 HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S8_FAST_US
266 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S8_NS \
267 HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S8_FAST_NS
268
269 #else /* !CONFIG_BT_CTLR_RADIO_ENABLE_FAST */
270 #if defined(CONFIG_BT_CTLR_TIFS_HW)
271 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_1M_US \
272 HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_1M_DEFAULT_US
273 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_1M_NS \
274 HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_1M_DEFAULT_NS
275
276 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_2M_US \
277 HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_2M_DEFAULT_US
278 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_2M_NS \
279 HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_2M_DEFAULT_NS
280
281 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S2_US \
282 HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S2_DEFAULT_US
283 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S2_NS \
284 HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S2_DEFAULT_NS
285
286 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S8_US \
287 HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S8_DEFAULT_US
288 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S8_NS \
289 HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S8_DEFAULT_NS
290
291 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_1M_US \
292 HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_1M_DEFAULT_US
293 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_1M_NS \
294 HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_1M_DEFAULT_NS
295
296 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_2M_US \
297 HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_2M_DEFAULT_US
298 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_2M_NS \
299 HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_2M_DEFAULT_NS
300
301 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S2_US \
302 HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S2_DEFAULT_US
303 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S2_NS \
304 HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S2_DEFAULT_NS
305
306 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S8_US \
307 HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S8_DEFAULT_US
308 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S8_NS \
309 HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S8_DEFAULT_NS
310
311 #else /* !CONFIG_BT_CTLR_TIFS_HW */
312 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_1M_US \
313 HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_1M_DEFAULT_NO_HW_TIFS_US
314 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_1M_NS \
315 HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_1M_DEFAULT_NO_HW_TIFS_NS
316
317 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_2M_US \
318 HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_2M_DEFAULT_NO_HW_TIFS_US
319 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_2M_NS \
320 HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_2M_DEFAULT_NO_HW_TIFS_NS
321
322 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S2_US \
323 HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S2_DEFAULT_NO_HW_TIFS_US
324 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S2_NS \
325 HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S2_DEFAULT_NO_HW_TIFS_NS
326
327 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S8_US \
328 HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S8_DEFAULT_NO_HW_TIFS_US
329 #define HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S8_NS \
330 HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S8_DEFAULT_NO_HW_TIFS_NS
331
332 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_1M_US \
333 HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_1M_DEFAULT_NO_HW_TIFS_US
334 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_1M_NS \
335 HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_1M_DEFAULT_NO_HW_TIFS_NS
336
337 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_2M_US \
338 HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_2M_DEFAULT_NO_HW_TIFS_US
339 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_2M_NS \
340 HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_2M_DEFAULT_NO_HW_TIFS_NS
341
342 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S2_US \
343 HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S2_DEFAULT_NO_HW_TIFS_US
344 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S2_NS \
345 HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S2_DEFAULT_NO_HW_TIFS_NS
346
347 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S8_US \
348 HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S8_DEFAULT_NO_HW_TIFS_US
349 #define HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S8_NS \
350 HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S8_DEFAULT_NO_HW_TIFS_NS
351 #endif /* !CONFIG_BT_CTLR_TIFS_HW */
352 #endif /* !CONFIG_BT_CTLR_RADIO_ENABLE_FAST */
353
354 /* HAL abstraction of Radio bitfields */
355 #define HAL_RADIO_INTENSET_DISABLED_Msk RADIO_INTENSET_DISABLED_Msk
356 #define HAL_RADIO_SHORTS_TRX_END_DISABLE_Msk RADIO_SHORTS_END_DISABLE_Msk
357 #define HAL_RADIO_SHORTS_TRX_PHYEND_DISABLE_Msk RADIO_SHORTS_PHYEND_DISABLE_Msk
358
359 /* HAL abstraction of Radio IRQ number */
360 #define HAL_RADIO_IRQn RADIO_IRQn
361
hal_radio_reset(void)362 static inline void hal_radio_reset(void)
363 {
364 }
365
hal_radio_stop(void)366 static inline void hal_radio_stop(void)
367 {
368 }
369
hal_radio_ram_prio_setup(void)370 static inline void hal_radio_ram_prio_setup(void)
371 {
372
373 }
374
hal_radio_phy_mode_get(uint8_t phy,uint8_t flags)375 static inline uint32_t hal_radio_phy_mode_get(uint8_t phy, uint8_t flags)
376 {
377 ARG_UNUSED(flags);
378 uint32_t mode;
379
380 switch (phy) {
381 case BIT(0):
382 default:
383 mode = RADIO_MODE_MODE_Ble_1Mbit;
384 break;
385
386 case BIT(1):
387 mode = RADIO_MODE_MODE_Ble_2Mbit;
388 break;
389
390 #if defined(CONFIG_BT_CTLR_PHY_CODED)
391 case BIT(2):
392 if (flags & 0x01) {
393 mode = RADIO_MODE_MODE_Ble_LR125Kbit;
394 } else {
395 mode = RADIO_MODE_MODE_Ble_LR500Kbit;
396 }
397 break;
398 #endif /* CONFIG_BT_CTLR_PHY_CODED */
399 }
400
401 return mode;
402 }
403
hal_radio_tx_power_min_get(void)404 static inline uint32_t hal_radio_tx_power_min_get(void)
405 {
406 return RADIO_TXPOWER_TXPOWER_Neg40dBm;
407 }
408
hal_radio_tx_power_max_get(void)409 static inline uint32_t hal_radio_tx_power_max_get(void)
410 {
411 return RADIO_TXPOWER_TXPOWER_Pos8dBm;
412 }
413
hal_radio_tx_power_floor(int8_t tx_power_lvl)414 static inline uint32_t hal_radio_tx_power_floor(int8_t tx_power_lvl)
415 {
416 if (tx_power_lvl >= (int8_t)RADIO_TXPOWER_TXPOWER_Pos8dBm) {
417 return RADIO_TXPOWER_TXPOWER_Pos8dBm;
418 }
419
420 if (tx_power_lvl >= (int8_t)RADIO_TXPOWER_TXPOWER_Pos7dBm) {
421 return RADIO_TXPOWER_TXPOWER_Pos7dBm;
422 }
423
424 if (tx_power_lvl >= (int8_t)RADIO_TXPOWER_TXPOWER_Pos6dBm) {
425 return RADIO_TXPOWER_TXPOWER_Pos6dBm;
426 }
427
428 if (tx_power_lvl >= (int8_t)RADIO_TXPOWER_TXPOWER_Pos5dBm) {
429 return RADIO_TXPOWER_TXPOWER_Pos5dBm;
430 }
431
432 if (tx_power_lvl >= (int8_t)RADIO_TXPOWER_TXPOWER_Pos4dBm) {
433 return RADIO_TXPOWER_TXPOWER_Pos4dBm;
434 }
435
436 if (tx_power_lvl >= (int8_t)RADIO_TXPOWER_TXPOWER_Pos3dBm) {
437 return RADIO_TXPOWER_TXPOWER_Pos3dBm;
438 }
439
440 if (tx_power_lvl >= (int8_t)RADIO_TXPOWER_TXPOWER_Pos2dBm) {
441 return RADIO_TXPOWER_TXPOWER_Pos2dBm;
442 }
443
444 if (tx_power_lvl >= (int8_t)RADIO_TXPOWER_TXPOWER_0dBm) {
445 return RADIO_TXPOWER_TXPOWER_0dBm;
446 }
447
448 if (tx_power_lvl >= (int8_t)RADIO_TXPOWER_TXPOWER_Neg4dBm) {
449 return RADIO_TXPOWER_TXPOWER_Neg4dBm;
450 }
451
452 if (tx_power_lvl >= (int8_t)RADIO_TXPOWER_TXPOWER_Neg8dBm) {
453 return RADIO_TXPOWER_TXPOWER_Neg8dBm;
454 }
455
456 if (tx_power_lvl >= (int8_t)RADIO_TXPOWER_TXPOWER_Neg12dBm) {
457 return RADIO_TXPOWER_TXPOWER_Neg12dBm;
458 }
459
460 if (tx_power_lvl >= (int8_t)RADIO_TXPOWER_TXPOWER_Neg16dBm) {
461 return RADIO_TXPOWER_TXPOWER_Neg16dBm;
462 }
463
464 if (tx_power_lvl >= (int8_t)RADIO_TXPOWER_TXPOWER_Neg20dBm) {
465 return RADIO_TXPOWER_TXPOWER_Neg20dBm;
466 }
467
468 /* Note: The -30 dBm power level is deprecated so ignore it! */
469 return RADIO_TXPOWER_TXPOWER_Neg40dBm;
470 }
471
hal_radio_tx_ready_delay_us_get(uint8_t phy,uint8_t flags)472 static inline uint32_t hal_radio_tx_ready_delay_us_get(uint8_t phy, uint8_t flags)
473 {
474 ARG_UNUSED(flags);
475
476 switch (phy) {
477 default:
478 case BIT(0):
479 return HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_1M_US;
480 case BIT(1):
481 return HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_2M_US;
482
483 #if defined(CONFIG_BT_CTLR_PHY_CODED)
484 case BIT(2):
485 if (flags & 0x01) {
486 return HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S8_US;
487 } else {
488 return HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S2_US;
489 }
490 #endif /* CONFIG_BT_CTLR_PHY_CODED */
491 }
492 }
493
hal_radio_rx_ready_delay_us_get(uint8_t phy,uint8_t flags)494 static inline uint32_t hal_radio_rx_ready_delay_us_get(uint8_t phy, uint8_t flags)
495 {
496 ARG_UNUSED(flags);
497
498 switch (phy) {
499 default:
500 case BIT(0):
501 return HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_1M_US;
502 case BIT(1):
503 return HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_2M_US;
504
505 #if defined(CONFIG_BT_CTLR_PHY_CODED)
506 case BIT(2):
507 if (flags & 0x01) {
508 return HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S8_US;
509 } else {
510 return HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S2_US;
511 }
512 #endif /* CONFIG_BT_CTLR_PHY_CODED */
513
514 }
515 }
516
hal_radio_tx_chain_delay_us_get(uint8_t phy,uint8_t flags)517 static inline uint32_t hal_radio_tx_chain_delay_us_get(uint8_t phy, uint8_t flags)
518 {
519 ARG_UNUSED(phy);
520 ARG_UNUSED(flags);
521
522 return HAL_RADIO_NRF52833_TX_CHAIN_DELAY_US;
523 }
524
hal_radio_rx_chain_delay_us_get(uint8_t phy,uint8_t flags)525 static inline uint32_t hal_radio_rx_chain_delay_us_get(uint8_t phy, uint8_t flags)
526 {
527 ARG_UNUSED(flags);
528
529 switch (phy) {
530 default:
531 case BIT(0):
532 return HAL_RADIO_NRF52833_RX_CHAIN_DELAY_1M_US;
533 case BIT(1):
534 return HAL_RADIO_NRF52833_RX_CHAIN_DELAY_2M_US;
535
536 #if defined(CONFIG_BT_CTLR_PHY_CODED)
537 case BIT(2):
538 if (flags & 0x01) {
539 return HAL_RADIO_NRF52833_RX_CHAIN_DELAY_S8_US;
540 } else {
541 return HAL_RADIO_NRF52833_RX_CHAIN_DELAY_S2_US;
542 }
543 #endif /* CONFIG_BT_CTLR_PHY_CODED */
544 }
545 }
546
hal_radio_tx_ready_delay_ns_get(uint8_t phy,uint8_t flags)547 static inline uint32_t hal_radio_tx_ready_delay_ns_get(uint8_t phy, uint8_t flags)
548 {
549 ARG_UNUSED(flags);
550
551 switch (phy) {
552 default:
553 case BIT(0):
554 return HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_1M_NS;
555 case BIT(1):
556 return HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_2M_NS;
557
558 #if defined(CONFIG_BT_CTLR_PHY_CODED)
559 case BIT(2):
560 if (flags & 0x01) {
561 return HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S8_NS;
562 } else {
563 return HAL_RADIO_NRF52833_TXEN_TXIDLE_TX_S2_NS;
564 }
565 #endif /* CONFIG_BT_CTLR_PHY_CODED */
566 }
567 }
568
hal_radio_rx_ready_delay_ns_get(uint8_t phy,uint8_t flags)569 static inline uint32_t hal_radio_rx_ready_delay_ns_get(uint8_t phy, uint8_t flags)
570 {
571 ARG_UNUSED(flags);
572
573 switch (phy) {
574 default:
575 case BIT(0):
576 return HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_1M_NS;
577 case BIT(1):
578 return HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_2M_NS;
579 #if defined(CONFIG_BT_CTLR_PHY_CODED)
580 case BIT(2):
581 if (flags & 0x01) {
582 return HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S8_NS;
583 } else {
584 return HAL_RADIO_NRF52833_RXEN_RXIDLE_RX_S2_NS;
585 }
586 #endif /* CONFIG_BT_CTLR_PHY_CODED */
587 }
588 }
589
hal_radio_tx_chain_delay_ns_get(uint8_t phy,uint8_t flags)590 static inline uint32_t hal_radio_tx_chain_delay_ns_get(uint8_t phy, uint8_t flags)
591 {
592 ARG_UNUSED(phy);
593 ARG_UNUSED(flags);
594
595 return HAL_RADIO_NRF52833_TX_CHAIN_DELAY_NS;
596 }
597
hal_radio_rx_chain_delay_ns_get(uint8_t phy,uint8_t flags)598 static inline uint32_t hal_radio_rx_chain_delay_ns_get(uint8_t phy, uint8_t flags)
599 {
600 ARG_UNUSED(flags);
601
602 switch (phy) {
603 default:
604 case BIT(0):
605 return HAL_RADIO_NRF52833_RX_CHAIN_DELAY_1M_NS;
606 case BIT(1):
607 return HAL_RADIO_NRF52833_RX_CHAIN_DELAY_2M_NS;
608
609 #if defined(CONFIG_BT_CTLR_PHY_CODED)
610 case BIT(2):
611 if (flags & 0x01) {
612 return HAL_RADIO_NRF52833_RX_CHAIN_DELAY_S8_NS;
613 } else {
614 return HAL_RADIO_NRF52833_RX_CHAIN_DELAY_S2_NS;
615 }
616 #endif /* CONFIG_BT_CTLR_PHY_CODED */
617 }
618 }
619