struct clk *pclk;
 
-       bool device_found;
        unsigned int lane_mbps; /* per lane */
        u32 channel;
        u32 lanes;
        return readl(dsi->base + reg);
 }
 
-static int dw_mipi_dsi_panel_or_bridge(struct dw_mipi_dsi *dsi,
-                                      struct device_node *node)
-{
-       struct drm_bridge *bridge;
-       struct drm_panel *panel;
-       int ret;
-
-       ret = drm_of_find_panel_or_bridge(node, 1, 0, &panel, &bridge);
-       if (ret)
-               return ret;
-
-       if (panel) {
-               bridge = drm_panel_bridge_add_typed(panel,
-                                                   DRM_MODE_CONNECTOR_DSI);
-               if (IS_ERR(bridge))
-                       return PTR_ERR(bridge);
-       }
-
-       dsi->panel_bridge = bridge;
-
-       if (!dsi->panel_bridge)
-               return -EPROBE_DEFER;
-
-       return 0;
-}
-
 static int dw_mipi_dsi_host_attach(struct mipi_dsi_host *host,
                                   struct mipi_dsi_device *device)
 {
        struct dw_mipi_dsi *dsi = host_to_dsi(host);
        const struct dw_mipi_dsi_plat_data *pdata = dsi->plat_data;
+       struct drm_bridge *bridge;
+       struct drm_panel *panel;
        int ret;
 
        if (device->lanes > dsi->plat_data->max_data_lanes) {
        dsi->format = device->format;
        dsi->mode_flags = device->mode_flags;
 
-       if (!dsi->device_found) {
-               ret = dw_mipi_dsi_panel_or_bridge(dsi, host->dev->of_node);
-               if (ret)
-                       return ret;
+       ret = drm_of_find_panel_or_bridge(host->dev->of_node, 1, 0,
+                                         &panel, &bridge);
+       if (ret)
+               return ret;
 
-               dsi->device_found = true;
+       if (panel) {
+               bridge = drm_panel_bridge_add_typed(panel,
+                                                   DRM_MODE_CONNECTOR_DSI);
+               if (IS_ERR(bridge))
+                       return PTR_ERR(bridge);
        }
 
+       dsi->panel_bridge = bridge;
+
+       drm_bridge_add(&dsi->bridge);
+
        if (pdata->host_ops && pdata->host_ops->attach) {
                ret = pdata->host_ops->attach(pdata->priv_data, device);
                if (ret < 0)
        /* Set the encoder type as caller does not know it */
        bridge->encoder->encoder_type = DRM_MODE_ENCODER_DSI;
 
-       if (!dsi->device_found) {
-               int ret;
-
-               ret = dw_mipi_dsi_panel_or_bridge(dsi, dsi->dev->of_node);
-               if (ret)
-                       return ret;
-
-               dsi->device_found = true;
-       }
-
        /* Attach the panel-bridge to the dsi bridge */
        return drm_bridge_attach(bridge->encoder, dsi->panel_bridge, bridge,
                                 flags);
 #ifdef CONFIG_OF
        dsi->bridge.of_node = pdev->dev.of_node;
 #endif
-       drm_bridge_add(&dsi->bridge);
 
        return dsi;
 }