All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tomer Maimon <tmaimon77@gmail.com>
To: <openbmc@lists.ozlabs.org>
Cc: Tyrone Ting <kfting@nuvoton.com>,
	Andi Shyti <andi.shyti@kernel.org>, Joel Stanley <joel@jms.id.au>,
	Tali Perry <tali.perry1@gmail.com>
Subject: [PATCH linux dev-6.6 v1 3/8] i2c: npcm: correct the read/write operation procedure
Date: Mon, 3 Feb 2025 18:14:45 +0200	[thread overview]
Message-ID: <20250203161450.265480-4-tmaimon77@gmail.com> (raw)
In-Reply-To: <20250203161450.265480-1-tmaimon77@gmail.com>

From: Tyrone Ting <kfting@nuvoton.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.

In slave mode the XMIT bit can simply be used directly to set the state.
XMIT bit can be used as an indication to the current state of the state
machine during slave operation. (meaning XMIT = 1 during writing and
XMIT = 0 during reading).

In master operation XMIT is valid only if there are no bus errors.
For example: in a multi master where the same module is switching from
master to slave at runtime, and there are collisions, the XMIT bit
cannot be trusted.

However the maser already "knows" what the bus state is, so this bit
is not needed and the driver can just track what it is currently doing.

Signed-off-by: Tyrone Ting <kfting@nuvoton.com>
Reviewed-by: Tali Perry <tali.perry1@gmail.com>
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
---
 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 83a7b7577dcc..608dc14593e2 100644
--- a/drivers/i2c/busses/i2c-npcm7xx.c
+++ b/drivers/i2c/busses/i2c-npcm7xx.c
@@ -1629,13 +1629,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


  parent reply	other threads:[~2025-02-03 17:12 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-03 16:14 [PATCH linux dev-6.6 v1 0/8] i2c: npcm7xx: Various upstream modification Tomer Maimon
2025-02-03 16:14 ` [PATCH linux dev-6.6 v1 1/8] i2c: Remove redundant comparison in npcm_i2c_reg_slave Tomer Maimon
2025-02-03 16:14 ` [PATCH linux dev-6.6 v1 2/8] i2c: npcm: restore slave addresses array length Tomer Maimon
2025-02-03 16:14 ` Tomer Maimon [this message]
2025-02-03 16:14 ` [PATCH linux dev-6.6 v1 4/8] i2c: npcm: use a software flag to indicate a BER condition Tomer Maimon
2025-02-03 16:14 ` [PATCH linux dev-6.6 v1 5/8] i2c: npcm: Modify timeout evaluation mechanism Tomer Maimon
2025-02-03 16:14 ` [PATCH linux dev-6.6 v1 6/8] i2c: npcm: Assign client address earlier for `i2c_recover_bus()` Tomer Maimon
2025-02-03 16:14 ` [PATCH linux dev-6.6 v1 7/8] i2c: npcm: use i2c frequency table Tomer Maimon
2025-02-03 16:14 ` [PATCH linux dev-6.6 v1 8/8] i2c: npcm: Enable slave in eob interrupt Tomer Maimon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250203161450.265480-4-tmaimon77@gmail.com \
    --to=tmaimon77@gmail.com \
    --cc=andi.shyti@kernel.org \
    --cc=joel@jms.id.au \
    --cc=kfting@nuvoton.com \
    --cc=openbmc@lists.ozlabs.org \
    --cc=tali.perry1@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.