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