]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
rockchip: i2c: move ACK comment where it applies
authorQuentin Schulz <quentin.schulz@cherry.de>
Fri, 7 Nov 2025 11:39:18 +0000 (12:39 +0100)
committerKever Yang <kever.yang@rock-chips.com>
Sat, 13 Dec 2025 16:02:10 +0000 (00:02 +0800)
The I2C_CON_LASTACK is kind of a misnomer as setting it means sending a
NACK as last byte acknowledge when the controller is in receive mode. It
should therefore be used only when there's no more data to transfer
after this.

Move the comment in the proper if block.

Sync the comment with the Linux kernel's while at it so it's more
explicit.

Fixes: 5deaa530280f ("rockchip: i2c: fix >32 byte reads")
Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
Reviewed-by: Heiko Schocher <hs@nabladev.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
drivers/i2c/rk_i2c.c

index fe09e75d3fb0026c6bc175fc00629d7371dacb88..3c44d0e65f518b69b7aceec972cb04979631c222 100644 (file)
@@ -195,13 +195,14 @@ static int rk_i2c_read(struct rk_i2c *i2c, uchar chip, uint reg, uint r_len,
 
        while (bytes_remain_len) {
                if (bytes_remain_len > RK_I2C_FIFO_SIZE) {
-                       con = I2C_CON_EN;
-                       bytes_xferred = 32;
-               } else {
                        /*
                         * The hw can read up to 32 bytes at a time. If we need
-                        * more than one chunk, send an ACK after the last byte.
+                        * more than one chunk, send an ACK after the last byte
+                        * of the current chunk.
                         */
+                       con = I2C_CON_EN;
+                       bytes_xferred = 32;
+               } else {
                        con = I2C_CON_EN | I2C_CON_LASTACK;
                        bytes_xferred = bytes_remain_len;
                }