unsigned int lvds_use_ssc:1;
        unsigned int display_clock_mode:1;
        unsigned int fdi_rx_polarity_inverted:1;
+       unsigned int has_mipi:1;
        int lvds_ssc_freq;
        unsigned int bios_lvds_val; /* initial [PCH_]LVDS reg val in VBIOS */
 
 
        /* MIPI DSI */
        struct {
+               u16 port;
                u16 panel_id;
                struct mipi_config *config;
                struct mipi_pps_data *pps;
 
        int i, panel_id, seq_size;
        u16 block_size;
 
+       /* parse MIPI blocks only if LFP type is MIPI */
+       if (!dev_priv->vbt.has_mipi)
+               return;
+
        /* Initialize this to undefined indicating no generic MIPI support */
        dev_priv->vbt.dsi.panel_id = MIPI_DSI_UNDEFINED_PANEL_ID;
 
                        /* skip the device block if device type is invalid */
                        continue;
                }
+
+               if (p_child->common.dvo_port >= DVO_PORT_MIPIA
+                   && p_child->common.dvo_port <= DVO_PORT_MIPID
+                   &&p_child->common.device_type & DEVICE_TYPE_MIPI_OUTPUT) {
+                       DRM_DEBUG_KMS("Found MIPI as LFP\n");
+                       dev_priv->vbt.has_mipi = 1;
+                       dev_priv->vbt.dsi.port = p_child->common.dvo_port;
+               }
+
                child_dev_ptr = dev_priv->vbt.child_dev + count;
                count++;
                memcpy((void *)child_dev_ptr, (void *)p_child,
 
 #define DVO_PORT_DPC   8
 #define DVO_PORT_DPD   9
 #define DVO_PORT_DPA   10
+#define DVO_PORT_MIPIA 21
+#define DVO_PORT_MIPIB 22
+#define DVO_PORT_MIPIC 23
+#define DVO_PORT_MIPID 24
 
 /* Block 52 contains MIPI Panel info
  * 6 such enteries will there. Index into correct
 
 
        DRM_DEBUG_KMS("\n");
 
+       /* There is no detection method for MIPI so rely on VBT */
+       if (!dev_priv->vbt.has_mipi)
+               return false;
+
        intel_dsi = kzalloc(sizeof(*intel_dsi), GFP_KERNEL);
        if (!intel_dsi)
                return false;