Merge tag 'drm-misc-fixes-2022-05-26' of git://anongit.freedesktop.org/drm/drm-misc...
[linux-2.6-microblaze.git] / drivers / gpu / drm / bridge / ti-sn65dsi83.c
index 3d58110..ac66f40 100644 (file)
@@ -488,6 +488,11 @@ static void sn65dsi83_atomic_enable(struct drm_bridge *bridge,
        /* Clear all errors that got asserted during initialization. */
        regmap_read(ctx->regmap, REG_IRQ_STAT, &pval);
        regmap_write(ctx->regmap, REG_IRQ_STAT, pval);
+
+       usleep_range(10000, 12000);
+       regmap_read(ctx->regmap, REG_IRQ_STAT, &pval);
+       if (pval)
+               dev_err(ctx->dev, "Unexpected link status 0x%02x\n", pval);
 }
 
 static void sn65dsi83_atomic_disable(struct drm_bridge *bridge,
@@ -565,7 +570,6 @@ static int sn65dsi83_parse_dt(struct sn65dsi83 *ctx, enum sn65dsi83_model model)
        struct drm_bridge *panel_bridge;
        struct device *dev = ctx->dev;
        struct device_node *endpoint;
-       struct drm_panel *panel;
        int ret;
 
        endpoint = of_graph_get_endpoint_by_regs(dev->of_node, 0, 0);
@@ -605,15 +609,10 @@ static int sn65dsi83_parse_dt(struct sn65dsi83 *ctx, enum sn65dsi83_model model)
                }
        }
 
-       ret = drm_of_find_panel_or_bridge(dev->of_node, 2, 0, &panel, &panel_bridge);
-       if (ret < 0)
+       panel_bridge = devm_drm_of_get_bridge(dev, dev->of_node, 2, 0);
+       if (IS_ERR(panel_bridge)) {
+               ret = PTR_ERR(panel_bridge);
                goto err_put_node;
-       if (panel) {
-               panel_bridge = devm_drm_panel_bridge_add(dev, panel);
-               if (IS_ERR(panel_bridge)) {
-                       ret = PTR_ERR(panel_bridge);
-                       goto err_put_node;
-               }
        }
 
        ctx->panel_bridge = panel_bridge;