]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm: renesas: rz-du: mipi_dsi: Fix return path on error
authorChris Brandt <chris.brandt@renesas.com>
Fri, 1 May 2026 13:21:35 +0000 (09:21 -0400)
committerBiju Das <biju.das.jz@bp.renesas.com>
Wed, 6 May 2026 06:23:34 +0000 (07:23 +0100)
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 <pavel@nabladev.com>
Signed-off-by: Chris Brandt <chris.brandt@renesas.com>
Reviewed-by: Biju Das <biju.das.jz@bp.renesas.com>
Link: https://patch.msgid.link/20260501132135.196701-1-chris.brandt@renesas.com
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c

index 715872130780f98f314b8e1bdf2072dbfe3712a2..a9763caa7b0eda4847506aa0f2d2a43f74f73246 100644 (file)
@@ -1445,6 +1445,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);
@@ -1477,11 +1482,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:
@@ -1496,8 +1496,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);
 }