Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 47f0eb22 authored by Keith Packard's avatar Keith Packard
Browse files

drm/i915: Only use VBT panel mode on eDP if no EDID is found



We're going to assume that EDID is more reliable than the VBT tables
for eDP panels, which is notably true on MacBook machines where the
VBT contains completely bogus data.

Signed-off-by: default avatarKeith Packard <keithp@keithp.com>
Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent 192aac1f
Loading
Loading
Loading
Loading
+10 −10
Original line number Diff line number Diff line
@@ -1755,7 +1755,16 @@ static int intel_dp_get_modes(struct drm_connector *connector)

	/* if eDP has no EDID, try to use fixed panel mode from VBT */
	if (is_edp(intel_dp)) {
		if (dev_priv->panel_fixed_mode != NULL) {
		/* initialize panel mode from VBT if available for eDP */
		if (dev_priv->panel_fixed_mode == NULL && dev_priv->lfp_lvds_vbt_mode != NULL) {
			dev_priv->panel_fixed_mode =
				drm_mode_duplicate(dev, dev_priv->lfp_lvds_vbt_mode);
			if (dev_priv->panel_fixed_mode) {
				dev_priv->panel_fixed_mode->type |=
					DRM_MODE_TYPE_PREFERRED;
			}
		}
		if (dev_priv->panel_fixed_mode) {
			struct drm_display_mode *mode;
			mode = drm_mode_duplicate(dev, dev_priv->panel_fixed_mode);
			drm_mode_probed_add(connector, mode);
@@ -2068,15 +2077,6 @@ intel_dp_init(struct drm_device *dev, int output_reg)
	intel_encoder->hot_plug = intel_dp_hot_plug;

	if (is_edp(intel_dp)) {
		/* initialize panel mode from VBT if available for eDP */
		if (dev_priv->lfp_lvds_vbt_mode) {
			dev_priv->panel_fixed_mode =
				drm_mode_duplicate(dev, dev_priv->lfp_lvds_vbt_mode);
			if (dev_priv->panel_fixed_mode) {
				dev_priv->panel_fixed_mode->type |=
					DRM_MODE_TYPE_PREFERRED;
			}
		}
		dev_priv->int_edp_connector = connector;
		intel_panel_setup_backlight(dev);
	}