From 4b3403cf5484c478319b5ba9f64e0e63e30698fa Mon Sep 17 00:00:00 2001 From: Iwona Winiarska Date: Thu, 31 Mar 2022 21:17:20 +0200 Subject: i3c: master: dw: Update read transfer length Currently, the read transfer length is not updated with the actual number of read bytes, which means that the caller won't have this information and won't be able to distinguish real data obtained during transfer. For every successful read transfer, update its length. Signed-off-by: Iwona Winiarska --- drivers/i3c/master/dw-i3c-master.c | 7 +++++++ 1 file changed, 7 insertions(+) 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; -- cgit v1.2.3