> From: Chris Brandt <[email protected]>
> Sent: 01 May 2026 14:22
> Subject: [PATCH v3] drm: renesas: rz-du: mipi_dsi: Fix return path on error
> 
> In case of error, we should unwind correctly.
> Switching to using dmam_ instead of dma_ and moving the code earlier fixes 
> the issue.
> 
> Fixes: 6f392f371650 ("drm: renesas: rz-du: Implement MIPI DSI host transfers")
> Suggested-by: Pavel Machek <[email protected]>
> Signed-off-by: Chris Brandt <[email protected]>
> Reviewed-by: Biju Das <[email protected]>


Applied to drm-misc-next. 

Thanks,
Biju


> 
> ---
> V2->V3:
>  - Removed Acked-by because it was for V1 (Hugo)
>  - Added Reviewed-by (Biju)
> 
> V1->V2:
>  - Need to take into account mipi_dsi_host_register was already called (Geert)
>  - Switch to using dmam_alloc_coherent to automate unwinding (Chris)
>  - Added Acked-by (hugo)
> ---
>  drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c | 12 +++++-------
>  1 file changed, 5 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c 
> b/drivers/gpu/drm/renesas/rz-
> du/rzg2l_mipi_dsi.c
> index 29f2b7d24fe5..b908e702b607 100644
> --- a/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c
> +++ b/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c
> @@ -1442,6 +1442,11 @@ static int rzg2l_mipi_dsi_probe(struct platform_device 
> *pdev)
>               return dev_err_probe(dsi->dev, PTR_ERR(dsi->prstc),
>                                    "failed to get prst\n");
> 
> +     dsi->dcs_buf_virt = dmam_alloc_coherent(dsi->dev, RZG2L_DCS_BUF_SIZE,
> +                                             &dsi->dcs_buf_phys, GFP_KERNEL);
> +     if (!dsi->dcs_buf_virt)
> +             return -ENOMEM;
> +
>       platform_set_drvdata(pdev, dsi);
> 
>       pm_runtime_enable(dsi->dev);
> @@ -1474,11 +1479,6 @@ static int rzg2l_mipi_dsi_probe(struct platform_device 
> *pdev)
>       if (ret < 0)
>               goto err_pm_disable;
> 
> -     dsi->dcs_buf_virt = dma_alloc_coherent(dsi->host.dev, 
> RZG2L_DCS_BUF_SIZE,
> -                                            &dsi->dcs_buf_phys, GFP_KERNEL);
> -     if (!dsi->dcs_buf_virt)
> -             return -ENOMEM;
> -
>       return 0;
> 
>  err_phy:
> @@ -1493,8 +1493,6 @@ static void rzg2l_mipi_dsi_remove(struct 
> platform_device *pdev)  {
>       struct rzg2l_mipi_dsi *dsi = platform_get_drvdata(pdev);
> 
> -     dma_free_coherent(dsi->host.dev, RZG2L_DCS_BUF_SIZE, dsi->dcs_buf_virt,
> -                       dsi->dcs_buf_phys);
>       mipi_dsi_host_unregister(&dsi->host);
>       pm_runtime_disable(&pdev->dev);
>  }
> --
> 2.52.0

Reply via email to