summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/i3c/master/dw-i3c-master.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/i3c/master/dw-i3c-master.c b/drivers/i3c/master/dw-i3c-master.c
index ce21b62e5be6..bda7c5e5972c 100644
--- a/drivers/i3c/master/dw-i3c-master.c
+++ b/drivers/i3c/master/dw-i3c-master.c
@@ -1494,6 +1494,13 @@ static int dw_i3c_master_priv_xfers(struct i3c_dev_desc *dev,
dw_i3c_master_dequeue_xfer(master, xfer);
ret = xfer->ret;
+ if (ret)
+ goto out;
+
+ for (i = 0; i < i3c_nxfers; i++)
+ if (i3c_xfers[i].rnw)
+ i3c_xfers[i].len = xfer->cmds[i].rx_len;
+out:
dw_i3c_master_free_xfer(xfer);
return ret;