[Intel-gfx] [PATCH 1/5] quirk asserts controllable backlight presence, overriding VBT

Scot Doyle lkml14 at scotdoyle.com
Fri Jun 27 18:42:28 CEST 2014


Add a quirk to assert the presence of a controllable backlight. Use it to 
ignore the VBT backlight presence check during backlight setup.

Tested-by: James Duley <jagduley at gmail.com>
Signed-off-by: Scot Doyle <lkml14 at scotdoyle.com>
CC: Jani Nikula <jani.nikula at intel.com>
---
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 8cea596..723b1fe 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -657,6 +657,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;
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 065984d..c583b07 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -12290,6 +12290,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;
diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
index 38a9857..dfc6b5f 100644
--- a/drivers/gpu/drm/i915/intel_panel.c
+++ b/drivers/gpu/drm/i915/intel_panel.c
@@ -1118,8 +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");
-		return 0;
+		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 */



More information about the Intel-gfx mailing list