Skip to content

Commit 66b32e3

Browse files
jk-ozlabsalexandrebelloni
authored andcommitted
i3c: dw: use bus mode rather than device reg for conditional tCAS setting
In the clock setup path, we set the hardware DEV_CTRL_I2C_SLAVE_PRESENT bit on a shared mode bus, then read-back this bit for the conditional tCAS set. Instead, just use the bus->mode setting for the conditional test. While we're at it, add a little comment about why the conditional is there. Signed-off-by: Jeremy Kerr <jk@codeconstruct.com.au> Link: https://lore.kernel.org/r/92a933566f7846708a00ad7f5a16ee8e6ed32d0e.1680156630.git.jk@codeconstruct.com.au Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
1 parent 67df5ce commit 66b32e3

1 file changed

Lines changed: 5 additions & 1 deletion

File tree

drivers/i3c/master/dw-i3c-master.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -538,7 +538,11 @@ static int dw_i3c_clk_cfg(struct dw_i3c_master *master)
538538
scl_timing = SCL_I3C_TIMING_HCNT(hcnt) | SCL_I3C_TIMING_LCNT(lcnt);
539539
writel(scl_timing, master->regs + SCL_I3C_PP_TIMING);
540540

541-
if (!(readl(master->regs + DEVICE_CTRL) & DEV_CTRL_I2C_SLAVE_PRESENT))
541+
/*
542+
* In pure i3c mode, MST_FREE represents tCAS. In shared mode, this
543+
* will be set up by dw_i2c_clk_cfg as tLOW.
544+
*/
545+
if (master->base.bus.mode == I3C_BUS_MODE_PURE)
542546
writel(BUS_I3C_MST_FREE(lcnt), master->regs + BUS_FREE_TIMING);
543547

544548
lcnt = max_t(u8,

0 commit comments

Comments
 (0)