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 2945f57c53ee..3d43da6d3482 100644 --- a/drivers/gpu/drm/i915/intel_bios.c +++ b/drivers/gpu/drm/i915/intel_bios.c | |||
@@ -720,6 +720,10 @@ parse_mipi(struct drm_i915_private *dev_priv, struct bdb_header *bdb) | |||
720 | int i, panel_id, seq_size; | 720 | int i, panel_id, seq_size; |
721 | u16 block_size; | 721 | u16 block_size; |
722 | 722 | ||
723 | /* parse MIPI blocks only if LFP type is MIPI */ | ||
724 | if (!dev_priv->vbt.has_mipi) | ||
725 | return; | ||
726 | |||
723 | /* Initialize this to undefined indicating no generic MIPI support */ | 727 | /* Initialize this to undefined indicating no generic MIPI support */ |
724 | dev_priv->vbt.dsi.panel_id = MIPI_DSI_UNDEFINED_PANEL_ID; | 728 | dev_priv->vbt.dsi.panel_id = MIPI_DSI_UNDEFINED_PANEL_ID; |
725 | 729 | ||
@@ -1035,6 +1039,15 @@ parse_device_mapping(struct drm_i915_private *dev_priv, | |||
1035 | /* skip the device block if device type is invalid */ | 1039 | /* skip the device block if device type is invalid */ |
1036 | continue; | 1040 | continue; |
1037 | } | 1041 | } |
1042 | |||
1043 | if (p_child->common.dvo_port >= DVO_PORT_MIPIA | ||
1044 | && p_child->common.dvo_port <= DVO_PORT_MIPID | ||
1045 | &&p_child->common.device_type & DEVICE_TYPE_MIPI_OUTPUT) { | ||
1046 | DRM_DEBUG_KMS("Found MIPI as LFP\n"); | ||
1047 | dev_priv->vbt.has_mipi = 1; | ||
1048 | dev_priv->vbt.dsi.port = p_child->common.dvo_port; | ||
1049 | } | ||
1050 | |||
1038 | child_dev_ptr = dev_priv->vbt.child_dev + count; | 1051 | child_dev_ptr = dev_priv->vbt.child_dev + count; |
1039 | count++; | 1052 | count++; |
1040 | memcpy((void *)child_dev_ptr, (void *)p_child, | 1053 | memcpy((void *)child_dev_ptr, (void *)p_child, |