From c0fb4e34a7cc38ca8bd9dbf9874e5e86e7dbd69c Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Tue, 26 Jan 2016 10:23:09 -0600 Subject: [PATCH] I2C: Eliminate the I2C_WRITEREAD method --- arch/arm/src/efm32/efm32_i2c.c | 41 ------------- arch/arm/src/sam34/sam_twi.c | 76 +----------------------- arch/arm/src/sama5/sam_twi.c | 86 +--------------------------- arch/arm/src/samv7/sam_twihs.c | 86 +--------------------------- arch/arm/src/stm32/stm32_i2c.c | 45 --------------- arch/arm/src/stm32/stm32_i2c_alt.c | 45 --------------- arch/arm/src/stm32/stm32f30xxx_i2c.c | 44 -------------- arch/arm/src/tiva/tiva_i2c.c | 47 --------------- 8 files changed, 3 insertions(+), 467 deletions(-) diff --git a/arch/arm/src/efm32/efm32_i2c.c b/arch/arm/src/efm32/efm32_i2c.c index f8f1194141..2fabb6bb32 100644 --- a/arch/arm/src/efm32/efm32_i2c.c +++ b/arch/arm/src/efm32/efm32_i2c.c @@ -336,12 +336,6 @@ static int efm32_i2c_write(FAR struct i2c_dev_s *dev, const uint8_t * buffer, static int efm32_i2c_read(FAR struct i2c_dev_s *dev, uint8_t * buffer, int buflen); -#ifdef CONFIG_I2C_WRITEREAD -static int efm32_i2c_writeread(FAR struct i2c_dev_s *dev, - const uint8_t * wbuffer, int wbuflen, - uint8_t * buffer, int buflen); -#endif /* CONFIG_I2C_WRITEREAD */ - #ifdef CONFIG_I2C_TRANSFER static int efm32_i2c_transfer(FAR struct i2c_dev_s *dev, FAR struct i2c_msg_s *msgs, int count); @@ -421,9 +415,6 @@ static const struct i2c_ops_s efm32_i2c_ops = .setaddress = efm32_i2c_setaddress, .write = efm32_i2c_write, .read = efm32_i2c_read -#ifdef CONFIG_I2C_WRITEREAD - , .writeread = efm32_i2c_writeread -#endif #ifdef CONFIG_I2C_TRANSFER , .transfer = efm32_i2c_transfer #endif @@ -1703,38 +1694,6 @@ int efm32_i2c_read(FAR struct i2c_dev_s *dev, uint8_t * buffer, int buflen) return efm32_i2c_process(dev, &msgv, 1); } -/**************************************************************************** - * Name: efm32_i2c_writeread - * - * Description: - * Read then write I2C data - * - ****************************************************************************/ - -#ifdef CONFIG_I2C_WRITEREAD -static int efm32_i2c_writeread(FAR struct i2c_dev_s *dev, - const uint8_t * wbuffer, int wbuflen, - uint8_t * buffer, int buflen) -{ - struct i2c_msg_s msgv[2] = - { - { - .addr = ((struct efm32_i2c_inst_s *)dev)->address, - .flags = ((struct efm32_i2c_inst_s *)dev)->flags, - .buffer = (uint8_t *) wbuffer, /* This is really ugly, sorry const ... */ - .length = wbuflen}, - { - .addr = ((struct efm32_i2c_inst_s *)dev)->address, - .flags = ((struct efm32_i2c_inst_s *)dev)->flags | - ((buflen > 0) ? I2C_M_READ : I2C_M_NORESTART), - .buffer = buffer, - .length = (buflen > 0) ? buflen : -buflen} - }; - - return efm32_i2c_process(dev, msgv, 2); -} -#endif - /**************************************************************************** * Name: efm32_i2c_transfer * diff --git a/arch/arm/src/sam34/sam_twi.c b/arch/arm/src/sam34/sam_twi.c index 1d8c0461e8..bdfc5f55f8 100644 --- a/arch/arm/src/sam34/sam_twi.c +++ b/arch/arm/src/sam34/sam_twi.c @@ -1,7 +1,7 @@ /**************************************************************************** * arch/arm/src/sam34/sam_twi.c * - * Copyright (C) 2013, 2015 Gregory Nutt. All rights reserved. + * Copyright (C) 2013, 2015-2016 Gregory Nutt. All rights reserved. * Author: Gregory Nutt * * References: @@ -195,10 +195,6 @@ static int twi_setaddress(FAR struct i2c_dev_s *dev, int addr, int nbits); static int twi_write(FAR struct i2c_dev_s *dev, const uint8_t *buffer, int buflen); static int twi_read(FAR struct i2c_dev_s *dev, uint8_t *buffer, int buflen); -#ifdef CONFIG_I2C_WRITEREAD -static int twi_writeread(FAR struct i2c_dev_s *inst, const uint8_t *wbuffer, - int wbuflen, uint8_t *rbuffer, int rbuflen); -#endif #ifdef CONFIG_I2C_TRANSFER static int twi_transfer(FAR struct i2c_dev_s *dev, FAR struct i2c_msg_s *msgs, int count); @@ -234,9 +230,6 @@ struct i2c_ops_s g_twiops = .setaddress = twi_setaddress, .write = twi_write, .read = twi_read, -#ifdef CONFIG_I2C_WRITEREAD - .writeread = twi_writeread, -#endif #ifdef CONFIG_I2C_TRANSFER .transfer = twi_transfer #endif @@ -904,73 +897,6 @@ static int twi_read(FAR struct i2c_dev_s *dev, uint8_t *rbuffer, int rbuflen) return ret; } -/**************************************************************************** - * Name: twi_writeread - * - * Description: - * - ****************************************************************************/ - -#ifdef CONFIG_I2C_WRITEREAD -static int twi_writeread(FAR struct i2c_dev_s *dev, const uint8_t *wbuffer, - int wbuflen, uint8_t *rbuffer, int rbuflen) -{ - struct twi_dev_s *priv = (struct twi_dev_s *)dev; - irqstate_t flags; - int ret; - - struct i2c_msg_s msgv[2] = - { - { - .addr = priv->address, - .flags = priv->flags, - .buffer = (uint8_t *)wbuffer, /* Override const */ - .length = wbuflen - }, - { - .addr = priv->address, - .flags = priv->flags | ((rbuflen > 0) ? I2C_M_READ : I2C_M_NORESTART), - .buffer = rbuffer, - .length = (rbuflen < 0) ? -rbuflen : rbuflen - } - }; - - DEBUGASSERT(dev != NULL); - i2cvdbg("TWI%d wbuflen: %d rbuflen: %d\n", priv->twi, wbuflen, rbuflen); - - /* Get exclusive access to the device */ - - twi_takesem(&priv->exclsem); - - /* Initiate the read */ - - priv->msg = msgv; - priv->msgc = 2; - - /* Initiate the write operation. The rest will be handled from interrupt - * logic. Interrupts must be disabled to prevent re-entrance from the - * interrupt level. - */ - - flags = irqsave(); - twi_startwrite(priv, msgv); - - /* And wait for the write/read to complete. Interrupts will be re-enabled - * while we are waiting. - */ - - ret = twi_wait(priv); - if (ret < 0) - { - i2cdbg("ERROR: Transfer failed: %d\n", ret); - } - - irqrestore(flags); - twi_givesem(&priv->exclsem); - return ret; -} -#endif - /**************************************************************************** * Name: twi_setownaddress * diff --git a/arch/arm/src/sama5/sam_twi.c b/arch/arm/src/sama5/sam_twi.c index bdb3795ed0..9d066ee15f 100644 --- a/arch/arm/src/sama5/sam_twi.c +++ b/arch/arm/src/sama5/sam_twi.c @@ -1,7 +1,7 @@ /**************************************************************************** * arch/arm/src/sama5/sam_twi.c * - * Copyright (C) 2013-2014 Gregory Nutt. All rights reserved. + * Copyright (C) 2013-2014, 2016 Gregory Nutt. All rights reserved. * Author: Gregory Nutt * * References: @@ -242,10 +242,6 @@ static int twi_setaddress(FAR struct i2c_dev_s *dev, int addr, int nbits); static int twi_write(FAR struct i2c_dev_s *dev, const uint8_t *buffer, int buflen); static int twi_read(FAR struct i2c_dev_s *dev, uint8_t *buffer, int buflen); -#ifdef CONFIG_I2C_WRITEREAD -static int twi_writeread(FAR struct i2c_dev_s *inst, const uint8_t *wbuffer, - int wbuflen, uint8_t *rbuffer, int rbuflen); -#endif #ifdef CONFIG_I2C_TRANSFER static int twi_transfer(FAR struct i2c_dev_s *dev, FAR struct i2c_msg_s *msgs, int count); @@ -332,9 +328,6 @@ struct i2c_ops_s g_twiops = .setaddress = twi_setaddress, .write = twi_write, .read = twi_read, -#ifdef CONFIG_I2C_WRITEREAD - .writeread = twi_writeread, -#endif #ifdef CONFIG_I2C_TRANSFER .transfer = twi_transfer #endif @@ -1018,83 +1011,6 @@ static int twi_read(FAR struct i2c_dev_s *dev, uint8_t *rbuffer, int rbuflen) return ret; } -/**************************************************************************** - * Name: twi_writeread - * - * Description: - * - ****************************************************************************/ - -#ifdef CONFIG_I2C_WRITEREAD -static int twi_writeread(FAR struct i2c_dev_s *dev, const uint8_t *wbuffer, - int wbuflen, uint8_t *rbuffer, int rbuflen) -{ - struct twi_dev_s *priv = (struct twi_dev_s *)dev; - struct i2c_msg_s msgv[2]; - irqstate_t flags; - int ret; - - DEBUGASSERT(dev != NULL); - i2cvdbg("TWI%d wbuflen: %d rbuflen: %d\n", priv->attr->twi, wbuflen, rbuflen); - - /* Format two messages: The first is a write */ - - msgv[0].addr = priv->address; - msgv[0].flags = priv->flags; - msgv[0].buffer = (uint8_t *)wbuffer; /* Override const */ - msgv[0].length = wbuflen; - - /* The second is either a read (rbuflen > 0) or a write (rbuflen <= 0) with - * no restart. - */ - - if (rbuflen > 0) - { - msgv[1].flags = (priv->flags | I2C_M_READ); - } - else - { - msgv[1].flags = (priv->flags | I2C_M_NORESTART), - rbuflen = -rbuflen; - } - - msgv[1].addr = priv->address; - msgv[1].buffer = rbuffer; - msgv[1].length = rbuflen; - - /* Get exclusive access to the device */ - - twi_takesem(&priv->exclsem); - - /* Perform the write-read */ - - priv->msg = msgv; - priv->msgc = 2; - - /* Initiate the write operation. The rest will be handled from interrupt - * logic. Interrupts must be disabled to prevent re-entrance from the - * interrupt level. - */ - - flags = irqsave(); - twi_startwrite(priv, msgv); - - /* And wait for the write/read to complete. Interrupts will be re-enabled - * while we are waiting. - */ - - ret = twi_wait(priv, wbuflen + rbuflen); - if (ret < 0) - { - i2cdbg("ERROR: Transfer failed: %d\n", ret); - } - - irqrestore(flags); - twi_givesem(&priv->exclsem); - return ret; -} -#endif - /**************************************************************************** * Name: twi_setownaddress * diff --git a/arch/arm/src/samv7/sam_twihs.c b/arch/arm/src/samv7/sam_twihs.c index 83976f4705..b1b3dc476d 100644 --- a/arch/arm/src/samv7/sam_twihs.c +++ b/arch/arm/src/samv7/sam_twihs.c @@ -1,7 +1,7 @@ /**************************************************************************** * arch/arm/src/samv7/sam_twihs.c * - * Copyright (C) 2015 Gregory Nutt. All rights reserved. + * Copyright (C) 2015-2016 Gregory Nutt. All rights reserved. * Author: Gregory Nutt * * This driver derives from the SAMA5Dx TWIHS driver. References: @@ -237,10 +237,6 @@ static int twi_setaddress(FAR struct i2c_dev_s *dev, int addr, int nbits); static int twi_write(FAR struct i2c_dev_s *dev, const uint8_t *buffer, int buflen); static int twi_read(FAR struct i2c_dev_s *dev, uint8_t *buffer, int buflen); -#ifdef CONFIG_I2C_WRITEREAD -static int twi_writeread(FAR struct i2c_dev_s *inst, const uint8_t *wbuffer, - int wbuflen, uint8_t *rbuffer, int rbuflen); -#endif #ifdef CONFIG_I2C_TRANSFER static int twi_transfer(FAR struct i2c_dev_s *dev, FAR struct i2c_msg_s *msgs, int count); @@ -312,9 +308,6 @@ struct i2c_ops_s g_twiops = .setaddress = twi_setaddress, .write = twi_write, .read = twi_read, -#ifdef CONFIG_I2C_WRITEREAD - .writeread = twi_writeread, -#endif #ifdef CONFIG_I2C_TRANSFER .transfer = twi_transfer #endif @@ -1045,83 +1038,6 @@ static int twi_read(FAR struct i2c_dev_s *dev, uint8_t *rbuffer, int rbuflen) return ret; } -/**************************************************************************** - * Name: twi_writeread - * - * Description: - * - ****************************************************************************/ - -#ifdef CONFIG_I2C_WRITEREAD -static int twi_writeread(FAR struct i2c_dev_s *dev, const uint8_t *wbuffer, - int wbuflen, uint8_t *rbuffer, int rbuflen) -{ - struct twi_dev_s *priv = (struct twi_dev_s *)dev; - struct i2c_msg_s msgv[2]; - irqstate_t flags; - int ret; - - DEBUGASSERT(dev != NULL); - i2cvdbg("TWIHS%d wbuflen: %d rbuflen: %d\n", priv->attr->twi, wbuflen, rbuflen); - - /* Format two messages: The first is a write */ - - msgv[0].addr = priv->address; - msgv[0].flags = priv->flags; - msgv[0].buffer = (uint8_t *)wbuffer; /* Override const */ - msgv[0].length = wbuflen; - - /* The second is either a read (rbuflen > 0) or a write (rbuflen < 0) with - * no restart. - */ - - if (rbuflen > 0) - { - msgv[1].flags = (priv->flags | I2C_M_READ); - } - else - { - msgv[1].flags = (priv->flags | I2C_M_NORESTART); - rbuflen = -rbuflen; - } - - msgv[1].addr = priv->address; - msgv[1].buffer = rbuffer; - msgv[1].length = rbuflen; - - /* Get exclusive access to the device */ - - twi_takesem(&priv->exclsem); - - /* Initiate the read */ - - priv->msg = msgv; - priv->msgc = 2; - - /* Initiate the write operation. The rest will be handled from interrupt - * logic. Interrupts must be disabled to prevent re-entrance from the - * interrupt level. - */ - - flags = irqsave(); - twi_startwrite(priv, msgv); - - /* And wait for the write/read to complete. Interrupts will be re-enabled - * while we are waiting. - */ - - ret = twi_wait(priv, wbuflen + rbuflen); - if (ret < 0) - { - i2cdbg("ERROR: Transfer failed: %d\n", ret); - } - - irqrestore(flags); - twi_givesem(&priv->exclsem); - return ret; -} -#endif - /**************************************************************************** * Name: twi_setownaddress * diff --git a/arch/arm/src/stm32/stm32_i2c.c b/arch/arm/src/stm32/stm32_i2c.c index 67b483aa18..34bf9cdafb 100644 --- a/arch/arm/src/stm32/stm32_i2c.c +++ b/arch/arm/src/stm32/stm32_i2c.c @@ -357,12 +357,6 @@ static int stm32_i2c_write(FAR struct i2c_dev_s *dev, const uint8_t *buffer, int buflen); static int stm32_i2c_read(FAR struct i2c_dev_s *dev, uint8_t *buffer, int buflen); -#ifdef CONFIG_I2C_WRITEREAD -static int stm32_i2c_writeread(FAR struct i2c_dev_s *dev, - const uint8_t *wbuffer, int wbuflen, - uint8_t *buffer, int buflen); -#endif /* CONFIG_I2C_WRITEREAD */ - #ifdef CONFIG_I2C_TRANSFER static int stm32_i2c_transfer(FAR struct i2c_dev_s *dev, FAR struct i2c_msg_s *msgs, int count); @@ -488,9 +482,6 @@ static const struct i2c_ops_s stm32_i2c_ops = .setaddress = stm32_i2c_setaddress, .write = stm32_i2c_write, .read = stm32_i2c_read -#ifdef CONFIG_I2C_WRITEREAD - , .writeread = stm32_i2c_writeread -#endif #ifdef CONFIG_I2C_TRANSFER , .transfer = stm32_i2c_transfer #endif @@ -1913,42 +1904,6 @@ int stm32_i2c_read(FAR struct i2c_dev_s *dev, uint8_t *buffer, int buflen) return stm32_i2c_process(dev, &msgv, 1); } -/************************************************************************************ - * Name: stm32_i2c_writeread - * - * Description: - * Read then write I2C data - * - ************************************************************************************/ - -#ifdef CONFIG_I2C_WRITEREAD -static int stm32_i2c_writeread(FAR struct i2c_dev_s *dev, - const uint8_t *wbuffer, int wbuflen, - uint8_t *buffer, int buflen) -{ - stm32_i2c_sem_wait(dev); /* Ensure that address or flags don't change meanwhile */ - - struct i2c_msg_s msgv[2] = - { - { - .addr = ((struct stm32_i2c_inst_s *)dev)->address, - .flags = ((struct stm32_i2c_inst_s *)dev)->flags, - .buffer = (uint8_t *)wbuffer, /* This is really ugly, sorry const ... */ - .length = wbuflen - }, - { - .addr = ((struct stm32_i2c_inst_s *)dev)->address, - .flags = ((struct stm32_i2c_inst_s *)dev)->flags | - ((buflen > 0) ? I2C_M_READ : I2C_M_NORESTART), - .buffer = buffer, - .length = (buflen > 0) ? buflen : -buflen - } - }; - - return stm32_i2c_process(dev, msgv, 2); -} -#endif - /************************************************************************************ * Name: stm32_i2c_transfer * diff --git a/arch/arm/src/stm32/stm32_i2c_alt.c b/arch/arm/src/stm32/stm32_i2c_alt.c index d7ecd50389..731eb23681 100644 --- a/arch/arm/src/stm32/stm32_i2c_alt.c +++ b/arch/arm/src/stm32/stm32_i2c_alt.c @@ -386,12 +386,6 @@ static int stm32_i2c_write(FAR struct i2c_dev_s *dev, const uint8_t *buffer, int buflen); static int stm32_i2c_read(FAR struct i2c_dev_s *dev, uint8_t *buffer, int buflen); -#ifdef CONFIG_I2C_WRITEREAD -static int stm32_i2c_writeread(FAR struct i2c_dev_s *dev, - const uint8_t *wbuffer, int wbuflen, - uint8_t *buffer, int buflen); -#endif /* CONFIG_I2C_WRITEREAD */ - #ifdef CONFIG_I2C_TRANSFER static int stm32_i2c_transfer(FAR struct i2c_dev_s *dev, FAR struct i2c_msg_s *msgs, int count); @@ -496,9 +490,6 @@ static const struct i2c_ops_s stm32_i2c_ops = .setaddress = stm32_i2c_setaddress, .write = stm32_i2c_write, .read = stm32_i2c_read -#ifdef CONFIG_I2C_WRITEREAD - , .writeread = stm32_i2c_writeread -#endif #ifdef CONFIG_I2C_TRANSFER , .transfer = stm32_i2c_transfer #endif @@ -2357,42 +2348,6 @@ int stm32_i2c_read(FAR struct i2c_dev_s *dev, uint8_t *buffer, int buflen) return stm32_i2c_process(dev, &msgv, 1); } -/************************************************************************************ - * Name: stm32_i2c_writeread - * - * Description: - * Read then write I2C data - * - ************************************************************************************/ - -#ifdef CONFIG_I2C_WRITEREAD -static int stm32_i2c_writeread(FAR struct i2c_dev_s *dev, - const uint8_t *wbuffer, int wbuflen, - uint8_t *buffer, int buflen) -{ - stm32_i2c_sem_wait(dev); /* Ensure that address or flags don't change meanwhile */ - - struct i2c_msg_s msgv[2] = - { - { - .addr = ((struct stm32_i2c_inst_s *)dev)->address, - .flags = ((struct stm32_i2c_inst_s *)dev)->flags, - .buffer = (uint8_t *)wbuffer, /* This is really ugly, sorry const ... */ - .length = wbuflen - }, - { - .addr = ((struct stm32_i2c_inst_s *)dev)->address, - .flags = ((struct stm32_i2c_inst_s *)dev)->flags | - ((buflen > 0) ? I2C_M_READ : I2C_M_NORESTART), - .buffer = buffer, - .length = (buflen > 0) ? buflen : -buflen - } - }; - - return stm32_i2c_process(dev, msgv, 2); -} -#endif - /************************************************************************************ * Name: stm32_i2c_transfer * diff --git a/arch/arm/src/stm32/stm32f30xxx_i2c.c b/arch/arm/src/stm32/stm32f30xxx_i2c.c index 72dd5773d6..72ff6d6a32 100644 --- a/arch/arm/src/stm32/stm32f30xxx_i2c.c +++ b/arch/arm/src/stm32/stm32f30xxx_i2c.c @@ -342,11 +342,6 @@ static int stm32_i2c_process(FAR struct i2c_dev_s *dev, FAR struct i2c_msg_s *ms static int stm32_i2c_write(FAR struct i2c_dev_s *dev, const uint8_t *buffer, int buflen); static int stm32_i2c_read(FAR struct i2c_dev_s *dev, uint8_t *buffer, int buflen); -#ifdef CONFIG_I2C_WRITEREAD -static int stm32_i2c_writeread(FAR struct i2c_dev_s *dev, - const uint8_t *wbuffer, int wbuflen, - uint8_t *buffer, int buflen); -#endif #ifdef CONFIG_I2C_TRANSFER static int stm32_i2c_transfer(FAR struct i2c_dev_s *dev, FAR struct i2c_msg_s *msgs, int count); @@ -451,9 +446,6 @@ struct i2c_ops_s stm32_i2c_ops = .setaddress = stm32_i2c_setaddress, .write = stm32_i2c_write, .read = stm32_i2c_read -#ifdef CONFIG_I2C_WRITEREAD - , .writeread = stm32_i2c_writeread -#endif #ifdef CONFIG_I2C_TRANSFER , .transfer = stm32_i2c_transfer #endif @@ -1912,42 +1904,6 @@ int stm32_i2c_read(FAR struct i2c_dev_s *dev, uint8_t *buffer, int buflen) return stm32_i2c_process(dev, &msgv, 1); } -/************************************************************************************ - * Name: stm32_i2c_writeread - * - * Description: - * Read then write I2C data - * - ************************************************************************************/ - -#ifdef CONFIG_I2C_WRITEREAD -static int stm32_i2c_writeread(FAR struct i2c_dev_s *dev, - const uint8_t *wbuffer, int wbuflen, - uint8_t *buffer, int buflen) -{ - stm32_i2c_sem_wait(dev); /* ensure that address or flags don't change meanwhile */ - - struct i2c_msg_s msgv[2] = - { - { - .addr = ((struct stm32_i2c_inst_s *)dev)->address, - .flags = ((struct stm32_i2c_inst_s *)dev)->flags, - .buffer = (uint8_t *)wbuffer, /* this is really ugly, sorry const ... */ - .length = wbuflen - }, - { - .addr = ((struct stm32_i2c_inst_s *)dev)->address, - .flags = ((struct stm32_i2c_inst_s *)dev)->flags | - ((buflen > 0) ? I2C_M_READ : I2C_M_NORESTART), - .buffer = buffer, - .length = (buflen > 0) ? buflen : -buflen - } - }; - - return stm32_i2c_process(dev, msgv, 2); -} -#endif - /************************************************************************************ * Name: stm32_i2c_transfer * diff --git a/arch/arm/src/tiva/tiva_i2c.c b/arch/arm/src/tiva/tiva_i2c.c index d9cfd7232c..5238f63bd1 100644 --- a/arch/arm/src/tiva/tiva_i2c.c +++ b/arch/arm/src/tiva/tiva_i2c.c @@ -349,12 +349,6 @@ static int tiva_i2c_write(struct i2c_dev_s *dev, const uint8_t *buffer, int buflen); static int tiva_i2c_read(struct i2c_dev_s *dev, uint8_t *buffer, int buflen); -#ifdef CONFIG_I2C_WRITEREAD -static int tiva_i2c_writeread(struct i2c_dev_s *dev, - const uint8_t *wbuffer, int wbuflen, - uint8_t *buffer, int buflen); -#endif /* CONFIG_I2C_WRITEREAD */ - #ifdef CONFIG_I2C_TRANSFER static int tiva_i2c_transfer(struct i2c_dev_s *dev, struct i2c_msg_s *msgv, int msgc); @@ -592,9 +586,6 @@ static const struct i2c_ops_s tiva_i2c_ops = .setaddress = tiva_i2c_setaddress, .write = tiva_i2c_write, .read = tiva_i2c_read -#ifdef CONFIG_I2C_WRITEREAD - , .writeread = tiva_i2c_writeread -#endif #ifdef CONFIG_I2C_TRANSFER , .transfer = tiva_i2c_transfer #endif @@ -2141,44 +2132,6 @@ int tiva_i2c_read(struct i2c_dev_s *dev, uint8_t *buffer, int buflen) return tiva_i2c_process(dev, &msgv, 1); } -/************************************************************************************ - * Name: tiva_i2c_writeread - * - * Description: - * Read then write I2C data - * - ************************************************************************************/ - -#ifdef CONFIG_I2C_WRITEREAD -static int tiva_i2c_writeread(struct i2c_dev_s *dev, - const uint8_t *wbuffer, int wbuflen, - uint8_t *buffer, int buflen) -{ - struct tiva_i2c_inst_s *inst = (struct tiva_i2c_inst_s *)dev; - struct i2c_msg_s msgv[2] = - { - { - .addr = inst->address, - .flags = inst->flags, - .buffer = (uint8_t *)wbuffer, /* This is really ugly, sorry const ... */ - .length = wbuflen - }, - { - .addr = inst->address, - .flags = inst->flags | ((buflen > 0) ? I2C_M_READ : I2C_M_NORESTART), - .buffer = buffer, - .length = (buflen > 0) ? buflen : -buflen - } - }; - - DEBUGASSERT(inst && inst->priv && inst->priv->config); - i2cvdbg("I2C%d: wbuflen=%d buflen=%d\n", inst->priv->config->devno, wbuflen, buflen); - - tiva_i2c_sem_wait(dev); /* Ensure that address or flags don't change meanwhile */ - return tiva_i2c_process(dev, msgv, 2); -} -#endif - /************************************************************************************ * Name: tiva_i2c_transfer *