From: Jonas Jelonek <jelonek.jonas@gmail.com>
To: Chris Packham <chris.packham@alliedtelesis.co.nz>,
Andi Shyti <andi.shyti@kernel.org>, Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>
Cc: linux-i2c@vger.kernel.org, Conor Dooley <conor+dt@kernel.org>,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
Markus Stockhausen <markus.stockhausen@gmx.de>,
Sven Eckelmann <sven@narfation.org>,
Harshal Gohel <hg@simonwunderlich.de>,
Wolfram Sang <wsa+renesas@sang-engineering.com>,
Jonas Jelonek <jelonek.jonas@gmail.com>
Subject: [PATCH v7 08/12] i2c: rtl9300: do not set read mode on every transfer
Date: Sun, 31 Aug 2025 10:04:53 +0000 [thread overview]
Message-ID: <20250831100457.3114-9-jelonek.jonas@gmail.com> (raw)
In-Reply-To: <20250831100457.3114-1-jelonek.jonas@gmail.com>
Move the operation to set the read mode from config_xfer to probe.
The I2C controller of RTL9300 and RTL9310 support a legacy message mode
for READs with 'Read Address Data' instead of the standard format 'Write
Address ; Read Data'. There is no way to pass that via smbus_xfer, thus
there is no point in supported this in the driver and moreover no point
in setting this on every transaction. Setting this once in the probe
call is sufficient.
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Tested-by: Sven Eckelmann <sven@narfation.org>
Reviewed-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
Tested-by: Chris Packham <chris.packham@alliedtelesis.co.nz> # On RTL9302C based board
Tested-by: Markus Stockhausen <markus.stockhausen@gmx.de>
---
drivers/i2c/busses/i2c-rtl9300.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/drivers/i2c/busses/i2c-rtl9300.c b/drivers/i2c/busses/i2c-rtl9300.c
index 4177cfb77094..9e3517b09b3d 100644
--- a/drivers/i2c/busses/i2c-rtl9300.c
+++ b/drivers/i2c/busses/i2c-rtl9300.c
@@ -130,11 +130,7 @@ static int rtl9300_i2c_config_xfer(struct rtl9300_i2c *i2c, struct rtl9300_i2c_c
if (ret)
return ret;
- ret = regmap_field_write(i2c->fields[F_DATA_WIDTH], (len - 1) & 0xf);
- if (ret)
- return ret;
-
- return regmap_field_write(i2c->fields[F_RD_MODE], 0);
+ return regmap_field_write(i2c->fields[F_DATA_WIDTH], (len - 1) & 0xf);
}
static int rtl9300_i2c_read(struct rtl9300_i2c *i2c, u8 *buf, int len)
@@ -455,6 +451,11 @@ static int rtl9300_i2c_probe(struct platform_device *pdev)
}
i2c->sda_num = 0xff;
+ /* only use standard read format */
+ ret = regmap_field_write(i2c->fields[F_RD_MODE], 0);
+ if (ret)
+ return ret;
+
return 0;
}
--
2.48.1
next prev parent reply other threads:[~2025-08-31 10:05 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-31 10:04 [PATCH v7 00/12] i2c: fix, rework and extend RTL9300 I2C driver Jonas Jelonek
2025-08-31 10:04 ` [PATCH v7 01/12] i2c: rtl9300: fix channel number bound check Jonas Jelonek
2025-08-31 10:04 ` [PATCH v7 02/12] i2c: rtl9300: ensure data length is within supported range Jonas Jelonek
2025-08-31 10:04 ` [PATCH v7 03/12] i2c: rtl9300: remove broken SMBus Quick operation support Jonas Jelonek
2025-09-03 22:59 ` Andi Shyti
2025-09-05 10:12 ` Jonas Jelonek
2025-08-31 10:04 ` [PATCH v7 04/12] i2c: rtl9300: use regmap fields and API for registers Jonas Jelonek
2025-08-31 10:04 ` [PATCH v7 05/12] dt-bindings: i2c: realtek,rtl9301-i2c: fix wording and typos Jonas Jelonek
2025-08-31 10:04 ` [PATCH v7 06/12] i2c: rtl9300: rename internal sda_pin to sda_num Jonas Jelonek
2025-08-31 10:04 ` [PATCH v7 07/12] i2c: rtl9300: move setting SCL frequency to config_io Jonas Jelonek
2025-08-31 10:04 ` Jonas Jelonek [this message]
2025-08-31 10:04 ` [PATCH v7 09/12] i2c: rtl9300: separate xfer configuration and execution Jonas Jelonek
2025-08-31 10:04 ` [PATCH v7 10/12] i2c: rtl9300: use scoped guard instead of explicit lock/unlock Jonas Jelonek
2025-08-31 10:04 ` [PATCH v7 11/12] dt-bindings: i2c: realtek,rtl9301-i2c: extend for RTL9310 support Jonas Jelonek
2025-08-31 10:04 ` [PATCH v7 12/12] i2c: rtl9300: add support for RTL9310 I2C controller Jonas Jelonek
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=20250831100457.3114-9-jelonek.jonas@gmail.com \
--to=jelonek.jonas@gmail.com \
--cc=andi.shyti@kernel.org \
--cc=chris.packham@alliedtelesis.co.nz \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=hg@simonwunderlich.de \
--cc=krzk+dt@kernel.org \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=markus.stockhausen@gmx.de \
--cc=robh@kernel.org \
--cc=sven@narfation.org \
--cc=wsa+renesas@sang-engineering.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).