Tested on Centriq 2400

Reviewed-by: Austin Christ <austi...@codeaurora.org>

On 2/3/2018 12:58 AM, Abhishek Sahu wrote:
According to I2c specification, “If a master-receiver sends a
repeated START condition, it sends a not-acknowledge (A) just
before the repeated START condition”. QUP v2 supports sending
of NACK without stop with QUP_TAG_V2_DATARD_NACK so added the
same.

Signed-off-by: Abhishek Sahu <abs...@codeaurora.org>
---
  drivers/i2c/busses/i2c-qup.c | 5 ++++-
  1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/i2c/busses/i2c-qup.c b/drivers/i2c/busses/i2c-qup.c
index ba717bb..edea3b9 100644
--- a/drivers/i2c/busses/i2c-qup.c
+++ b/drivers/i2c/busses/i2c-qup.c
@@ -113,6 +113,7 @@
  #define QUP_TAG_V2_DATAWR              0x82
  #define QUP_TAG_V2_DATAWR_STOP         0x83
  #define QUP_TAG_V2_DATARD              0x85
+#define QUP_TAG_V2_DATARD_NACK         0x86
  #define QUP_TAG_V2_DATARD_STOP         0x87
/* Status, Error flags */
@@ -609,7 +610,9 @@ static int qup_i2c_set_tags(u8 *tags, struct qup_i2c_dev 
*qup,
                        tags[len++] = QUP_TAG_V2_DATAWR_STOP;
        } else {
                if (msg->flags & I2C_M_RD)
-                       tags[len++] = QUP_TAG_V2_DATARD;
+                       tags[len++] = qup->blk.pos == (qup->blk.count - 1) ?
+                                     QUP_TAG_V2_DATARD_NACK :
+                                     QUP_TAG_V2_DATARD;
                else
                        tags[len++] = QUP_TAG_V2_DATAWR;
        }


--
Qualcomm Datacenter Technologies as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the
Code Aurora Forum, a Linux Foundation Collaborative Project.

Reply via email to