From fef7abb5989c9d9186f405e8d43209a7789f2bdf Mon Sep 17 00:00:00 2001 From: raiden00pl Date: Fri, 27 Mar 2020 16:25:33 +0100 Subject: [PATCH] arch/arm/src/nrf52/nrf52_i2c.c: protect the I2C transfer with a semaphore --- arch/arm/src/nrf52/nrf52_i2c.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/arch/arm/src/nrf52/nrf52_i2c.c b/arch/arm/src/nrf52/nrf52_i2c.c index 4da303fddf5..0285d8e6238 100644 --- a/arch/arm/src/nrf52/nrf52_i2c.c +++ b/arch/arm/src/nrf52/nrf52_i2c.c @@ -223,6 +223,12 @@ static int nrf52_i2c_transfer(FAR struct i2c_master_s *dev, uint32_t regval = 0; int ret = OK; + ret = nxsem_wait(&priv->sem_excl); + if (ret < 0) + { + return ret; + } + /* Reset ptr and dcnt */ priv->dcnt = 0; @@ -397,7 +403,8 @@ static int nrf52_i2c_transfer(FAR struct i2c_master_s *dev, #endif errout: - return ret; + nxsem_post(&priv->sem_excl); + return ret; } /****************************************************************************