diff options
Diffstat (limited to 'drivers/gpu/drm/i915/intel_bios.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_bios.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c index 6b6509656f16..1ee98f121a00 100644 --- a/drivers/gpu/drm/i915/intel_bios.c +++ b/drivers/gpu/drm/i915/intel_bios.c | |||
@@ -744,6 +744,10 @@ parse_mipi(struct drm_i915_private *dev_priv, struct bdb_header *bdb) | |||
744 | int i, panel_id, seq_size; | 744 | int i, panel_id, seq_size; |
745 | u16 block_size; | 745 | u16 block_size; |
746 | 746 | ||
747 | /* parse MIPI blocks only if LFP type is MIPI */ | ||
748 | if (!dev_priv->vbt.has_mipi) | ||
749 | return; | ||
750 | |||
747 | /* Initialize this to undefined indicating no generic MIPI support */ | 751 | /* Initialize this to undefined indicating no generic MIPI support */ |
748 | dev_priv->vbt.dsi.panel_id = MIPI_DSI_UNDEFINED_PANEL_ID; | 752 | dev_priv->vbt.dsi.panel_id = MIPI_DSI_UNDEFINED_PANEL_ID; |
749 | 753 | ||
@@ -1059,6 +1063,15 @@ parse_device_mapping(struct drm_i915_private *dev_priv, | |||
1059 | /* skip the device block if device type is invalid */ | 1063 | /* skip the device block if device type is invalid */ |
1060 | continue; | 1064 | continue; |
1061 | } | 1065 | } |
1066 | |||
1067 | if (p_child->common.dvo_port >= DVO_PORT_MIPIA | ||
1068 | && p_child->common.dvo_port <= DVO_PORT_MIPID | ||
1069 | &&p_child->common.device_type & DEVICE_TYPE_MIPI_OUTPUT) { | ||
1070 | DRM_DEBUG_KMS("Found MIPI as LFP\n"); | ||
1071 | dev_priv->vbt.has_mipi = 1; | ||
1072 | dev_priv->vbt.dsi.port = p_child->common.dvo_port; | ||
1073 | } | ||
1074 | |||
1062 | child_dev_ptr = dev_priv->vbt.child_dev + count; | 1075 | child_dev_ptr = dev_priv->vbt.child_dev + count; |
1063 | count++; | 1076 | count++; |
1064 | memcpy((void *)child_dev_ptr, (void *)p_child, | 1077 | memcpy((void *)child_dev_ptr, (void *)p_child, |