@@ -202,53 +202,66 @@ static void zep_shim_qspi_cpy_to(void *priv, unsigned long addr, const void *src
202
202
}
203
203
#endif /* !CONFIG_NRF71_ON_IPC */
204
204
205
+ struct zep_shim_spinlock {
206
+ struct k_spinlock lock ;
207
+ k_spinlock_key_t key ;
208
+ };
209
+
205
210
static void * zep_shim_spinlock_alloc (void )
206
211
{
207
- struct k_mutex * lock = NULL ;
208
-
209
- lock = zep_shim_mem_zalloc (sizeof (* lock ));
212
+ struct zep_shim_spinlock * slock = NULL ;
210
213
211
- if (!lock ) {
214
+ slock = k_calloc (sizeof (* slock ), sizeof (char ));
215
+ if (!slock ) {
212
216
LOG_ERR ("%s: Unable to allocate memory for spinlock" , __func__ );
213
217
}
214
218
215
- return lock ;
219
+ return slock ;
216
220
}
217
221
218
222
static void zep_shim_spinlock_free (void * lock )
219
223
{
220
224
#if defined(CONFIG_NRF_WIFI_GLOBAL_HEAP )
221
225
k_free (lock );
222
- #else /* CONFIG_NRF_WIFI_GLOBAL_HEAP */
226
+ #else
223
227
k_heap_free (& wifi_drv_ctrl_mem_pool , lock );
224
- #endif /* CONFIG_NRF_WIFI_GLOBAL_HEAP */
228
+ #endif
225
229
}
226
230
227
231
static void zep_shim_spinlock_init (void * lock )
228
232
{
229
- k_mutex_init (lock );
233
+ /* No explicit initialization needed for k_spinlock_t */
234
+ ARG_UNUSED (lock );
230
235
}
231
236
232
237
static void zep_shim_spinlock_take (void * lock )
233
238
{
234
- k_mutex_lock (lock , K_FOREVER );
239
+ struct zep_shim_spinlock * slock = (struct zep_shim_spinlock * )lock ;
240
+
241
+ slock -> key = k_spin_lock (& slock -> lock );
235
242
}
236
243
237
244
static void zep_shim_spinlock_rel (void * lock )
238
245
{
239
- k_mutex_unlock (lock );
246
+ struct zep_shim_spinlock * slock = (struct zep_shim_spinlock * )lock ;
247
+
248
+ k_spin_unlock (& slock -> lock , slock -> key );
240
249
}
241
250
242
251
static void zep_shim_spinlock_irq_take (void * lock , unsigned long * flags )
243
252
{
253
+ struct zep_shim_spinlock * slock = (struct zep_shim_spinlock * )lock ;
254
+
244
255
ARG_UNUSED (flags );
245
- k_mutex_lock ( lock , K_FOREVER );
256
+ slock -> key = k_spin_lock ( & slock -> lock );
246
257
}
247
258
248
259
static void zep_shim_spinlock_irq_rel (void * lock , unsigned long * flags )
249
260
{
261
+ struct zep_shim_spinlock * slock = (struct zep_shim_spinlock * )lock ;
262
+
250
263
ARG_UNUSED (flags );
251
- k_mutex_unlock ( lock );
264
+ k_spin_unlock ( & slock -> lock , slock -> key );
252
265
}
253
266
254
267
static int zep_shim_pr_dbg (const char * fmt , va_list args )
0 commit comments