From patchwork Mon Oct 16 11:26:59 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wen-chien Jesse Sung X-Patchwork-Id: 826248 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) by ozlabs.org (Postfix) with ESMTP id 3yFwyp4LMBz9sNc; Mon, 16 Oct 2017 22:27:14 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1e43Y6-0003jR-Ha; Mon, 16 Oct 2017 11:27:10 +0000 Received: from youngberry.canonical.com ([91.189.89.112]) by huckleberry.canonical.com with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:128) (Exim 4.86_2) (envelope-from ) id 1e43Y3-0003he-Mn for kernel-team@lists.ubuntu.com; Mon, 16 Oct 2017 11:27:07 +0000 Received: from 1.general.jesse.uk.vpn ([10.172.197.96] helo=cola.voip.idv.tw) by youngberry.canonical.com with esmtpsa (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.76) (envelope-from ) id 1e43Y2-0002xE-VY; Mon, 16 Oct 2017 11:27:07 +0000 From: Wen-chien Jesse Sung To: kernel-team@lists.ubuntu.com Subject: [Artful][PATCH 2/3] UBUNTU: SAUCE: drm/i915: Workaround for DP DPMS D3 on Dell monitor Date: Mon, 16 Oct 2017 19:26:59 +0800 Message-Id: <1508153220-3808-3-git-send-email-jesse.sung@canonical.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1508153220-3808-1-git-send-email-jesse.sung@canonical.com> References: <1508153220-3808-1-git-send-email-jesse.sung@canonical.com> X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" BugLink: https://launchpad.net/bugs/1723915 Dell Wyse 3040 box with Cherry Trail shows a blank monitor output and other display issues with a certain Dell DP monitors (E-series). The only reliable workaround so far is to skip DP DPMS D3 transition. Based on the patch in opensuse created by Takashi Iwai . Signed-off-by: Wen-chien Jesse Sung --- drivers/gpu/drm/i915/i915_drv.h | 1 + drivers/gpu/drm/i915/intel_display.c | 13 +++++++++++++ drivers/gpu/drm/i915/intel_dp.c | 3 ++- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index e1f7c97..9df224a 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -1166,6 +1166,7 @@ enum intel_sbi_destination { #define QUIRK_INVERT_BRIGHTNESS (1<<2) #define QUIRK_BACKLIGHT_PRESENT (1<<3) #define QUIRK_PIN_SWIZZLED_PAGES (1<<5) +#define QUIRK_SKIP_DP_DPMS_D3 (1<<15) 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 cc484b5..06c54ba 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -14758,6 +14758,16 @@ static void quirk_backlight_present(struct drm_device *dev) DRM_INFO("applying backlight present quirk\n"); } +/* Dell Wyse 3040 doesn't work well with some Dell monitors (E-series). + * Workaround this by skipping DP DPMS D3 transition. + */ +static void quirk_disable_dp_dpms_d3(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = to_i915(dev); + dev_priv->quirks |= QUIRK_SKIP_DP_DPMS_D3; + DRM_INFO("Applying Wyse 3040 quirk\n"); +} + struct intel_quirk { int device; int subsystem_vendor; @@ -14841,6 +14851,9 @@ static struct intel_quirk intel_quirks[] = { /* Dell Chromebook 11 (2015 version) */ { 0x0a16, 0x1028, 0x0a35, quirk_backlight_present }, + + /* Dell Wyse 3040 */ + { 0x22b0, 0x1028, 0x07c1, quirk_disable_dp_dpms_d3 }, }; 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 64fa774..d1a51d7 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@ -2660,7 +2660,8 @@ static void intel_disable_dp(struct intel_encoder *encoder, * ensure that we have vdd while we switch off the panel. */ intel_edp_panel_vdd_on(intel_dp); intel_edp_backlight_off(old_conn_state); - intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF); + if (!(dev_priv->quirks & QUIRK_SKIP_DP_DPMS_D3)) + intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF); intel_edp_panel_off(intel_dp); /* disable the port before the pipe on g4x */