struct intel_encoder *encoder;
        struct intel_connector *intel_connector;
        struct drm_connector *connector;
-       struct drm_display_mode *scan, *fixed_mode = NULL;
+       struct drm_display_mode *fixed_mode;
        enum port port;
 
        if (!intel_bios_is_dsi_present(dev_priv, &port))
        /* attach connector to encoder */
        intel_connector_attach_encoder(intel_connector, encoder);
 
-       /* fill mode info from VBT */
        mutex_lock(&dev->mode_config.mutex);
-       intel_dsi_vbt_get_modes(intel_dsi);
-       list_for_each_entry(scan, &connector->probed_modes, head) {
-               if (scan->type & DRM_MODE_TYPE_PREFERRED) {
-                       fixed_mode = drm_mode_duplicate(dev, scan);
-                       break;
-               }
-       }
+       fixed_mode = intel_panel_vbt_fixed_mode(intel_connector);
        mutex_unlock(&dev->mode_config.mutex);
 
        if (!fixed_mode) {
                goto err;
        }
 
-       connector->display_info.width_mm = fixed_mode->width_mm;
-       connector->display_info.height_mm = fixed_mode->height_mm;
        intel_panel_init(&intel_connector->panel, fixed_mode, NULL);
        intel_panel_setup_backlight(connector, INVALID_PIPE);
 
-
        if (dev_priv->vbt.dsi.config->dual_link)
                intel_dsi->ports = BIT(PORT_A) | BIT(PORT_B);
        else
 
 
 /* intel_dsi_vbt.c */
 bool intel_dsi_vbt_init(struct intel_dsi *intel_dsi, u16 panel_id);
-int intel_dsi_vbt_get_modes(struct intel_dsi *intel_dsi);
 void intel_dsi_vbt_exec_sequence(struct intel_dsi *intel_dsi,
                                 enum mipi_seq seq_id);
 void intel_dsi_msleep(struct intel_dsi *intel_dsi, int msec);
 
        msleep(msec);
 }
 
-int intel_dsi_vbt_get_modes(struct intel_dsi *intel_dsi)
-{
-       struct intel_connector *connector = intel_dsi->attached_connector;
-       struct drm_device *dev = intel_dsi->base.base.dev;
-       struct drm_i915_private *dev_priv = to_i915(dev);
-       struct drm_display_mode *mode;
-
-       mode = drm_mode_duplicate(dev, dev_priv->vbt.lfp_lvds_vbt_mode);
-       if (!mode)
-               return 0;
-
-       mode->type |= DRM_MODE_TYPE_PREFERRED;
-
-       drm_mode_probed_add(&connector->base, mode);
-
-       return 1;
-}
-
 #define ICL_PREPARE_CNT_MAX    0x7
 #define ICL_CLK_ZERO_CNT_MAX   0xf
 #define ICL_TRAIL_CNT_MAX      0x7
 
        struct drm_encoder *encoder;
        struct intel_connector *intel_connector;
        struct drm_connector *connector;
-       struct drm_display_mode *scan, *fixed_mode = NULL;
+       struct drm_display_mode *fixed_mode;
        enum port port;
 
        DRM_DEBUG_KMS("\n");
        intel_connector_attach_encoder(intel_connector, intel_encoder);
 
        mutex_lock(&dev->mode_config.mutex);
-       intel_dsi_vbt_get_modes(intel_dsi);
-       list_for_each_entry(scan, &connector->probed_modes, head) {
-               if ((scan->type & DRM_MODE_TYPE_PREFERRED)) {
-                       fixed_mode = drm_mode_duplicate(dev, scan);
-                       break;
-               }
-       }
+       fixed_mode = intel_panel_vbt_fixed_mode(intel_connector);
        mutex_unlock(&dev->mode_config.mutex);
 
        if (!fixed_mode) {
                goto err;
        }
 
-       connector->display_info.width_mm = fixed_mode->width_mm;
-       connector->display_info.height_mm = fixed_mode->height_mm;
-
        intel_panel_init(&intel_connector->panel, fixed_mode, NULL);
        intel_panel_setup_backlight(connector, INVALID_PIPE);