xilinx_xiic: Fix fill tx fifo loop
authorMelin Tomas <tomas.melin@vaisala.com>
Fri, 28 Jun 2019 12:08:31 +0000 (12:08 +0000)
committerHeiko Schocher <hs@denx.de>
Tue, 9 Jul 2019 05:02:11 +0000 (07:02 +0200)
Comparison should be against the actual message length, not loop index.

len is used for stopping while loop, pos is position in message.
stop should be sent when entire message is sent, not when
len and pos meet.

hs: fixed DOS line endings

Signed-off-by: Tomas Melin <tomas.melin@vaisala.com>
drivers/i2c/xilinx_xiic.c

index 83114ed..e4ca0ab 100644 (file)
@@ -149,7 +149,7 @@ static void xiic_fill_tx_fifo(struct xilinx_xiic_priv *priv,
        while (len--) {
                u16 data = msg->buf[pos++];
 
-               if (pos == len && nmsgs == 1) {
+               if ((msg->len - pos == 0) && nmsgs == 1) {
                        /* last message in transfer -> STOP */
                        data |= XIIC_TX_DYN_STOP_MASK;
                }