On 6/25/19 3:29 PM, Melin Tomas wrote: > 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.
Thanks. Just be careful to clamp the transfer length to 65535 bytes, otherwise you'll hit another overflow. > Signed-off-by: Tomas Melin <tomas.me...@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; > } > -- Best regards, Marek Vasut _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot