| From 8b56f98b28e6238bcfe00de743b4361d26a7f980 Mon Sep 17 00:00:00 2001 | 
 | From: Charles Boyer <Charles.Boyer@fii-usa.com> | 
 | Date: Thu, 19 Dec 2024 17:08:59 +0800 | 
 | Subject: [PATCH 6/6] i2c: npcm: Enable slave in eob interrupt | 
 |  | 
 | 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. | 
 |  | 
 | Upstream-Status: Accepted | 
 | Signed-off-by: Charles Boyer <Charles.Boyer@fii-usa.com> | 
 | Signed-off-by: Vivekanand Veeracholan <vveerach@google.com> | 
 | Signed-off-by: Tyrone Ting <kfting@nuvoton.com> | 
 | Reviewed-by: Tali Perry <tali.perry1@gmail.com> | 
 | Link: https://lore.kernel.org/r/20241219090859.18722-5-kfting@nuvoton.com | 
 | Signed-off-by: Andi Shyti <andi.shyti@kernel.org> | 
 | --- | 
 |  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 1aae1a8a8055..3ca08b8ef8af 100644 | 
 | --- a/drivers/i2c/busses/i2c-npcm7xx.c | 
 | +++ b/drivers/i2c/busses/i2c-npcm7xx.c | 
 | @@ -1925,6 +1925,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 | NPCM_I2CADDR_SAEN, | 
 | +				 bus->reg + NPCM_I2CADDR1); | 
 | +#endif | 
 |  		return 0; | 
 |  	} | 
 |   | 
 | --  | 
 | 2.48.1.502.g6dc24dfdaf-goog | 
 |  |