[PATCH v1 2/2] i2c: microchip: fix erroneous late ack send

Padmarao.Begari at microchip.com Padmarao.Begari at microchip.com
Fri Oct 28 06:58:31 CEST 2022


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 at 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 at 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);


More information about the U-Boot mailing list