1 /*
2  * Copyright (c) 2024 Nordic Semiconductor ASA
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 /**
8  * @brief Implements OSAL APIs to abstract OS primitives.
9  */
10 
11 #include "osal_api.h"
12 #include "osal_ops.h"
13 
14 const struct nrf_wifi_osal_ops *os_ops;
15 
nrf_wifi_osal_init(const struct nrf_wifi_osal_ops * ops)16 void nrf_wifi_osal_init(const struct nrf_wifi_osal_ops *ops)
17 {
18 	os_ops = ops;
19 }
20 
21 
nrf_wifi_osal_deinit(void)22 void nrf_wifi_osal_deinit(void)
23 {
24 	os_ops = NULL;
25 }
26 
27 
nrf_wifi_osal_mem_alloc(size_t size)28 void *nrf_wifi_osal_mem_alloc(size_t size)
29 {
30 	return os_ops->mem_alloc(size);
31 }
32 
33 
nrf_wifi_osal_mem_zalloc(size_t size)34 void *nrf_wifi_osal_mem_zalloc(size_t size)
35 {
36 	return os_ops->mem_zalloc(size);
37 }
38 
39 
nrf_wifi_osal_mem_free(void * buf)40 void nrf_wifi_osal_mem_free(void *buf)
41 {
42 	os_ops->mem_free(buf);
43 }
44 
45 
nrf_wifi_osal_mem_cpy(void * dest,const void * src,size_t count)46 void *nrf_wifi_osal_mem_cpy(void *dest,
47 			    const void *src,
48 			    size_t count)
49 {
50 	return os_ops->mem_cpy(dest,
51 			       src,
52 			       count);
53 }
54 
55 
nrf_wifi_osal_mem_set(void * start,int val,size_t size)56 void *nrf_wifi_osal_mem_set(void *start,
57 			    int val,
58 			    size_t size)
59 {
60 	return os_ops->mem_set(start,
61 			       val,
62 			       size);
63 }
64 
65 
nrf_wifi_osal_mem_cmp(const void * addr1,const void * addr2,size_t size)66 int nrf_wifi_osal_mem_cmp(const void *addr1,
67 			  const void *addr2,
68 			  size_t size)
69 {
70 	return os_ops->mem_cmp(addr1,
71 			       addr2,
72 			       size);
73 }
74 
75 
nrf_wifi_osal_iomem_mmap(unsigned long addr,unsigned long size)76 void *nrf_wifi_osal_iomem_mmap(unsigned long addr,
77 			       unsigned long size)
78 {
79 	return os_ops->iomem_mmap(addr,
80 				  size);
81 }
82 
83 
nrf_wifi_osal_iomem_unmap(volatile void * addr)84 void nrf_wifi_osal_iomem_unmap(volatile void *addr)
85 {
86 	os_ops->iomem_unmap(addr);
87 }
88 
89 
nrf_wifi_osal_iomem_read_reg32(const volatile void * addr)90 unsigned int nrf_wifi_osal_iomem_read_reg32(const volatile void *addr)
91 {
92 	return os_ops->iomem_read_reg32(addr);
93 }
94 
95 
nrf_wifi_osal_iomem_write_reg32(volatile void * addr,unsigned int val)96 void nrf_wifi_osal_iomem_write_reg32(volatile void *addr,
97 				     unsigned int val)
98 {
99 	os_ops->iomem_write_reg32(addr,
100 				  val);
101 }
102 
103 
nrf_wifi_osal_iomem_cpy_from(void * dest,const volatile void * src,size_t count)104 void nrf_wifi_osal_iomem_cpy_from(void *dest,
105 				  const volatile void *src,
106 				  size_t count)
107 {
108 	os_ops->iomem_cpy_from(dest,
109 			       src,
110 			       count);
111 }
112 
113 
nrf_wifi_osal_iomem_cpy_to(volatile void * dest,const void * src,size_t count)114 void nrf_wifi_osal_iomem_cpy_to(volatile void *dest,
115 				const void *src,
116 				size_t count)
117 {
118 	os_ops->iomem_cpy_to(dest,
119 			     src,
120 			     count);
121 }
122 
123 
nrf_wifi_osal_spinlock_alloc(void)124 void *nrf_wifi_osal_spinlock_alloc(void)
125 {
126 	return os_ops->spinlock_alloc();
127 }
128 
129 
nrf_wifi_osal_spinlock_free(void * lock)130 void nrf_wifi_osal_spinlock_free(void *lock)
131 {
132 	os_ops->spinlock_free(lock);
133 }
134 
135 
nrf_wifi_osal_spinlock_init(void * lock)136 void nrf_wifi_osal_spinlock_init(void *lock)
137 {
138 	os_ops->spinlock_init(lock);
139 }
140 
141 
nrf_wifi_osal_spinlock_take(void * lock)142 void nrf_wifi_osal_spinlock_take(void *lock)
143 {
144 	os_ops->spinlock_take(lock);
145 }
146 
147 
nrf_wifi_osal_spinlock_rel(void * lock)148 void nrf_wifi_osal_spinlock_rel(void *lock)
149 {
150 	os_ops->spinlock_rel(lock);
151 }
152 
nrf_wifi_osal_spinlock_irq_take(void * lock,unsigned long * flags)153 void nrf_wifi_osal_spinlock_irq_take(void *lock,
154 				     unsigned long *flags)
155 {
156 	os_ops->spinlock_irq_take(lock,
157 				  flags);
158 }
159 
160 
nrf_wifi_osal_spinlock_irq_rel(void * lock,unsigned long * flags)161 void nrf_wifi_osal_spinlock_irq_rel(void *lock,
162 				    unsigned long *flags)
163 {
164 	os_ops->spinlock_irq_rel(lock,
165 				 flags);
166 }
167 
168 
169 #if WIFI_NRF70_LOG_LEVEL >= NRF_WIFI_LOG_LEVEL_DBG
nrf_wifi_osal_log_dbg(const char * fmt,...)170 int nrf_wifi_osal_log_dbg(const char *fmt,
171 			  ...)
172 {
173 	va_list args;
174 	int ret = -1;
175 
176 	va_start(args, fmt);
177 
178 	ret = os_ops->log_dbg(fmt, args);
179 
180 	va_end(args);
181 
182 	return ret;
183 }
184 #endif /* WIFI_NRF70_LOG_LEVEL_DBG */
185 
186 
187 #if WIFI_NRF70_LOG_LEVEL >= NRF_WIFI_LOG_LEVEL_INF
nrf_wifi_osal_log_info(const char * fmt,...)188 int nrf_wifi_osal_log_info(const char *fmt,
189 			   ...)
190 {
191 	va_list args;
192 	int ret = -1;
193 
194 	va_start(args, fmt);
195 
196 	ret = os_ops->log_info(fmt, args);
197 
198 	va_end(args);
199 
200 	return ret;
201 }
202 #endif /* WIFI_NRF70_LOG_LEVEL_INF */
203 
204 
205 #if WIFI_NRF70_LOG_LEVEL >= NRF_WIFI_LOG_LEVEL_ERR
nrf_wifi_osal_log_err(const char * fmt,...)206 int nrf_wifi_osal_log_err(const char *fmt,
207 			  ...)
208 {
209 	va_list args;
210 	int ret = -1;
211 
212 	va_start(args, fmt);
213 
214 	ret = os_ops->log_err(fmt, args);
215 
216 	va_end(args);
217 
218 	return ret;
219 }
220 #endif /* WIFI_NRF70_LOG_LEVEL_ERR */
221 
222 
nrf_wifi_osal_llist_node_alloc(void)223 void *nrf_wifi_osal_llist_node_alloc(void)
224 {
225 	return os_ops->llist_node_alloc();
226 }
227 
228 
nrf_wifi_osal_llist_node_free(void * node)229 void nrf_wifi_osal_llist_node_free(void *node)
230 {
231 	os_ops->llist_node_free(node);
232 }
233 
234 
nrf_wifi_osal_llist_node_data_get(void * node)235 void *nrf_wifi_osal_llist_node_data_get(void *node)
236 {
237 	return os_ops->llist_node_data_get(node);
238 }
239 
240 
nrf_wifi_osal_llist_node_data_set(void * node,void * data)241 void nrf_wifi_osal_llist_node_data_set(void *node,
242 				       void *data)
243 {
244 	os_ops->llist_node_data_set(node,
245 				    data);
246 }
247 
248 
nrf_wifi_osal_llist_alloc(void)249 void *nrf_wifi_osal_llist_alloc(void)
250 {
251 	return os_ops->llist_alloc();
252 }
253 
254 
nrf_wifi_osal_llist_free(void * llist)255 void nrf_wifi_osal_llist_free(void *llist)
256 {
257 	return os_ops->llist_free(llist);
258 }
259 
260 
nrf_wifi_osal_llist_init(void * llist)261 void nrf_wifi_osal_llist_init(void *llist)
262 {
263 	return os_ops->llist_init(llist);
264 }
265 
266 
nrf_wifi_osal_llist_add_node_tail(void * llist,void * llist_node)267 void nrf_wifi_osal_llist_add_node_tail(void *llist,
268 				       void *llist_node)
269 {
270 	return os_ops->llist_add_node_tail(llist,
271 					   llist_node);
272 }
273 
nrf_wifi_osal_llist_add_node_head(void * llist,void * llist_node)274 void nrf_wifi_osal_llist_add_node_head(void *llist,
275 				       void *llist_node)
276 {
277 	return os_ops->llist_add_node_head(llist,
278 					   llist_node);
279 }
280 
281 
nrf_wifi_osal_llist_get_node_head(void * llist)282 void *nrf_wifi_osal_llist_get_node_head(void *llist)
283 {
284 	return os_ops->llist_get_node_head(llist);
285 }
286 
287 
nrf_wifi_osal_llist_get_node_nxt(void * llist,void * llist_node)288 void *nrf_wifi_osal_llist_get_node_nxt(void *llist,
289 				       void *llist_node)
290 {
291 	return os_ops->llist_get_node_nxt(llist,
292 					  llist_node);
293 }
294 
295 
nrf_wifi_osal_llist_del_node(void * llist,void * llist_node)296 void nrf_wifi_osal_llist_del_node(void *llist,
297 				  void *llist_node)
298 {
299 	os_ops->llist_del_node(llist,
300 			       llist_node);
301 }
302 
303 
nrf_wifi_osal_llist_len(void * llist)304 unsigned int nrf_wifi_osal_llist_len(void *llist)
305 {
306 	return os_ops->llist_len(llist);
307 }
308 
309 
nrf_wifi_osal_nbuf_alloc(unsigned int size)310 void *nrf_wifi_osal_nbuf_alloc(unsigned int size)
311 {
312 	return os_ops->nbuf_alloc(size);
313 }
314 
315 
nrf_wifi_osal_nbuf_free(void * nbuf)316 void nrf_wifi_osal_nbuf_free(void *nbuf)
317 {
318 	os_ops->nbuf_free(nbuf);
319 }
320 
321 
nrf_wifi_osal_nbuf_headroom_res(void * nbuf,unsigned int size)322 void nrf_wifi_osal_nbuf_headroom_res(void *nbuf,
323 				     unsigned int size)
324 {
325 	os_ops->nbuf_headroom_res(nbuf,
326 				  size);
327 }
328 
329 
nrf_wifi_osal_nbuf_headroom_get(void * nbuf)330 unsigned int nrf_wifi_osal_nbuf_headroom_get(void *nbuf)
331 {
332 	return os_ops->nbuf_headroom_get(nbuf);
333 }
334 
335 
nrf_wifi_osal_nbuf_data_size(void * nbuf)336 unsigned int nrf_wifi_osal_nbuf_data_size(void *nbuf)
337 {
338 	return os_ops->nbuf_data_size(nbuf);
339 }
340 
341 
nrf_wifi_osal_nbuf_data_get(void * nbuf)342 void *nrf_wifi_osal_nbuf_data_get(void *nbuf)
343 {
344 	return os_ops->nbuf_data_get(nbuf);
345 }
346 
347 
nrf_wifi_osal_nbuf_data_put(void * nbuf,unsigned int size)348 void *nrf_wifi_osal_nbuf_data_put(void *nbuf,
349 				  unsigned int size)
350 {
351 	return os_ops->nbuf_data_put(nbuf,
352 				     size);
353 }
354 
355 
nrf_wifi_osal_nbuf_data_push(void * nbuf,unsigned int size)356 void *nrf_wifi_osal_nbuf_data_push(void *nbuf,
357 				   unsigned int size)
358 {
359 	return os_ops->nbuf_data_push(nbuf,
360 				      size);
361 }
362 
363 
nrf_wifi_osal_nbuf_data_pull(void * nbuf,unsigned int size)364 void *nrf_wifi_osal_nbuf_data_pull(void *nbuf,
365 				   unsigned int size)
366 {
367 	return os_ops->nbuf_data_pull(nbuf,
368 				      size);
369 }
370 
nrf_wifi_osal_nbuf_get_priority(void * nbuf)371 unsigned char nrf_wifi_osal_nbuf_get_priority(void *nbuf)
372 {
373 	return os_ops->nbuf_get_priority(nbuf);
374 }
375 
nrf_wifi_osal_nbuf_get_chksum_done(void * nbuf)376 unsigned char nrf_wifi_osal_nbuf_get_chksum_done(void *nbuf)
377 {
378 	return os_ops->nbuf_get_chksum_done(nbuf);
379 }
380 
nrf_wifi_osal_nbuf_set_chksum_done(void * nbuf,unsigned char chksum_done)381 void nrf_wifi_osal_nbuf_set_chksum_done(void *nbuf,
382 					unsigned char chksum_done)
383 {
384 	return os_ops->nbuf_set_chksum_done(nbuf, chksum_done);
385 }
386 
387 
nrf_wifi_osal_tasklet_alloc(int type)388 void *nrf_wifi_osal_tasklet_alloc(int type)
389 {
390 	return os_ops->tasklet_alloc(type);
391 }
392 
393 
nrf_wifi_osal_tasklet_free(void * tasklet)394 void nrf_wifi_osal_tasklet_free(void *tasklet)
395 {
396 	os_ops->tasklet_free(tasklet);
397 }
398 
399 
nrf_wifi_osal_tasklet_init(void * tasklet,void (* callbk_fn)(unsigned long),unsigned long data)400 void nrf_wifi_osal_tasklet_init(void *tasklet,
401 				void (*callbk_fn)(unsigned long),
402 				unsigned long data)
403 {
404 	os_ops->tasklet_init(tasklet,
405 			     callbk_fn,
406 			     data);
407 }
408 
409 
nrf_wifi_osal_tasklet_schedule(void * tasklet)410 void nrf_wifi_osal_tasklet_schedule(void *tasklet)
411 {
412 	os_ops->tasklet_schedule(tasklet);
413 }
414 
415 
nrf_wifi_osal_tasklet_kill(void * tasklet)416 void nrf_wifi_osal_tasklet_kill(void *tasklet)
417 {
418 	os_ops->tasklet_kill(tasklet);
419 }
420 
421 
nrf_wifi_osal_sleep_ms(unsigned int msecs)422 void nrf_wifi_osal_sleep_ms(unsigned int msecs)
423 {
424 	os_ops->sleep_ms(msecs);
425 }
426 
427 
nrf_wifi_osal_delay_us(unsigned long usecs)428 void nrf_wifi_osal_delay_us(unsigned long usecs)
429 {
430 	os_ops->delay_us(usecs);
431 }
432 
433 
nrf_wifi_osal_time_get_curr_us(void)434 unsigned long nrf_wifi_osal_time_get_curr_us(void)
435 {
436 	return os_ops->time_get_curr_us();
437 }
438 
439 
nrf_wifi_osal_time_elapsed_us(unsigned long start_time_us)440 unsigned int nrf_wifi_osal_time_elapsed_us(unsigned long start_time_us)
441 {
442 	return os_ops->time_elapsed_us(start_time_us);
443 }
444 
nrf_wifi_osal_time_get_curr_ms()445 unsigned long nrf_wifi_osal_time_get_curr_ms()
446 {
447 	return os_ops->time_get_curr_ms();
448 }
449 
nrf_wifi_osal_time_elapsed_ms(unsigned long start_time_ms)450 unsigned int nrf_wifi_osal_time_elapsed_ms(unsigned long start_time_ms)
451 {
452 	return os_ops->time_elapsed_ms(start_time_ms);
453 }
454 
nrf_wifi_osal_bus_pcie_init(const char * dev_name,unsigned int vendor_id,unsigned int sub_vendor_id,unsigned int device_id,unsigned int sub_device_id)455 void *nrf_wifi_osal_bus_pcie_init(const char *dev_name,
456 				  unsigned int vendor_id,
457 				  unsigned int sub_vendor_id,
458 				  unsigned int device_id,
459 				  unsigned int sub_device_id)
460 {
461 	return os_ops->bus_pcie_init(dev_name,
462 				     vendor_id,
463 				     sub_vendor_id,
464 				     device_id,
465 				     sub_device_id);
466 }
467 
468 
nrf_wifi_osal_bus_pcie_deinit(void * os_pcie_priv)469 void nrf_wifi_osal_bus_pcie_deinit(void *os_pcie_priv)
470 {
471 	os_ops->bus_pcie_deinit(os_pcie_priv);
472 }
473 
474 
nrf_wifi_osal_bus_pcie_dev_add(void * os_pcie_priv,void * osal_pcie_dev_ctx)475 void *nrf_wifi_osal_bus_pcie_dev_add(void *os_pcie_priv,
476 				     void *osal_pcie_dev_ctx)
477 {
478 	return os_ops->bus_pcie_dev_add(os_pcie_priv,
479 					osal_pcie_dev_ctx);
480 
481 }
482 
483 
nrf_wifi_osal_bus_pcie_dev_rem(void * os_pcie_dev_ctx)484 void nrf_wifi_osal_bus_pcie_dev_rem(void *os_pcie_dev_ctx)
485 {
486 	return os_ops->bus_pcie_dev_rem(os_pcie_dev_ctx);
487 }
488 
489 
nrf_wifi_osal_bus_pcie_dev_init(void * os_pcie_dev_ctx)490 enum nrf_wifi_status nrf_wifi_osal_bus_pcie_dev_init(void *os_pcie_dev_ctx)
491 {
492 	return os_ops->bus_pcie_dev_init(os_pcie_dev_ctx);
493 
494 }
495 
496 
nrf_wifi_osal_bus_pcie_dev_deinit(void * os_pcie_dev_ctx)497 void nrf_wifi_osal_bus_pcie_dev_deinit(void *os_pcie_dev_ctx)
498 {
499 	return os_ops->bus_pcie_dev_deinit(os_pcie_dev_ctx);
500 }
501 
502 
nrf_wifi_osal_bus_pcie_dev_intr_reg(void * os_pcie_dev_ctx,void * callbk_data,int (* callbk_fn)(void * callbk_data))503 enum nrf_wifi_status nrf_wifi_osal_bus_pcie_dev_intr_reg(void *os_pcie_dev_ctx,
504 							 void *callbk_data,
505 							 int (*callbk_fn)(void *callbk_data))
506 {
507 	return os_ops->bus_pcie_dev_intr_reg(os_pcie_dev_ctx,
508 					     callbk_data,
509 					     callbk_fn);
510 }
511 
512 
nrf_wifi_osal_bus_pcie_dev_intr_unreg(void * os_pcie_dev_ctx)513 void nrf_wifi_osal_bus_pcie_dev_intr_unreg(void *os_pcie_dev_ctx)
514 {
515 	os_ops->bus_pcie_dev_intr_unreg(os_pcie_dev_ctx);
516 }
517 
518 
nrf_wifi_osal_bus_pcie_dev_dma_map(void * os_pcie_dev_ctx,void * virt_addr,size_t size,enum nrf_wifi_osal_dma_dir dir)519 void *nrf_wifi_osal_bus_pcie_dev_dma_map(void *os_pcie_dev_ctx,
520 					 void *virt_addr,
521 					 size_t size,
522 					 enum nrf_wifi_osal_dma_dir dir)
523 {
524 	return os_ops->bus_pcie_dev_dma_map(os_pcie_dev_ctx,
525 					    virt_addr,
526 					    size,
527 					    dir);
528 }
529 
530 
nrf_wifi_osal_bus_pcie_dev_dma_unmap(void * os_pcie_dev_ctx,void * dma_addr,size_t size,enum nrf_wifi_osal_dma_dir dir)531 void nrf_wifi_osal_bus_pcie_dev_dma_unmap(void *os_pcie_dev_ctx,
532 					  void *dma_addr,
533 					  size_t size,
534 					  enum nrf_wifi_osal_dma_dir dir)
535 {
536 	os_ops->bus_pcie_dev_dma_unmap(os_pcie_dev_ctx,
537 				       dma_addr,
538 				       size,
539 				       dir);
540 }
541 
542 
nrf_wifi_osal_bus_pcie_dev_host_map_get(void * os_pcie_dev_ctx,struct nrf_wifi_osal_host_map * host_map)543 void nrf_wifi_osal_bus_pcie_dev_host_map_get(void *os_pcie_dev_ctx,
544 					     struct nrf_wifi_osal_host_map *host_map)
545 {
546 	os_ops->bus_pcie_dev_host_map_get(os_pcie_dev_ctx,
547 					  host_map);
548 }
549 
550 
nrf_wifi_osal_bus_qspi_init(void)551 void *nrf_wifi_osal_bus_qspi_init(void)
552 {
553 	return os_ops->bus_qspi_init();
554 }
555 
556 
nrf_wifi_osal_bus_qspi_deinit(void * os_qspi_priv)557 void nrf_wifi_osal_bus_qspi_deinit(void *os_qspi_priv)
558 {
559 	os_ops->bus_qspi_deinit(os_qspi_priv);
560 }
561 
562 
nrf_wifi_osal_bus_qspi_dev_add(void * os_qspi_priv,void * osal_qspi_dev_ctx)563 void *nrf_wifi_osal_bus_qspi_dev_add(void *os_qspi_priv,
564 				     void *osal_qspi_dev_ctx)
565 {
566 	return os_ops->bus_qspi_dev_add(os_qspi_priv,
567 					osal_qspi_dev_ctx);
568 }
569 
570 
nrf_wifi_osal_bus_qspi_dev_rem(void * os_qspi_dev_ctx)571 void nrf_wifi_osal_bus_qspi_dev_rem(void *os_qspi_dev_ctx)
572 {
573 	os_ops->bus_qspi_dev_rem(os_qspi_dev_ctx);
574 }
575 
576 
nrf_wifi_osal_bus_qspi_dev_init(void * os_qspi_dev_ctx)577 enum nrf_wifi_status nrf_wifi_osal_bus_qspi_dev_init(void *os_qspi_dev_ctx)
578 {
579 	return os_ops->bus_qspi_dev_init(os_qspi_dev_ctx);
580 }
581 
582 
nrf_wifi_osal_bus_qspi_dev_deinit(void * os_qspi_dev_ctx)583 void nrf_wifi_osal_bus_qspi_dev_deinit(void *os_qspi_dev_ctx)
584 {
585 	os_ops->bus_qspi_dev_deinit(os_qspi_dev_ctx);
586 }
587 
588 
nrf_wifi_osal_bus_qspi_dev_intr_reg(void * os_qspi_dev_ctx,void * callbk_data,int (* callbk_fn)(void * callbk_data))589 enum nrf_wifi_status nrf_wifi_osal_bus_qspi_dev_intr_reg(void *os_qspi_dev_ctx,
590 							 void *callbk_data,
591 							 int (*callbk_fn)(void *callbk_data))
592 {
593 	return os_ops->bus_qspi_dev_intr_reg(os_qspi_dev_ctx,
594 					     callbk_data,
595 					     callbk_fn);
596 }
597 
598 
nrf_wifi_osal_bus_qspi_dev_intr_unreg(void * os_qspi_dev_ctx)599 void nrf_wifi_osal_bus_qspi_dev_intr_unreg(void *os_qspi_dev_ctx)
600 {
601 	os_ops->bus_qspi_dev_intr_unreg(os_qspi_dev_ctx);
602 }
603 
604 
nrf_wifi_osal_bus_qspi_dev_host_map_get(void * os_qspi_dev_ctx,struct nrf_wifi_osal_host_map * host_map)605 void nrf_wifi_osal_bus_qspi_dev_host_map_get(void *os_qspi_dev_ctx,
606 					     struct nrf_wifi_osal_host_map *host_map)
607 {
608 	os_ops->bus_qspi_dev_host_map_get(os_qspi_dev_ctx,
609 					  host_map);
610 }
611 
612 
nrf_wifi_osal_qspi_read_reg32(void * priv,unsigned long addr)613 unsigned int nrf_wifi_osal_qspi_read_reg32(void *priv,
614 					   unsigned long addr)
615 {
616 	return os_ops->qspi_read_reg32(priv,
617 				       addr);
618 }
619 
620 
nrf_wifi_osal_qspi_write_reg32(void * priv,unsigned long addr,unsigned int val)621 void nrf_wifi_osal_qspi_write_reg32(void *priv,
622 				    unsigned long addr,
623 				    unsigned int val)
624 {
625 	os_ops->qspi_write_reg32(priv,
626 				 addr,
627 				 val);
628 }
629 
630 
nrf_wifi_osal_qspi_cpy_from(void * priv,void * dest,unsigned long addr,size_t count)631 void nrf_wifi_osal_qspi_cpy_from(void *priv,
632 				 void *dest,
633 				 unsigned long addr,
634 				 size_t count)
635 {
636 	os_ops->qspi_cpy_from(priv,
637 			      dest,
638 			      addr,
639 			      count);
640 }
641 
642 
nrf_wifi_osal_qspi_cpy_to(void * priv,unsigned long addr,const void * src,size_t count)643 void nrf_wifi_osal_qspi_cpy_to(void *priv,
644 			       unsigned long addr,
645 			       const void *src,
646 			       size_t count)
647 {
648 	os_ops->qspi_cpy_to(priv,
649 			    addr,
650 			    src,
651 			    count);
652 }
653 
654 
nrf_wifi_osal_bus_spi_init(void)655 void *nrf_wifi_osal_bus_spi_init(void)
656 {
657 	return os_ops->bus_spi_init();
658 }
659 
660 
nrf_wifi_osal_bus_spi_deinit(void * os_spi_priv)661 void nrf_wifi_osal_bus_spi_deinit(void *os_spi_priv)
662 {
663 	os_ops->bus_spi_deinit(os_spi_priv);
664 }
665 
666 
nrf_wifi_osal_bus_spi_dev_add(void * os_spi_priv,void * osal_spi_dev_ctx)667 void *nrf_wifi_osal_bus_spi_dev_add(void *os_spi_priv,
668 				    void *osal_spi_dev_ctx)
669 {
670 	return os_ops->bus_spi_dev_add(os_spi_priv,
671 				       osal_spi_dev_ctx);
672 }
673 
674 
nrf_wifi_osal_bus_spi_dev_rem(void * os_spi_dev_ctx)675 void nrf_wifi_osal_bus_spi_dev_rem(void *os_spi_dev_ctx)
676 {
677 	os_ops->bus_spi_dev_rem(os_spi_dev_ctx);
678 }
679 
680 
nrf_wifi_osal_bus_spi_dev_init(void * os_spi_dev_ctx)681 enum nrf_wifi_status nrf_wifi_osal_bus_spi_dev_init(void *os_spi_dev_ctx)
682 {
683 	return os_ops->bus_spi_dev_init(os_spi_dev_ctx);
684 }
685 
686 
nrf_wifi_osal_bus_spi_dev_deinit(void * os_spi_dev_ctx)687 void nrf_wifi_osal_bus_spi_dev_deinit(void *os_spi_dev_ctx)
688 {
689 	os_ops->bus_spi_dev_deinit(os_spi_dev_ctx);
690 }
691 
692 
nrf_wifi_osal_bus_spi_dev_intr_reg(void * os_spi_dev_ctx,void * callbk_data,int (* callbk_fn)(void * callbk_data))693 enum nrf_wifi_status nrf_wifi_osal_bus_spi_dev_intr_reg(void *os_spi_dev_ctx,
694 							void *callbk_data,
695 							int (*callbk_fn)(void *callbk_data))
696 {
697 	return os_ops->bus_spi_dev_intr_reg(os_spi_dev_ctx,
698 					    callbk_data,
699 					    callbk_fn);
700 }
701 
702 
nrf_wifi_osal_bus_spi_dev_intr_unreg(void * os_spi_dev_ctx)703 void nrf_wifi_osal_bus_spi_dev_intr_unreg(void *os_spi_dev_ctx)
704 {
705 	os_ops->bus_spi_dev_intr_unreg(os_spi_dev_ctx);
706 }
707 
708 
nrf_wifi_osal_bus_spi_dev_host_map_get(void * os_spi_dev_ctx,struct nrf_wifi_osal_host_map * host_map)709 void nrf_wifi_osal_bus_spi_dev_host_map_get(void *os_spi_dev_ctx,
710 					    struct nrf_wifi_osal_host_map *host_map)
711 {
712 	os_ops->bus_spi_dev_host_map_get(os_spi_dev_ctx,
713 					 host_map);
714 }
715 
nrf_wifi_osal_spi_read_reg32(void * os_spi_dev_ctx,unsigned long addr)716 unsigned int nrf_wifi_osal_spi_read_reg32(void *os_spi_dev_ctx,
717 					  unsigned long addr)
718 {
719 	return os_ops->spi_read_reg32(os_spi_dev_ctx, addr);
720 }
721 
722 
nrf_wifi_osal_spi_write_reg32(void * os_spi_dev_ctx,unsigned long addr,unsigned int val)723 void nrf_wifi_osal_spi_write_reg32(void *os_spi_dev_ctx,
724 				   unsigned long addr,
725 				   unsigned int val)
726 {
727 	os_ops->spi_write_reg32(os_spi_dev_ctx,
728 				addr,
729 				val);
730 }
731 
732 
nrf_wifi_osal_spi_cpy_from(void * os_spi_dev_ctx,void * dest,unsigned long addr,size_t count)733 void nrf_wifi_osal_spi_cpy_from(void *os_spi_dev_ctx,
734 				void *dest,
735 				unsigned long addr,
736 				size_t count)
737 {
738 	os_ops->spi_cpy_from(os_spi_dev_ctx,
739 			     dest,
740 			     addr,
741 			     count);
742 }
743 
744 
nrf_wifi_osal_spi_cpy_to(void * os_spi_dev_ctx,unsigned long addr,const void * src,size_t count)745 void nrf_wifi_osal_spi_cpy_to(void *os_spi_dev_ctx,
746 			      unsigned long addr,
747 			      const void *src,
748 			      size_t count)
749 {
750 		os_ops->spi_cpy_to(os_spi_dev_ctx,
751 				   addr,
752 				   src,
753 				   count);
754 }
755 
756 #ifdef NRF_WIFI_LOW_POWER
nrf_wifi_osal_timer_alloc(void)757 void *nrf_wifi_osal_timer_alloc(void)
758 {
759 	return os_ops->timer_alloc();
760 }
761 
762 
nrf_wifi_osal_timer_free(void * timer)763 void nrf_wifi_osal_timer_free(void *timer)
764 {
765 	os_ops->timer_free(timer);
766 }
767 
768 
nrf_wifi_osal_timer_init(void * timer,void (* callbk_fn)(unsigned long),unsigned long data)769 void nrf_wifi_osal_timer_init(void *timer,
770 			      void (*callbk_fn)(unsigned long),
771 			      unsigned long data)
772 {
773 	os_ops->timer_init(timer,
774 			   callbk_fn,
775 			   data);
776 }
777 
778 
nrf_wifi_osal_timer_schedule(void * timer,unsigned long duration)779 void nrf_wifi_osal_timer_schedule(void *timer,
780 				  unsigned long duration)
781 {
782 	os_ops->timer_schedule(timer,
783 			       duration);
784 }
785 
786 
nrf_wifi_osal_timer_kill(void * timer)787 void nrf_wifi_osal_timer_kill(void *timer)
788 {
789 	os_ops->timer_kill(timer);
790 }
791 
792 
793 
nrf_wifi_osal_bus_qspi_ps_sleep(void * os_qspi_priv)794 int nrf_wifi_osal_bus_qspi_ps_sleep(void *os_qspi_priv)
795 {
796 	return os_ops->bus_qspi_ps_sleep(os_qspi_priv);
797 }
798 
799 
nrf_wifi_osal_bus_qspi_ps_wake(void * os_qspi_priv)800 int nrf_wifi_osal_bus_qspi_ps_wake(void *os_qspi_priv)
801 {
802 	return os_ops->bus_qspi_ps_wake(os_qspi_priv);
803 }
804 
805 
nrf_wifi_osal_bus_qspi_ps_status(void * os_qspi_priv)806 int nrf_wifi_osal_bus_qspi_ps_status(void *os_qspi_priv)
807 {
808 	return os_ops->bus_qspi_ps_status(os_qspi_priv);
809 }
810 #endif /* NRF_WIFI_LOW_POWER */
811 
nrf_wifi_osal_assert(int test_val,int val,enum nrf_wifi_assert_op_type op,char * msg)812 void nrf_wifi_osal_assert(int test_val,
813 			  int val,
814 			  enum nrf_wifi_assert_op_type op,
815 			  char *msg)
816 {
817 	return os_ops->assert(test_val, val, op, msg);
818 }
819 
nrf_wifi_osal_strlen(const void * str)820 unsigned int nrf_wifi_osal_strlen(const void *str)
821 {
822 	return os_ops->strlen(str);
823 }
824 
nrf_wifi_osal_rand8_get(void)825 unsigned char nrf_wifi_osal_rand8_get(void)
826 {
827 	return os_ops->rand8_get();
828 }
829