88#include <zephyr/device.h>
99#include <soc.h>
1010#include <zephyr/drivers/gpio.h>
11- #include <zephyr/spinlock.h>
1211#include <zephyr/logging/log.h>
1312
1413#include "st25r3911b_reg.h"
@@ -26,7 +25,7 @@ static const struct gpio_dt_spec irq_gpio =
2625
2726static struct gpio_callback gpio_cb ;
2827
29- static struct k_spinlock spinlock ;
28+ static K_MUTEX_DEFINE ( irq_modify_lock ) ;
3029static struct k_sem * sem ;
3130
3231static uint32_t irq_mask ;
@@ -114,9 +113,12 @@ int st25r3911b_irq_modify(uint32_t clr_mask, uint32_t set_mask)
114113 int err = 0 ;
115114 uint32_t mask ;
116115 uint32_t old_mask ;
117- k_spinlock_key_t key ;
118116
119- key = k_spin_lock (& spinlock );
117+ err = k_mutex_lock (& irq_modify_lock , K_NO_WAIT );
118+ if (err ) {
119+ LOG_DBG ("Failed to lock irq_modify mutex (err %d)" , err );
120+ return err ;
121+ }
120122
121123 old_mask = irq_mask ;
122124 mask = (~old_mask & set_mask ) | (old_mask & clr_mask );
@@ -140,7 +142,10 @@ int st25r3911b_irq_modify(uint32_t clr_mask, uint32_t set_mask)
140142 }
141143 }
142144
143- k_spin_unlock (& spinlock , key );
145+ err = k_mutex_unlock (& irq_modify_lock );
146+ if (err ) {
147+ LOG_DBG ("Failed to unlock irq_modify mutex (err %d)" , err );
148+ }
144149
145150 LOG_DBG ("Interrupts modified, current state %u" , old_mask );
146151
0 commit comments