mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-13 14:24:11 +08:00
i3c: master: cdns: Update maximum prescaler value for i2c clock
[ Upstream commit 374c13f908
]
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>
Link: https://lore.kernel.org/r/1703927483-28682-1-git-send-email-harshitshah.opendev@gmail.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
de3e9d8e8d
commit
aca8d25872
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user