imxrt:lpi2c end only on stop with end of packet

This commit is contained in:
David Sidrane
2023-10-23 08:14:40 -07:00
committed by Petro Karashchenko
parent 962d46186d
commit 119bf660a4
+9 -1
View File
@@ -1599,13 +1599,20 @@ static int imxrt_lpi2c_isr_process(struct imxrt_lpi2c_priv_s *priv)
LPI2C_MSR_FEF | LPI2C_MSR_EPF))); LPI2C_MSR_FEF | LPI2C_MSR_EPF)));
} }
/* Check for endof packet */ /* Check for endof packet or Stop */
if ((status & (LPI2C_MSR_EPF | LPI2C_MSR_SDF)) != 0) if ((status & (LPI2C_MSR_EPF | LPI2C_MSR_SDF)) != 0)
{ {
/* Reset either or both */
imxrt_lpi2c_putreg(priv, IMXRT_LPI2C_MSR_OFFSET, status & imxrt_lpi2c_putreg(priv, IMXRT_LPI2C_MSR_OFFSET, status &
(LPI2C_MSR_EPF | LPI2C_MSR_SDF)); (LPI2C_MSR_EPF | LPI2C_MSR_SDF));
/* Was it both End of packet and Stop */
if ((status & (LPI2C_MSR_EPF | LPI2C_MSR_SDF)) ==
(LPI2C_MSR_EPF | LPI2C_MSR_SDF))
{
#ifndef CONFIG_I2C_POLLED #ifndef CONFIG_I2C_POLLED
if (priv->intstate == INTSTATE_WAITING) if (priv->intstate == INTSTATE_WAITING)
{ {
@@ -1625,6 +1632,7 @@ static int imxrt_lpi2c_isr_process(struct imxrt_lpi2c_priv_s *priv)
priv->intstate = INTSTATE_DONE; priv->intstate = INTSTATE_DONE;
#endif #endif
} }
}
return OK; return OK;
} }