Re: [PATCH] i2c: designware: fix master is holding SCL low while ENABLE bit is disabled
From: Andy Shevchenko
Date: Thu Sep 05 2024 - 07:03:16 EST
On Thu, Sep 05, 2024 at 03:42:11PM +0800, kimriver liu wrote:
> From: "kimriver.liu" <kimriver.liu@xxxxxxxxxxxx>
You forgot bumping patch version in the Subject and now it's quite confusing.
> Failure in normal Stop operational path
Is this a subsection?
Make it more clear, by using additional formatting, like
Failure in normal Stop operational path
---------------------------------------
> This failure happens rarely and is hard to reproduce. Debug trace
> showed that IC_STATUS had value of 0x23 when STOP_DET occurred,
> immediately disable ENABLE bit that can result in
> IC_RAW_INTR_STAT.MASTER_ON_HOLD holding SCL low.
> Failure in ENABLE bit is disabled path
Ditto.
> It was observed that master is holding SCL low and the IC_ENABLE is
> already disabled, Enable ABORT bit and ENABLE bit simultaneously
> cannot take effect.
>
> Check if the master is holding SCL low after ENABLE bit is already
> disabled. If SCL is held low, The software can set this ABORT bit only
> when ENABLE is already set,otherwise,
> the controller ignores any write to ABORT bit. When the abort is done,
> then proceed with disabling the controller.
>
> These kernel logs show up whenever an I2C transaction is attempted
> after this failure.
> i2c_designware e95e0000.i2c: timeout in disabling adapter
> i2c_designware e95e0000.i2c: timeout waiting for bus ready
>
> The patch can be fix the controller cannot be disabled while SCL is
> held low in ENABLE bit is already disabled.
>
> Signed-off-by: kimriver.liu <kimriver.liu@xxxxxxxxxxxx>
> ---
Here is the place for comments and changelog.
Since it's not the first version of the patch, changelog is a must.
--
With Best Regards,
Andy Shevchenko