From: Ville Syrjälä <ville.syrj...@linux.intel.com>

When reprogramming M/N live on BDW+ we must write the LINK_N
register last as it's the one that arms the double buffered
register update for all the M/N registers. Document this so
that we don't accidentally break things.

Signed-off-by: Ville Syrjälä <ville.syrj...@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_display.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
b/drivers/gpu/drm/i915/display/intel_display.c
index 6d435c8be8a2..cf90fdca5f43 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -3147,6 +3147,10 @@ void intel_set_m_n(struct drm_i915_private *i915,
        intel_de_write(i915, data_m_reg, TU_SIZE(m_n->tu) | m_n->data_m);
        intel_de_write(i915, data_n_reg, m_n->data_n);
        intel_de_write(i915, link_m_reg, m_n->link_m);
+       /*
+        * On BDW+ writing LINK_N arms the double buffered update
+        * of all the M/N registers, so it must be written last.
+        */
        intel_de_write(i915, link_n_reg, m_n->link_n);
 }
 
-- 
2.34.1

Reply via email to