diff mbox series

[3/3] drm/i915/icl: Implement Display WA 1148

Message ID 20180924215714.28572-3-radhakrishna.sripada@intel.com (mailing list archive)
State New, archived
Headers show
Series [1/3] drm/i915/icl: Add WaEnable32PlaneMode | expand

Commit Message

Sripada, Radhakrishna Sept. 24, 2018, 9:57 p.m. UTC
From: "Sripada, Radhakrishna" <radhakrishna.sripada@intel.com>

Display WA #1148 asks to not enable YUV 420 HDMI 10bpc when
horizontal blank size mod 8 reminder is 2.

v2: rebase
V3: Implement in hdmi_deep_color_possible function
v4: Take care of line length wrapping (James)
v5: Move the WA outside the connector loop (Ville)
v6: Add icl in the comment (Ville)

Cc: James Ausmus <james.ausmus@intel.com>
Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Radhakrishna Sripada <radhakrishna.sripada@intel.com>
---
 drivers/gpu/drm/i915/intel_hdmi.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index a2dab0b6bde6..853c5b51b0be 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -1597,6 +1597,8 @@  static bool hdmi_deep_color_possible(const struct intel_crtc_state *crtc_state,
 	struct drm_atomic_state *state = crtc_state->base.state;
 	struct drm_connector_state *connector_state;
 	struct drm_connector *connector;
+	const struct drm_display_mode *adjusted_mode =
+		&crtc_state->base.adjusted_mode;
 	int i;
 
 	if (HAS_GMCH_DISPLAY(dev_priv))
@@ -1645,7 +1647,13 @@  static bool hdmi_deep_color_possible(const struct intel_crtc_state *crtc_state,
 
 	/* Display WA #1139: glk */
 	if (bpc == 12 && IS_GLK_REVID(dev_priv, 0, GLK_REVID_A1) &&
-	    crtc_state->base.adjusted_mode.htotal > 5460)
+	    adjusted_mode->htotal > 5460)
+		return false;
+
+	/* Display Wa #1148:icl */
+	if (crtc_state->ycbcr420 && bpc == 10 && IS_ICELAKE(dev_priv) &&
+	    (adjusted_mode->crtc_hblank_end -
+	     adjusted_mode->crtc_hblank_start) % 8 == 2)
 		return false;
 
 	return true;