drm/gma500/psb: Actually use VBT mode when it is found
commit 82bc9a42cf854fdf63155759c0aa790bd1f361b0 upstream. With LVDS we were incorrectly picking the pre-programmed mode instead of the prefered mode provided by VBT. Make sure we pick the VBT mode if one is provided. It is likely that the mode read-out code is still wrong but this patch fixes the immediate problem on most machines. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=78562 Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com> Link: http://patchwork.freedesktop.org/patch/msgid/20170418114332.12183-1-patrik.r.jakobsson@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
14bfe118dd
commit
4e4b72c0ee
1 changed files with 11 additions and 7 deletions
|
@ -783,20 +783,23 @@ void psb_intel_lvds_init(struct drm_device *dev,
|
||||||
if (scan->type & DRM_MODE_TYPE_PREFERRED) {
|
if (scan->type & DRM_MODE_TYPE_PREFERRED) {
|
||||||
mode_dev->panel_fixed_mode =
|
mode_dev->panel_fixed_mode =
|
||||||
drm_mode_duplicate(dev, scan);
|
drm_mode_duplicate(dev, scan);
|
||||||
|
DRM_DEBUG_KMS("Using mode from DDC\n");
|
||||||
goto out; /* FIXME: check for quirks */
|
goto out; /* FIXME: check for quirks */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Failed to get EDID, what about VBT? do we need this? */
|
/* Failed to get EDID, what about VBT? do we need this? */
|
||||||
if (mode_dev->vbt_mode)
|
if (dev_priv->lfp_lvds_vbt_mode) {
|
||||||
mode_dev->panel_fixed_mode =
|
mode_dev->panel_fixed_mode =
|
||||||
drm_mode_duplicate(dev, mode_dev->vbt_mode);
|
drm_mode_duplicate(dev, dev_priv->lfp_lvds_vbt_mode);
|
||||||
|
|
||||||
if (!mode_dev->panel_fixed_mode)
|
if (mode_dev->panel_fixed_mode) {
|
||||||
if (dev_priv->lfp_lvds_vbt_mode)
|
mode_dev->panel_fixed_mode->type |=
|
||||||
mode_dev->panel_fixed_mode =
|
DRM_MODE_TYPE_PREFERRED;
|
||||||
drm_mode_duplicate(dev,
|
DRM_DEBUG_KMS("Using mode from VBT\n");
|
||||||
dev_priv->lfp_lvds_vbt_mode);
|
goto out;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If we didn't get EDID, try checking if the panel is already turned
|
* If we didn't get EDID, try checking if the panel is already turned
|
||||||
|
@ -813,6 +816,7 @@ void psb_intel_lvds_init(struct drm_device *dev,
|
||||||
if (mode_dev->panel_fixed_mode) {
|
if (mode_dev->panel_fixed_mode) {
|
||||||
mode_dev->panel_fixed_mode->type |=
|
mode_dev->panel_fixed_mode->type |=
|
||||||
DRM_MODE_TYPE_PREFERRED;
|
DRM_MODE_TYPE_PREFERRED;
|
||||||
|
DRM_DEBUG_KMS("Using pre-programmed mode\n");
|
||||||
goto out; /* FIXME: check for quirks */
|
goto out; /* FIXME: check for quirks */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue