driver: i2c: npcx: reset i2c semaphore before start transaction.
This CL reset i2c event-completed semaphore before starting transactions. Some interrupt events such as BUS_ERROR might change its counter when i2c bus is idle. It causes that the driver cannot wait for the event completed and return immediately. Signed-off-by: Mulin Chao <mlchao@nuvoton.com>
This commit is contained in:
parent
5ccb89c3bc
commit
7c8cb78b23
1 changed files with 7 additions and 0 deletions
|
|
@ -790,6 +790,13 @@ int npcx_i2c_ctrl_transfer(const struct device *i2c_dev, struct i2c_msg *msgs,
|
|||
data->trans_err = 0;
|
||||
data->addr = addr;
|
||||
|
||||
/*
|
||||
* Reset i2c event-completed semaphore before starting transactions.
|
||||
* Some interrupt events such as BUS_ERROR might change its counter
|
||||
* when bus is idle.
|
||||
*/
|
||||
k_sem_reset(&data->sync_sem);
|
||||
|
||||
for (i = 0U; i < num_msgs; i++) {
|
||||
struct i2c_msg *msg = msgs + i;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue