From 4e4229a8ef5a1dd34114fe9bdf0364b3e458aab9 Mon Sep 17 00:00:00 2001 From: Juha Niskanen Date: Thu, 22 Mar 2018 06:51:09 -0600 Subject: [PATCH] i2c/i2c_master.h: Change incorrect comment about I2C_TRANSFER return value to indicate that the method returns zero on success rather than the number of bytes transferred. --- arch/arm/src/efm32/efm32_i2c.c | 6 +++--- arch/arm/src/lc823450/lc823450_i2c.c | 11 +++++------ arch/arm/src/stm32/stm32_i2c.c | 5 +++-- arch/arm/src/stm32f7/stm32_i2c.c | 2 +- arch/arm/src/stm32l4/stm32l4_i2c.c | 2 +- include/nuttx/i2c/i2c_master.h | 7 +++++-- 6 files changed, 18 insertions(+), 15 deletions(-) diff --git a/arch/arm/src/efm32/efm32_i2c.c b/arch/arm/src/efm32/efm32_i2c.c index bb85170c8b0..9a8465b812c 100644 --- a/arch/arm/src/efm32/efm32_i2c.c +++ b/arch/arm/src/efm32/efm32_i2c.c @@ -1441,11 +1441,11 @@ static int efm32_i2c_transfer(FAR struct i2c_master_s *dev, FAR struct efm32_i2c_priv_s *priv = (struct efm32_i2c_priv_s *)dev; int ret = OK; - ASSERT(count); + DEBUGASSERT(count > 0); - if (count == 0 || msgs == NULL) + if (count <= 0 || msgs == NULL) { - return -1; + return -EINVAL; } /* Ensure that address or flags don't change meanwhile */ diff --git a/arch/arm/src/lc823450/lc823450_i2c.c b/arch/arm/src/lc823450/lc823450_i2c.c index 5b49856ee4b..7c4950fef40 100644 --- a/arch/arm/src/lc823450/lc823450_i2c.c +++ b/arch/arm/src/lc823450/lc823450_i2c.c @@ -967,8 +967,12 @@ static int lc823450_i2c_transfer(FAR struct i2c_master_s *dev, FAR struct i2c_msg_s *msgs, int count) { FAR struct lc823450_i2c_priv_s *priv = (struct lc823450_i2c_priv_s *)dev; + irqstate_t irqs; + int ret = 0; - if (!msgs || count == 0) + DEBUGASSERT(count > 0); + + if (count <= 0 || msgs == NULL) { i2cerr("ERROR: invalid param, %p %d\n", msgs, count); return -EINVAL; @@ -978,11 +982,6 @@ static int lc823450_i2c_transfer(FAR struct i2c_master_s *dev, lc823450_i2c_sem_wait(priv); - irqstate_t irqs; - int ret = 0; - - ASSERT(count); - priv->timedout = false; #ifdef CONFIG_I2C_RESET diff --git a/arch/arm/src/stm32/stm32_i2c.c b/arch/arm/src/stm32/stm32_i2c.c index 00f9139500a..684b4192e9b 100644 --- a/arch/arm/src/stm32/stm32_i2c.c +++ b/arch/arm/src/stm32/stm32_i2c.c @@ -1583,14 +1583,15 @@ static int stm32_i2c_transfer(FAR struct i2c_master_s *dev, FAR struct i2c_msg_s int count) { FAR struct stm32_i2c_priv_s *priv = (struct stm32_i2c_priv_s *)dev; - stm32_i2c_sem_wait(priv); /* Ensure that address or flags don't change meanwhile */ uint32_t status = 0; #ifdef I2C1_FSMC_CONFLICT uint32_t ahbenr; #endif int ret = 0; - ASSERT(count); + DEBUGASSERT(count > 0); + + stm32_i2c_sem_wait(priv); /* Ensure that address or flags don't change meanwhile */ #ifdef I2C1_FSMC_CONFLICT /* Disable FSMC that shares a pin with I2C1 (LBAR) */ diff --git a/arch/arm/src/stm32f7/stm32_i2c.c b/arch/arm/src/stm32f7/stm32_i2c.c index d7b599084d3..7f7b735cafc 100644 --- a/arch/arm/src/stm32f7/stm32_i2c.c +++ b/arch/arm/src/stm32f7/stm32_i2c.c @@ -2309,7 +2309,7 @@ static int stm32_i2c_process(FAR struct i2c_master_s *dev, FAR struct i2c_msg_s int errval = 0; int waitrc = 0; - ASSERT(count); + DEBUGASSERT(count > 0); /* Wait for any STOP in progress */ diff --git a/arch/arm/src/stm32l4/stm32l4_i2c.c b/arch/arm/src/stm32l4/stm32l4_i2c.c index cd334ef6487..19b09d34fa8 100644 --- a/arch/arm/src/stm32l4/stm32l4_i2c.c +++ b/arch/arm/src/stm32l4/stm32l4_i2c.c @@ -2459,7 +2459,7 @@ static int stm32l4_i2c_process(FAR struct i2c_master_s *dev, int errval = 0; int waitrc = 0; - ASSERT(count); + DEBUGASSERT(count > 0); /* Wait for any STOP in progress */ diff --git a/include/nuttx/i2c/i2c_master.h b/include/nuttx/i2c/i2c_master.h index da759de19ae..28647cf7bd8 100644 --- a/include/nuttx/i2c/i2c_master.h +++ b/include/nuttx/i2c/i2c_master.h @@ -112,7 +112,7 @@ * Description: * Perform a sequence of I2C transfers, each transfer is started with a * START and the final transfer is completed with a STOP. Each sequence - * will be an 'atomic' operation in the sense that any other I2C actions + * will be an 'atomic' operation in the sense that any other I2C actions * will be serialized and pend until this sequence of transfers completes. * * Input Parameters: @@ -121,7 +121,10 @@ * count - The number of transfers to perform * * Returned Value: - * The number of transfers completed + * Zero (OK) or positive on success; a negated errno value on failure. + * + * Note : some implementations of this interface return the number of + * transfers completed, but others return OK on success. * ****************************************************************************/