[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAHb3i=txqvDpNXSRkke3SXZKCUAnapODGczO+GCJkQOKpgcTCA@mail.gmail.com>
Date: Sun, 8 Sep 2024 13:50:26 +0300
From: Tali Perry <tali.perry1@...il.com>
To: Tyrone Ting <warp5tw@...il.com>
Cc: avifishman70@...il.com, tmaimon77@...il.com, venture@...gle.com,
yuenn@...gle.com, benjaminfair@...gle.com, andi.shyti@...nel.org,
andriy.shevchenko@...ux.intel.com, wsa@...nel.org, rand.sec96@...il.com,
wsa+renesas@...g-engineering.com, tali.perry@...oton.com,
Avi.Fishman@...oton.com, tomer.maimon@...oton.com, KWLIU@...oton.com,
JJLIU0@...oton.com, kfting@...oton.com, openbmc@...ts.ozlabs.org,
linux-i2c@...r.kernel.org, linux-kernel@...r.kernel.org,
Charles Boyer <Charles.Boyer@...-usa.com>, Vivekanand Veeracholan <vveerach@...gle.com>
Subject: Re: [PATCH v2 7/7] i2c: npcm: Enable slave in eob interrupt
Reviewed-by: Tali Perry <tali.perry1@...il.com>
On Fri, Aug 30, 2024 at 6:49 AM Tyrone Ting <warp5tw@...il.com> wrote:
>
> From: Charles Boyer <Charles.Boyer@...-usa.com>
>
> Nuvoton slave enable was in user space API call master_xfer, so it is
> subject to delays from the OS scheduler. If the BMC is not enabled for
> slave mode in time for master to send response, then it will NAK the
> address match. Then the PLDM request timeout occurs.
>
> If the slave enable is moved to the EOB interrupt service routine, then
> the BMC can be ready in slave mode by the time it needs to receive a
> response.
>
> Signed-off-by: Charles Boyer <Charles.Boyer@...-usa.com>
> Signed-off-by: Vivekanand Veeracholan <vveerach@...gle.com>
> Signed-off-by: Tyrone Ting <kfting@...oton.com>
> ---
> drivers/i2c/busses/i2c-npcm7xx.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/drivers/i2c/busses/i2c-npcm7xx.c b/drivers/i2c/busses/i2c-npcm7xx.c
> index cac4ea0b69b8..5bdc1b5895ac 100644
> --- a/drivers/i2c/busses/i2c-npcm7xx.c
> +++ b/drivers/i2c/busses/i2c-npcm7xx.c
> @@ -1781,6 +1781,12 @@ static int npcm_i2c_int_master_handler(struct npcm_i2c *bus)
> (FIELD_GET(NPCM_I2CCST3_EO_BUSY,
> ioread8(bus->reg + NPCM_I2CCST3)))) {
> npcm_i2c_irq_handle_eob(bus);
> +#if IS_ENABLED(CONFIG_I2C_SLAVE)
> + /* reenable slave if it was enabled */
> + if (bus->slave)
> + iowrite8((bus->slave->addr & 0x7F) | NPCM_I2CADDR_SAEN,
> + bus->reg + NPCM_I2CADDR1);
> +#endif
> return 0;
> }
>
> --
> 2.34.1
>
Powered by blists - more mailing lists