From 0e13815fac02101f0ed820c0077d165901558938 Mon Sep 17 00:00:00 2001 From: Alberto Aguirre Date: Mon, 27 Jan 2014 10:42:46 -0600 Subject: [PATCH] drm/i915: Add quirk for ASUS UX302LA(G) to fix blank screen Add quirk for ASUS UX302LA(G) models to ignore eDP bpp clamping to the BIOS provided values as blank screen issues occur otherwise during modesetting or suspend/resume. Signed-off-by: Alberto Aguirre --- drivers/gpu/drm/i915/i915_drv.h | 1 + drivers/gpu/drm/i915/intel_display.c | 14 ++++++++++++++ drivers/gpu/drm/i915/intel_dp.c | 3 ++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 90fcccb..69ce305 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -709,6 +709,7 @@ enum intel_sbi_destination { #define QUIRK_LVDS_SSC_DISABLE (1<<1) #define QUIRK_INVERT_BRIGHTNESS (1<<2) #define QUIRK_NO_PCH_PWM_ENABLE (1<<3) +#define QUIRK_IGNORE_BPP_CLAMPING (1<<4) 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 2bde35d..3a649e9 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -10487,6 +10487,17 @@ static void quirk_no_pcm_pwm_enable(struct drm_device *dev) DRM_INFO("applying no-PCH_PWM_ENABLE quirk\n"); } +/* + * Some machines (ASUS UX302LA/LG) incorrectly return 18bpp in UEFI mode + * from vbe edp data + */ +static void quirk_ignore_bpp_clamping(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + dev_priv->quirks |= QUIRK_IGNORE_BPP_CLAMPING; + DRM_INFO("applying ignoring bpp clamping quirk\n"); +} + struct intel_quirk { int device; int subsystem_vendor; @@ -10560,6 +10571,9 @@ static struct intel_quirk intel_quirks[] = { { 0x0116, 0x1028, 0x052e, quirk_no_pcm_pwm_enable }, /* Dell XPS13 HD and XPS13 FHD Ivy Bridge */ { 0x0166, 0x1028, 0x058b, quirk_no_pcm_pwm_enable }, + + /* ASUS UX302LA */ + { 0x0a16, 0x1043, 0x13ad, quirk_ignore_bpp_clamping }, }; static void intel_init_quirks(struct drm_device *dev) diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 30c627c..dee328a 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@ -837,7 +837,8 @@ intel_dp_compute_config(struct intel_encoder *encoder, * bpc in between. */ bpp = pipe_config->pipe_bpp; if (is_edp(intel_dp) && dev_priv->vbt.edp_bpp && - dev_priv->vbt.edp_bpp < bpp) { + dev_priv->vbt.edp_bpp < bpp && + !(dev_priv->quirks & QUIRK_IGNORE_BPP_CLAMPING)) { DRM_DEBUG_KMS("clamping bpp for eDP panel to BIOS-provided %i\n", dev_priv->vbt.edp_bpp); bpp = dev_priv->vbt.edp_bpp; -- 1.9.rc1