[Artful][PATCH 2/3] UBUNTU: SAUCE: drm/i915: Workaround for DP DPMS D3 on Dell monitor
Wen-chien Jesse Sung
jesse.sung at canonical.com
Mon Oct 16 11:26:59 UTC 2017
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 <tiwai at suse.de>.
Signed-off-by: Wen-chien Jesse Sung <jesse.sung at canonical.com>
---
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 */
--
2.7.4
More information about the kernel-team
mailing list