mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-31 07:03:28 -04:00
i3c: renesas: Follow a unified pattern for transfer and command initialization
Follow a unified pattern for transfer and command initialization across the driver. This keeps the code cleaner and easier to follow. Also, in some cases the I3C device was enabled before the transfer data structure was even allocated. Reviewed-by: Frank Li <Frank.Li@nxp.com> Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com> Tested-by: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com> Link: https://patch.msgid.link/20260713130545.568657-12-claudiu.beznea+renesas@tuxon.dev Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
This commit is contained in:
committed by
Alexandre Belloni
parent
33b5ecc5a1
commit
234a26e6fe
@@ -663,6 +663,10 @@ static int renesas_i3c_daa(struct i3c_master_controller *m)
|
||||
if (!xfer)
|
||||
return -ENOMEM;
|
||||
|
||||
init_completion(&xfer->comp);
|
||||
cmd = xfer->cmds;
|
||||
cmd->rx_count = 0;
|
||||
|
||||
/* Enable I3C bus. */
|
||||
renesas_i3c_bus_enable(m, true);
|
||||
|
||||
@@ -684,10 +688,6 @@ static int renesas_i3c_daa(struct i3c_master_controller *m)
|
||||
renesas_writel(i3c->regs, DATBAS(pos), datbas_dvdyad_with_parity(ret));
|
||||
}
|
||||
|
||||
init_completion(&xfer->comp);
|
||||
cmd = xfer->cmds;
|
||||
cmd->rx_count = 0;
|
||||
|
||||
ret = renesas_i3c_get_free_pos(i3c);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
@@ -779,13 +779,13 @@ static int renesas_i3c_send_ccc_cmd(struct i3c_master_controller *m,
|
||||
if (!xfer)
|
||||
return -ENOMEM;
|
||||
|
||||
renesas_i3c_bus_enable(m, true);
|
||||
|
||||
init_completion(&xfer->comp);
|
||||
cmd = xfer->cmds;
|
||||
cmd->rnw = ccc->rnw;
|
||||
cmd->cmd0 = 0;
|
||||
|
||||
renesas_i3c_bus_enable(m, true);
|
||||
|
||||
/* Calculate the command descriptor. */
|
||||
switch (ccc->id) {
|
||||
case I3C_CCC_SETDASA:
|
||||
@@ -837,15 +837,15 @@ static int renesas_i3c_i3c_xfers(struct i3c_dev_desc *dev, struct i3c_xfer *i3c_
|
||||
struct renesas_i3c_i2c_dev_data *data = i3c_dev_get_master_data(dev);
|
||||
int i;
|
||||
|
||||
/* Enable I3C bus. */
|
||||
renesas_i3c_bus_enable(m, true);
|
||||
|
||||
struct renesas_i3c_xfer *xfer __free(kfree) = renesas_i3c_alloc_xfer(i3c, 1);
|
||||
if (!xfer)
|
||||
return -ENOMEM;
|
||||
|
||||
init_completion(&xfer->comp);
|
||||
|
||||
/* Enable I3C bus. */
|
||||
renesas_i3c_bus_enable(m, true);
|
||||
|
||||
for (i = 0; i < i3c_nxfers; i++) {
|
||||
struct renesas_i3c_cmd *cmd = xfer->cmds;
|
||||
|
||||
@@ -966,12 +966,12 @@ static int renesas_i3c_i2c_xfers(struct i2c_dev_desc *dev,
|
||||
if (!xfer)
|
||||
return -ENOMEM;
|
||||
|
||||
renesas_i3c_bus_enable(m, false);
|
||||
|
||||
init_completion(&xfer->comp);
|
||||
xfer->is_i2c_xfer = true;
|
||||
cmd = xfer->cmds;
|
||||
|
||||
renesas_i3c_bus_enable(m, false);
|
||||
|
||||
if (!(renesas_readl(i3c->regs, BCST) & BCST_BFREF)) {
|
||||
cmd->err = -EBUSY;
|
||||
return cmd->err;
|
||||
|
||||
Reference in New Issue
Block a user