mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 01:04:19 +08:00
Revert and fix "drm/i915/dp: remove DPMS mode tracking from DP"
This reverts commit 885a50147f
.
We actually *do* need to track DPMS state so that on hotplug, we don't
retrain the link until DPMS is disabled.
However, that code had avery small bug -- it wouldn't set the
dpms_mode at mode set time, and so link retraining would not actually
occur on monitor hotplug until the monitor had gone through a DPMS
off/DPMS on cycle.
Signed-off-by: Keith Packard <keithp@keithp.com>
Tested-by: Andrew Lutomirski <luto@mit.edu>
This commit is contained in:
parent
f0575e9297
commit
d2b996ac69
@ -50,6 +50,7 @@ struct intel_dp {
|
||||
bool has_audio;
|
||||
int force_audio;
|
||||
uint32_t color_range;
|
||||
int dpms_mode;
|
||||
uint8_t link_bw;
|
||||
uint8_t lane_count;
|
||||
uint8_t dpcd[8];
|
||||
@ -1011,6 +1012,8 @@ static void intel_dp_commit(struct drm_encoder *encoder)
|
||||
|
||||
if (is_edp(intel_dp))
|
||||
ironlake_edp_backlight_on(dev);
|
||||
|
||||
intel_dp->dpms_mode = DRM_MODE_DPMS_ON;
|
||||
}
|
||||
|
||||
static void
|
||||
@ -1045,6 +1048,7 @@ intel_dp_dpms(struct drm_encoder *encoder, int mode)
|
||||
if (is_edp(intel_dp))
|
||||
ironlake_edp_backlight_on(dev);
|
||||
}
|
||||
intel_dp->dpms_mode = mode;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1591,6 +1595,9 @@ intel_dp_get_dpcd(struct intel_dp *intel_dp)
|
||||
static void
|
||||
intel_dp_check_link_status(struct intel_dp *intel_dp)
|
||||
{
|
||||
if (intel_dp->dpms_mode != DRM_MODE_DPMS_ON)
|
||||
return;
|
||||
|
||||
if (!intel_dp->base.base.crtc)
|
||||
return;
|
||||
|
||||
@ -1939,6 +1946,7 @@ intel_dp_init(struct drm_device *dev, int output_reg)
|
||||
return;
|
||||
|
||||
intel_dp->output_reg = output_reg;
|
||||
intel_dp->dpms_mode = -1;
|
||||
|
||||
intel_connector = kzalloc(sizeof(struct intel_connector), GFP_KERNEL);
|
||||
if (!intel_connector) {
|
||||
|
Loading…
Reference in New Issue
Block a user