|
@@ -5938,6 +5938,7 @@ static void intel_crtc_disable_noatomic(struct drm_crtc *crtc,
|
|
|
|
|
|
dev_priv->active_crtcs &= ~(1 << intel_crtc->pipe);
|
|
dev_priv->active_crtcs &= ~(1 << intel_crtc->pipe);
|
|
dev_priv->min_cdclk[intel_crtc->pipe] = 0;
|
|
dev_priv->min_cdclk[intel_crtc->pipe] = 0;
|
|
|
|
+ dev_priv->min_voltage_level[intel_crtc->pipe] = 0;
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
/*
|
|
@@ -11289,6 +11290,8 @@ intel_pipe_config_compare(struct drm_i915_private *dev_priv,
|
|
PIPE_CONF_CHECK_CLOCK_FUZZY(base.adjusted_mode.crtc_clock);
|
|
PIPE_CONF_CHECK_CLOCK_FUZZY(base.adjusted_mode.crtc_clock);
|
|
PIPE_CONF_CHECK_CLOCK_FUZZY(port_clock);
|
|
PIPE_CONF_CHECK_CLOCK_FUZZY(port_clock);
|
|
|
|
|
|
|
|
+ PIPE_CONF_CHECK_I(min_voltage_level);
|
|
|
|
+
|
|
#undef PIPE_CONF_CHECK_X
|
|
#undef PIPE_CONF_CHECK_X
|
|
#undef PIPE_CONF_CHECK_I
|
|
#undef PIPE_CONF_CHECK_I
|
|
#undef PIPE_CONF_CHECK_P
|
|
#undef PIPE_CONF_CHECK_P
|
|
@@ -11949,6 +11952,9 @@ static int intel_modeset_checks(struct drm_atomic_state *state)
|
|
DRM_DEBUG_KMS("New cdclk calculated to be logical %u kHz, actual %u kHz\n",
|
|
DRM_DEBUG_KMS("New cdclk calculated to be logical %u kHz, actual %u kHz\n",
|
|
intel_state->cdclk.logical.cdclk,
|
|
intel_state->cdclk.logical.cdclk,
|
|
intel_state->cdclk.actual.cdclk);
|
|
intel_state->cdclk.actual.cdclk);
|
|
|
|
+ DRM_DEBUG_KMS("New voltage level calculated to be logical %u, actual %u\n",
|
|
|
|
+ intel_state->cdclk.logical.voltage_level,
|
|
|
|
+ intel_state->cdclk.actual.voltage_level);
|
|
} else {
|
|
} else {
|
|
to_intel_atomic_state(state)->cdclk.logical = dev_priv->cdclk.logical;
|
|
to_intel_atomic_state(state)->cdclk.logical = dev_priv->cdclk.logical;
|
|
}
|
|
}
|
|
@@ -12517,6 +12523,9 @@ static int intel_atomic_commit(struct drm_device *dev,
|
|
if (intel_state->modeset) {
|
|
if (intel_state->modeset) {
|
|
memcpy(dev_priv->min_cdclk, intel_state->min_cdclk,
|
|
memcpy(dev_priv->min_cdclk, intel_state->min_cdclk,
|
|
sizeof(intel_state->min_cdclk));
|
|
sizeof(intel_state->min_cdclk));
|
|
|
|
+ memcpy(dev_priv->min_voltage_level,
|
|
|
|
+ intel_state->min_voltage_level,
|
|
|
|
+ sizeof(intel_state->min_voltage_level));
|
|
dev_priv->active_crtcs = intel_state->active_crtcs;
|
|
dev_priv->active_crtcs = intel_state->active_crtcs;
|
|
dev_priv->cdclk.logical = intel_state->cdclk.logical;
|
|
dev_priv->cdclk.logical = intel_state->cdclk.logical;
|
|
dev_priv->cdclk.actual = intel_state->cdclk.actual;
|
|
dev_priv->cdclk.actual = intel_state->cdclk.actual;
|
|
@@ -15027,6 +15036,8 @@ static void intel_modeset_readout_hw_state(struct drm_device *dev)
|
|
}
|
|
}
|
|
|
|
|
|
dev_priv->min_cdclk[crtc->pipe] = min_cdclk;
|
|
dev_priv->min_cdclk[crtc->pipe] = min_cdclk;
|
|
|
|
+ dev_priv->min_voltage_level[crtc->pipe] =
|
|
|
|
+ crtc_state->min_voltage_level;
|
|
|
|
|
|
intel_pipe_config_sanity_check(dev_priv, crtc_state);
|
|
intel_pipe_config_sanity_check(dev_priv, crtc_state);
|
|
}
|
|
}
|