Hi Wolfram and Corey, On Wed, Feb 21, 2024 at 08:27:13PM +0100, Wolfram Sang wrote: > From: Corey Minyard <minyard@xxxxxxx> > > When being a target, NAK from the controller means that all bytes have > been transferred. So, the last byte needs also to be marked as > 'processed'. Otherwise index registers of backends may not increase. > > Signed-off-by: Corey Minyard <minyard@xxxxxxx> > Tested-by: Andrew Manley <andrew.manley@xxxxxxxxxxxxxxx> > Reviewed-by: Andrew Manley <andrew.manley@xxxxxxxxxxxxxxx> > Reviewed-by: Oleksij Rempel <o.rempel@xxxxxxxxxxxxxx> > [wsa: fixed comment and commit message to properly describe the case] > Signed-off-by: Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx> is this a fix? Andi > --- > > Changes since v2: > * updated commit message and comment > > In the stalled discussion[1], it seems I couldn't make my suggestions > clear. So, here are the changes how I meant them. I hope this can be > agreed on. > > [1] http://patchwork.ozlabs.org/project/linux-i2c/patch/20211112133956.655179-3-minyard@xxxxxxx/ > > drivers/i2c/busses/i2c-imx.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c > index 88a053987403..60e813137f84 100644 > --- a/drivers/i2c/busses/i2c-imx.c > +++ b/drivers/i2c/busses/i2c-imx.c > @@ -803,6 +803,11 @@ static irqreturn_t i2c_imx_slave_handle(struct imx_i2c_struct *i2c_imx, > ctl &= ~I2CR_MTX; > imx_i2c_write_reg(ctl, i2c_imx, IMX_I2C_I2CR); > imx_i2c_read_reg(i2c_imx, IMX_I2C_I2DR); > + > + /* flag the last byte as processed */ > + i2c_imx_slave_event(i2c_imx, > + I2C_SLAVE_READ_PROCESSED, &value); > + > i2c_imx_slave_finish_op(i2c_imx); > return IRQ_HANDLED; > } > -- > 2.43.0 >