[PATCH 08/12] i3c: mipi-i3c-hci: Restart DMA ring correctly after dequeue abort

Frank Li Frank.li at nxp.com
Fri Feb 27 08:28:49 PST 2026


On Fri, Feb 27, 2026 at 04:11:45PM +0200, Adrian Hunter wrote:
> The DMA dequeue path attempts to restart the ring after aborting an
> in-flight transfer, but the current sequence is incomplete. The controller
> must be brought out of the aborted state and the ring control registers
> must be programmed in the correct order: first clearing ABORT, then
> re-enabling the ring and asserting RUN_STOP to resume operation.
>
> Add the missing controller resume step and update the ring control writes
> so that the ring is restarted using the proper sequence.
>
> Fixes: 9ad9a52cce282 ("i3c/master: introduce the mipi-i3c-hci driver")
> Cc: stable at vger.kernel.org
> Signed-off-by: Adrian Hunter <adrian.hunter at intel.com>
> ---
Reviewed-by: Frank Li <Frank.Li at nxp.com>
>  drivers/i3c/master/mipi-i3c-hci/dma.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/drivers/i3c/master/mipi-i3c-hci/dma.c b/drivers/i3c/master/mipi-i3c-hci/dma.c
> index a11d0743fb80..323c5ead82a5 100644
> --- a/drivers/i3c/master/mipi-i3c-hci/dma.c
> +++ b/drivers/i3c/master/mipi-i3c-hci/dma.c
> @@ -604,7 +604,9 @@ static bool hci_dma_dequeue_xfer(struct i3c_hci *hci,
>  	}
>
>  	/* restart the ring */
> +	mipi_i3c_hci_resume(hci);
>  	rh_reg_write(RING_CONTROL, RING_CTRL_ENABLE);
> +	rh_reg_write(RING_CONTROL, RING_CTRL_ENABLE | RING_CTRL_RUN_STOP);
>
>  	spin_unlock_irq(&rh->lock);
>
> --
> 2.51.0
>
>
> --
> linux-i3c mailing list
> linux-i3c at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-i3c



More information about the linux-i3c mailing list