i2c: npcm7xx: Allow 255 byte block SMBus transfers
authorMatt Johnston <matt@codeconstruct.com.au>
Mon, 15 Nov 2021 02:49:24 +0000 (10:49 +0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 15 Nov 2021 14:11:24 +0000 (14:11 +0000)
255 byte support has been tested on a npcm750 board

Signed-off-by: Matt Johnston <matt@codeconstruct.com.au>
Reviewed-by: Tali Perry <tali.perry1@gmail.com>
Reviewed-by: Patrick Venture <venture@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/i2c/busses/i2c-npcm7xx.c

index 2ad1663..6d60f65 100644 (file)
@@ -1399,7 +1399,7 @@ static void npcm_i2c_irq_master_handler_read(struct npcm_i2c *bus)
                if (bus->read_block_use) {
                        /* first byte in block protocol is the size: */
                        data = npcm_i2c_rd_byte(bus);
-                       data = clamp_val(data, 1, I2C_SMBUS_BLOCK_MAX);
+                       data = clamp_val(data, 1, I2C_SMBUS_V3_BLOCK_MAX);
                        bus->rd_size = data + block_extra_bytes_size;
                        bus->rd_buf[bus->rd_ind++] = data;
 
@@ -2187,6 +2187,7 @@ static u32 npcm_i2c_functionality(struct i2c_adapter *adap)
               I2C_FUNC_SMBUS_EMUL |
               I2C_FUNC_SMBUS_BLOCK_DATA |
               I2C_FUNC_SMBUS_PEC |
+              I2C_FUNC_SMBUS_V3_BLOCK |
               I2C_FUNC_SLAVE;
 }