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

Commit 9c72cc6f authored by Scot Doyle's avatar Scot Doyle Committed by Daniel Vetter
Browse files

drm/i915: quirk asserts controllable backlight presence, overriding VBT

commit c675949e
Author: Jani Nikula <jani.nikula@intel.com>
Date:   Wed Apr 9 11:31:37 2014 +0300

    drm/i915: do not setup backlight if not available according to VBT

caused a regression on machines with a misconfigured VBT. Add a quirk to
assert the presence of a controllable backlight. Use it to ignore the VBT
backlight presence check during backlight setup.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=79813


Tested-by: default avatarJames Duley <jagduley@gmail.com>
Tested-by: default avatarMichael Mullin <masmullin@gmail.com>
Reviewed-by: default avatarJani Nikula <jani.nikula@intel.com>
Signed-off-by: default avatarScot Doyle <lkml14@scotdoyle.com>
Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
Cc: stable@vger.kernel.org # 3.15 only
[danvet: Add cc: stable because the regressing commit is in 3.15.]
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent dfd7aecf
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -656,6 +656,7 @@ enum intel_sbi_destination {
#define QUIRK_PIPEA_FORCE (1<<0)
#define QUIRK_LVDS_SSC_DISABLE (1<<1)
#define QUIRK_INVERT_BRIGHTNESS (1<<2)
#define QUIRK_BACKLIGHT_PRESENT (1<<3)

struct intel_fbdev;
struct intel_fbc_work;
+8 −0
Original line number Diff line number Diff line
@@ -11591,6 +11591,14 @@ static void quirk_invert_brightness(struct drm_device *dev)
	DRM_INFO("applying inverted panel brightness quirk\n");
}

/* Some VBT's incorrectly indicate no backlight is present */
static void quirk_backlight_present(struct drm_device *dev)
{
	struct drm_i915_private *dev_priv = dev->dev_private;
	dev_priv->quirks |= QUIRK_BACKLIGHT_PRESENT;
	DRM_INFO("applying backlight present quirk\n");
}

struct intel_quirk {
	int device;
	int subsystem_vendor;
+6 −2
Original line number Diff line number Diff line
@@ -1118,9 +1118,13 @@ int intel_panel_setup_backlight(struct drm_connector *connector)
	int ret;

	if (!dev_priv->vbt.backlight.present) {
		DRM_DEBUG_KMS("native backlight control not available per VBT\n");
		if (dev_priv->quirks & QUIRK_BACKLIGHT_PRESENT) {
			DRM_DEBUG_KMS("no backlight present per VBT, but present per quirk\n");
		} else {
			DRM_DEBUG_KMS("no backlight present per VBT\n");
			return 0;
		}
	}

	/* set level and max in panel struct */
	spin_lock_irqsave(&dev_priv->backlight_lock, flags);