From: Thierry Reding <tred...@nvidia.com>

The display controllers and VIC don't have any limitations on the
DMA segment size. Inherit the DMA parameters from the parent device,
which also doesn't have any such limitations.

Signed-off-by: Thierry Reding <tred...@nvidia.com>
---
 drivers/gpu/drm/tegra/dc.c  | 9 +++++++++
 drivers/gpu/drm/tegra/vic.c | 9 +++++++++
 2 files changed, 18 insertions(+)

diff --git a/drivers/gpu/drm/tegra/dc.c b/drivers/gpu/drm/tegra/dc.c
index fbf57bc3cdab..f7f7984bb749 100644
--- a/drivers/gpu/drm/tegra/dc.c
+++ b/drivers/gpu/drm/tegra/dc.c
@@ -2074,6 +2074,12 @@ static int tegra_dc_init(struct host1x_client *client)
                goto cleanup;
        }
 
+       /*
+        * Inherit the DMA parameters (such as maximum segment size) from the
+        * parent device.
+        */
+       client->dev->dma_parms = client->parent->dma_parms;
+
        return 0;
 
 cleanup:
@@ -2097,6 +2103,9 @@ static int tegra_dc_exit(struct host1x_client *client)
        if (!tegra_dc_has_window_groups(dc))
                return 0;
 
+       /* avoid a dangling pointer just in case this disappears */
+       client->dev->dma_parms = NULL;
+
        devm_free_irq(dc->dev, dc->irq, dc);
 
        err = tegra_dc_rgb_exit(dc);
diff --git a/drivers/gpu/drm/tegra/vic.c b/drivers/gpu/drm/tegra/vic.c
index c97a61c877af..8d98b0cfc47b 100644
--- a/drivers/gpu/drm/tegra/vic.c
+++ b/drivers/gpu/drm/tegra/vic.c
@@ -214,6 +214,12 @@ static int vic_init(struct host1x_client *client)
        if (err < 0)
                goto free_syncpt;
 
+       /*
+        * Inherit the DMA parameters (such as maximum segment size) from the
+        * parent device.
+        */
+       client->dev->dma_parms = client->parent->dma_parms;
+
        return 0;
 
 free_syncpt:
@@ -236,6 +242,9 @@ static int vic_exit(struct host1x_client *client)
        struct vic *vic = to_vic(drm);
        int err;
 
+       /* avoid a dangling pointer just in case this disappears */
+       client->dev->dma_parms = NULL;
+
        err = tegra_drm_unregister_client(tegra, drm);
        if (err < 0)
                return err;
-- 
2.23.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to