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