mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] i3c: master: cdns: Update maximum prescaler value for i2c clock
@ 2023-12-30  9:11 Harshit Shah
  2024-01-08  0:04 ` Alexandre Belloni
  0 siblings, 1 reply; 2+ messages in thread
From: Harshit Shah @ 2023-12-30  9:11 UTC (permalink / raw)
  To: pgaj, alexandre.belloni; +Cc: linux-i3c, linux-kernel, Harshit Shah

As per the Cadence IP document fixed the I2C clock divider value limit from
16 bits instead of 10 bits. Without this change setting up the I2C clock to
low frequencies will not work as the prescaler value might be greater than
10 bit number.

I3C clock divider value is 10 bits only. Updating the macro names for both.

Signed-off-by: Harshit Shah <harshitshah.opendev@gmail.com>
---
 drivers/i3c/master/i3c-master-cdns.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/i3c/master/i3c-master-cdns.c b/drivers/i3c/master/i3c-master-cdns.c
index bcbe8f9..c1627f3 100644
--- a/drivers/i3c/master/i3c-master-cdns.c
+++ b/drivers/i3c/master/i3c-master-cdns.c
@@ -76,7 +76,8 @@
 #define PRESCL_CTRL0			0x14
 #define PRESCL_CTRL0_I2C(x)		((x) << 16)
 #define PRESCL_CTRL0_I3C(x)		(x)
-#define PRESCL_CTRL0_MAX		GENMASK(9, 0)
+#define PRESCL_CTRL0_I3C_MAX		GENMASK(9, 0)
+#define PRESCL_CTRL0_I2C_MAX		GENMASK(15, 0)
 
 #define PRESCL_CTRL1			0x18
 #define PRESCL_CTRL1_PP_LOW_MASK	GENMASK(15, 8)
@@ -1233,7 +1234,7 @@ static int cdns_i3c_master_bus_init(struct i3c_master_controller *m)
 		return -EINVAL;
 
 	pres = DIV_ROUND_UP(sysclk_rate, (bus->scl_rate.i3c * 4)) - 1;
-	if (pres > PRESCL_CTRL0_MAX)
+	if (pres > PRESCL_CTRL0_I3C_MAX)
 		return -ERANGE;
 
 	bus->scl_rate.i3c = sysclk_rate / ((pres + 1) * 4);
@@ -1246,7 +1247,7 @@ static int cdns_i3c_master_bus_init(struct i3c_master_controller *m)
 	max_i2cfreq = bus->scl_rate.i2c;
 
 	pres = (sysclk_rate / (max_i2cfreq * 5)) - 1;
-	if (pres > PRESCL_CTRL0_MAX)
+	if (pres > PRESCL_CTRL0_I2C_MAX)
 		return -ERANGE;
 
 	bus->scl_rate.i2c = sysclk_rate / ((pres + 1) * 5);
-- 
1.9.1


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] i3c: master: cdns: Update maximum prescaler value for i2c clock
  2023-12-30  9:11 [PATCH] i3c: master: cdns: Update maximum prescaler value for i2c clock Harshit Shah
@ 2024-01-08  0:04 ` Alexandre Belloni
  0 siblings, 0 replies; 2+ messages in thread
From: Alexandre Belloni @ 2024-01-08  0:04 UTC (permalink / raw)
  To: pgaj, Harshit Shah; +Cc: linux-i3c, linux-kernel


On Sat, 30 Dec 2023 14:41:23 +0530, Harshit Shah wrote:
> As per the Cadence IP document fixed the I2C clock divider value limit from
> 16 bits instead of 10 bits. Without this change setting up the I2C clock to
> low frequencies will not work as the prescaler value might be greater than
> 10 bit number.
> 
> I3C clock divider value is 10 bits only. Updating the macro names for both.
> 
> [...]

Applied, thanks!

[1/1] i3c: master: cdns: Update maximum prescaler value for i2c clock
      commit: 374c13f9080a1b9835a5ed3e7bea93cf8e2dc262

Best regards,

-- 
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2024-01-08  0:04 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-12-30  9:11 [PATCH] i3c: master: cdns: Update maximum prescaler value for i2c clock Harshit Shah
2024-01-08  0:04 ` Alexandre Belloni

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®