[U-Boot] [PATCH v2 1/2] xilinx_xiic: Fix fill tx fifo loop

Melin Tomas tomas.melin at vaisala.com
Tue Jun 25 13:29:53 UTC 2019


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.

Signed-off-by: Tomas Melin <tomas.melin at vaisala.com>
---

Changes in v2:
- Added reasoning to commit message

 drivers/i2c/xilinx_xiic.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/i2c/xilinx_xiic.c b/drivers/i2c/xilinx_xiic.c
index 83114ed510..e4ca0ab936 100644
--- a/drivers/i2c/xilinx_xiic.c
+++ b/drivers/i2c/xilinx_xiic.c
@@ -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;
 		}
-- 
2.17.2



More information about the U-Boot mailing list