Now that struct mipi_dsi_device provides DSC data, fetch it from the
mentioned struct rather than from the struct drm_panel itself. This
would allow supporting MIPI DSI bridges handling DSC on their input
side.

Signed-off-by: Dmitry Baryshkov <dmitry.barysh...@linaro.org>
---
 drivers/gpu/drm/msm/dsi/dsi_host.c | 25 +++++++++++--------------
 1 file changed, 11 insertions(+), 14 deletions(-)

diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c 
b/drivers/gpu/drm/msm/dsi/dsi_host.c
index a34078497af1..fb5ab6c718c8 100644
--- a/drivers/gpu/drm/msm/dsi/dsi_host.c
+++ b/drivers/gpu/drm/msm/dsi/dsi_host.c
@@ -1686,6 +1686,17 @@ static int dsi_host_attach(struct mipi_dsi_host *host,
        msm_host->lanes = dsi->lanes;
        msm_host->format = dsi->format;
        msm_host->mode_flags = dsi->mode_flags;
+       if (dsi->dsc) {
+               struct msm_display_dsc_config *dsc = msm_host->dsc;
+
+               if (!dsc) {
+                       dsc = devm_kzalloc(&msm_host->pdev->dev, sizeof(*dsc), 
GFP_KERNEL);
+                       if (!dsc)
+                               return -ENOMEM;
+                       dsc->drm = dsi->dsc;
+                       msm_host->dsc = dsc;
+               }
+       }
 
        /* Some gpios defined in panel DT need to be controlled by host */
        ret = dsi_host_init_panel_gpios(msm_host, &dsi->dev);
@@ -2159,23 +2170,9 @@ int msm_dsi_host_modeset_init(struct mipi_dsi_host *host,
 {
        struct msm_dsi_host *msm_host = to_msm_dsi_host(host);
        const struct msm_dsi_cfg_handler *cfg_hnd = msm_host->cfg_hnd;
-       struct drm_panel *panel;
        int ret;
 
        msm_host->dev = dev;
-       panel = msm_dsi_host_get_panel(&msm_host->base);
-
-       if (!IS_ERR(panel) && panel->dsc) {
-               struct msm_display_dsc_config *dsc = msm_host->dsc;
-
-               if (!dsc) {
-                       dsc = devm_kzalloc(&msm_host->pdev->dev, sizeof(*dsc), 
GFP_KERNEL);
-                       if (!dsc)
-                               return -ENOMEM;
-                       dsc->drm = panel->dsc;
-                       msm_host->dsc = dsc;
-               }
-       }
 
        ret = cfg_hnd->ops->tx_buf_alloc(msm_host, SZ_4K);
        if (ret) {
-- 
2.35.1

Reply via email to