diff options
Diffstat (limited to 'drivers/gpu/drm/i915/intel_bios.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_bios.c | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c index b9022fa053d6..c6e69e4cfa83 100644 --- a/drivers/gpu/drm/i915/intel_bios.c +++ b/drivers/gpu/drm/i915/intel_bios.c | |||
@@ -218,7 +218,7 @@ parse_lfp_panel_data(struct drm_i915_private *dev_priv, | |||
218 | 218 | ||
219 | dev_priv->vbt.lvds_dither = lvds_options->pixel_dither; | 219 | dev_priv->vbt.lvds_dither = lvds_options->pixel_dither; |
220 | 220 | ||
221 | ret = intel_opregion_get_panel_type(dev_priv->dev); | 221 | ret = intel_opregion_get_panel_type(dev_priv); |
222 | if (ret >= 0) { | 222 | if (ret >= 0) { |
223 | WARN_ON(ret > 0xf); | 223 | WARN_ON(ret > 0xf); |
224 | panel_type = ret; | 224 | panel_type = ret; |
@@ -323,6 +323,15 @@ parse_lfp_backlight(struct drm_i915_private *dev_priv, | |||
323 | return; | 323 | return; |
324 | } | 324 | } |
325 | 325 | ||
326 | dev_priv->vbt.backlight.type = INTEL_BACKLIGHT_DISPLAY_DDI; | ||
327 | if (bdb->version >= 191 && | ||
328 | get_blocksize(backlight_data) >= sizeof(*backlight_data)) { | ||
329 | const struct bdb_lfp_backlight_control_method *method; | ||
330 | |||
331 | method = &backlight_data->backlight_control[panel_type]; | ||
332 | dev_priv->vbt.backlight.type = method->type; | ||
333 | } | ||
334 | |||
326 | dev_priv->vbt.backlight.pwm_freq_hz = entry->pwm_freq_hz; | 335 | dev_priv->vbt.backlight.pwm_freq_hz = entry->pwm_freq_hz; |
327 | dev_priv->vbt.backlight.active_low_pwm = entry->active_low_pwm; | 336 | dev_priv->vbt.backlight.active_low_pwm = entry->active_low_pwm; |
328 | dev_priv->vbt.backlight.min_brightness = entry->min_brightness; | 337 | dev_priv->vbt.backlight.min_brightness = entry->min_brightness; |
@@ -768,6 +777,16 @@ parse_mipi_config(struct drm_i915_private *dev_priv, | |||
768 | return; | 777 | return; |
769 | } | 778 | } |
770 | 779 | ||
780 | /* | ||
781 | * These fields are introduced from the VBT version 197 onwards, | ||
782 | * so making sure that these bits are set zero in the previous | ||
783 | * versions. | ||
784 | */ | ||
785 | if (dev_priv->vbt.dsi.config->dual_link && bdb->version < 197) { | ||
786 | dev_priv->vbt.dsi.config->dl_dcs_cabc_ports = 0; | ||
787 | dev_priv->vbt.dsi.config->dl_dcs_backlight_ports = 0; | ||
788 | } | ||
789 | |||
771 | /* We have mandatory mipi config blocks. Initialize as generic panel */ | 790 | /* We have mandatory mipi config blocks. Initialize as generic panel */ |
772 | dev_priv->vbt.dsi.panel_id = MIPI_DSI_GENERIC_PANEL_ID; | 791 | dev_priv->vbt.dsi.panel_id = MIPI_DSI_GENERIC_PANEL_ID; |
773 | } | 792 | } |
@@ -1407,7 +1426,7 @@ static const struct vbt_header *find_vbt(void __iomem *bios, size_t size) | |||
1407 | int | 1426 | int |
1408 | intel_bios_init(struct drm_i915_private *dev_priv) | 1427 | intel_bios_init(struct drm_i915_private *dev_priv) |
1409 | { | 1428 | { |
1410 | struct pci_dev *pdev = dev_priv->dev->pdev; | 1429 | struct pci_dev *pdev = dev_priv->drm.pdev; |
1411 | const struct vbt_header *vbt = dev_priv->opregion.vbt; | 1430 | const struct vbt_header *vbt = dev_priv->opregion.vbt; |
1412 | const struct bdb_header *bdb; | 1431 | const struct bdb_header *bdb; |
1413 | u8 __iomem *bios = NULL; | 1432 | u8 __iomem *bios = NULL; |