8
8
#include <zephyr/device.h>
9
9
#include <soc.h>
10
10
#include <zephyr/drivers/gpio.h>
11
- #include <zephyr/spinlock.h>
12
11
#include <zephyr/logging/log.h>
13
12
14
13
#include "st25r3911b_reg.h"
@@ -26,7 +25,7 @@ static const struct gpio_dt_spec irq_gpio =
26
25
27
26
static struct gpio_callback gpio_cb ;
28
27
29
- static struct k_spinlock spinlock ;
28
+ static K_MUTEX_DEFINE ( irq_modify_lock ) ;
30
29
static struct k_sem * sem ;
31
30
32
31
static uint32_t irq_mask ;
@@ -114,9 +113,12 @@ int st25r3911b_irq_modify(uint32_t clr_mask, uint32_t set_mask)
114
113
int err = 0 ;
115
114
uint32_t mask ;
116
115
uint32_t old_mask ;
117
- k_spinlock_key_t key ;
118
116
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
+ }
120
122
121
123
old_mask = irq_mask ;
122
124
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)
140
142
}
141
143
}
142
144
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
+ }
144
149
145
150
LOG_DBG ("Interrupts modified, current state %u" , old_mask );
146
151
0 commit comments