aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_bios.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/i915/intel_bios.c')
-rw-r--r--drivers/gpu/drm/i915/intel_bios.c23
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)
1407int 1426int
1408intel_bios_init(struct drm_i915_private *dev_priv) 1427intel_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;