
Hi Conor,
On Wed, 2022-10-26 at 07:54 +0000, Conor Dooley - M52691 wrote: On 26/10/2022 08:49, Conor Dooley wrote:
A late ack is currently being sent at the end of a transfer due to incorrect logic in mchp_corei2c_empty_rx(). Currently the Assert Ack bit is being written to the controller's control reg after the last byte has been received, causing it to sent another byte with the ack. Instead, the AA flag should be written to the control register when the penultimate byte is read so it is sent out for the last byte.
Reported-by: Andreas Buerkler andreas.buerkler@enclustra.com Fixes: 0dc0d1e094 ("i2c: Add Microchip PolarFire SoC I2C driver") Fixes: 0190d48488 ("i2c: microchip: fix ack sending logic")
I had removed this fixes tag but I must have aborted the rebase in which I did. If nothing else needs changing, please drop it, otherwise I'll remove it if/when I send a v2.
Yes you can remove it because the patch check is showing warning for this fixes tag
Regards Padmarao
Thanks, Conor.
Signed-off-by: Conor Dooley conor.dooley@microchip.com
drivers/i2c/i2c-microchip.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/i2c/i2c-microchip.c b/drivers/i2c/i2c- microchip.c index 3a27459386..d82b80f535 100644 --- a/drivers/i2c/i2c-microchip.c +++ b/drivers/i2c/i2c-microchip.c @@ -224,7 +224,7 @@ static void mpfs_i2c_empty_rx(struct mpfs_i2c_bus *bus) bus->msg_len--; }
- if (bus->msg_len == 0) {
- if (bus->msg_len <= 1) { ctrl = readl(bus->base + MPFS_I2C_CTRL); ctrl &= ~CTRL_AA; writel(ctrl, bus->base + MPFS_I2C_CTRL);