}
 }
 
+void intel_zero_m_n(struct intel_link_m_n *m_n)
+{
+       /* corresponds to 0 register value */
+       memset(m_n, 0, sizeof(*m_n));
+       m_n->tu = 1;
+}
+
 void intel_set_m_n(struct drm_i915_private *i915,
                   const struct intel_link_m_n *m_n,
                   i915_reg_t data_m_reg, i915_reg_t data_n_reg,
        intel_de_write(i915, link_n_reg, m_n->link_n);
 }
 
-static bool transcoder_has_m2_n2(struct drm_i915_private *dev_priv,
-                                enum transcoder transcoder)
+bool intel_cpu_transcoder_has_m2_n2(struct drm_i915_private *dev_priv,
+                                   enum transcoder transcoder)
 {
        if (IS_HASWELL(dev_priv))
                return transcoder == TRANSCODER_EDP;
 {
        struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
 
-       if (!transcoder_has_m2_n2(dev_priv, transcoder))
+       if (!intel_cpu_transcoder_has_m2_n2(dev_priv, transcoder))
                return;
 
        intel_set_m_n(dev_priv, m_n,
 {
        struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
 
-       if (!transcoder_has_m2_n2(dev_priv, transcoder))
+       if (!intel_cpu_transcoder_has_m2_n2(dev_priv, transcoder))
                return;
 
        intel_get_m_n(dev_priv, m_n,
 
 
 void intel_display_prepare_reset(struct drm_i915_private *dev_priv);
 void intel_display_finish_reset(struct drm_i915_private *dev_priv);
+void intel_zero_m_n(struct intel_link_m_n *m_n);
 void intel_set_m_n(struct drm_i915_private *i915,
                   const struct intel_link_m_n *m_n,
                   i915_reg_t data_m_reg, i915_reg_t data_n_reg,
                   struct intel_link_m_n *m_n,
                   i915_reg_t data_m_reg, i915_reg_t data_n_reg,
                   i915_reg_t link_m_reg, i915_reg_t link_n_reg);
+bool intel_cpu_transcoder_has_m2_n2(struct drm_i915_private *dev_priv,
+                                   enum transcoder transcoder);
 void intel_cpu_transcoder_set_m1_n1(struct intel_crtc *crtc,
                                    enum transcoder cpu_transcoder,
                                    const struct intel_link_m_n *m_n);
 
                          int output_bpp, bool constant_n)
 {
        struct intel_connector *connector = intel_dp->attached_connector;
+       struct drm_i915_private *i915 = to_i915(connector->base.dev);
        int pixel_clock;
 
-       if (!can_enable_drrs(connector, pipe_config))
+       if (!can_enable_drrs(connector, pipe_config)) {
+               if (intel_cpu_transcoder_has_m2_n2(i915, pipe_config->cpu_transcoder))
+                       intel_zero_m_n(&pipe_config->dp_m2_n2);
                return;
+       }
 
        pipe_config->has_drrs = true;