[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20240807100244.16872-2-kfting@nuvoton.com>
Date: Wed, 7 Aug 2024 18:02:38 +0800
From: warp5tw@...il.com
To: tali.perry@...oton.com,
Avi.Fishman@...oton.com,
tomer.maimon@...oton.com,
avifishman70@...il.com,
tmaimon77@...il.com,
tali.perry1@...il.com,
venture@...gle.com,
yuenn@...gle.com,
benjaminfair@...gle.com,
andi.shyti@...nel.org,
wsa+renesas@...g-engineering.com,
rand.sec96@...il.com,
kwliu@...oton.com,
jjliu0@...oton.com,
kfting@...oton.com,
warp5tw@...il.com
Cc: linux-i2c@...r.kernel.org,
linux-kernel@...r.kernel.org,
openbmc@...ts.ozlabs.org
Subject: [PATCH v1 1/7] i2c: npcm: correct the read/write operation procedure
From: Tyrone Ting <kfting@...oton.com>
Originally the driver uses the XMIT bit in SMBnST register to decide
the upcoming i2c transaction. If XMIT bit is 1, then it will be an i2c
write operation. If it's 0, then a read operation will be executed.
After checking the datasheet, the XMIT bit is valid when the i2c module
is acting in a slave role. Use the software status to control the i2c
transaction flow instead when the i2c module is acting in a master role.
Fixes: 48acf8292280 ("i2c: Remove redundant comparison in npcm_i2c_reg_slave")
Signed-off-by: Tyrone Ting <kfting@...oton.com>
---
drivers/i2c/busses/i2c-npcm7xx.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/drivers/i2c/busses/i2c-npcm7xx.c b/drivers/i2c/busses/i2c-npcm7xx.c
index 2fe68615942e..c8503acdaff8 100644
--- a/drivers/i2c/busses/i2c-npcm7xx.c
+++ b/drivers/i2c/busses/i2c-npcm7xx.c
@@ -1626,13 +1626,10 @@ static void npcm_i2c_irq_handle_sda(struct npcm_i2c *bus, u8 i2cst)
npcm_i2c_wr_byte(bus, bus->dest_addr | BIT(0));
/* SDA interrupt, after start\restart */
} else {
- if (NPCM_I2CST_XMIT & i2cst) {
- bus->operation = I2C_WRITE_OPER;
+ if (bus->operation == I2C_WRITE_OPER)
npcm_i2c_irq_master_handler_write(bus);
- } else {
- bus->operation = I2C_READ_OPER;
+ else if (bus->operation == I2C_READ_OPER)
npcm_i2c_irq_master_handler_read(bus);
- }
}
}
--
2.34.1
Powered by blists - more mailing lists