drm/i915: Rely on TEST_SINK_START instead of tracking Sink CRC state on dev_priv.
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:

committed by
Daniel Vetter

parent
7e38eeff6d
commit
6d8175da1f
@@ -3985,7 +3985,6 @@ static int intel_dp_sink_crc_stop(struct intel_dp *intel_dp)
|
|||||||
ret = -ETIMEDOUT;
|
ret = -ETIMEDOUT;
|
||||||
}
|
}
|
||||||
|
|
||||||
intel_dp->sink_crc.started = false;
|
|
||||||
out:
|
out:
|
||||||
hsw_enable_ips(intel_crtc);
|
hsw_enable_ips(intel_crtc);
|
||||||
return ret;
|
return ret;
|
||||||
@@ -3999,12 +3998,6 @@ static int intel_dp_sink_crc_start(struct intel_dp *intel_dp)
|
|||||||
u8 buf;
|
u8 buf;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (intel_dp->sink_crc.started) {
|
|
||||||
ret = intel_dp_sink_crc_stop(intel_dp);
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (drm_dp_dpcd_readb(&intel_dp->aux, DP_TEST_SINK_MISC, &buf) < 0)
|
if (drm_dp_dpcd_readb(&intel_dp->aux, DP_TEST_SINK_MISC, &buf) < 0)
|
||||||
return -EIO;
|
return -EIO;
|
||||||
|
|
||||||
@@ -4014,6 +4007,12 @@ static int intel_dp_sink_crc_start(struct intel_dp *intel_dp)
|
|||||||
if (drm_dp_dpcd_readb(&intel_dp->aux, DP_TEST_SINK, &buf) < 0)
|
if (drm_dp_dpcd_readb(&intel_dp->aux, DP_TEST_SINK, &buf) < 0)
|
||||||
return -EIO;
|
return -EIO;
|
||||||
|
|
||||||
|
if (buf & DP_TEST_SINK_START) {
|
||||||
|
ret = intel_dp_sink_crc_stop(intel_dp);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
hsw_disable_ips(intel_crtc);
|
hsw_disable_ips(intel_crtc);
|
||||||
|
|
||||||
if (drm_dp_dpcd_writeb(&intel_dp->aux, DP_TEST_SINK,
|
if (drm_dp_dpcd_writeb(&intel_dp->aux, DP_TEST_SINK,
|
||||||
@@ -4023,7 +4022,6 @@ static int intel_dp_sink_crc_start(struct intel_dp *intel_dp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
intel_wait_for_vblank(dev, intel_crtc->pipe);
|
intel_wait_for_vblank(dev, intel_crtc->pipe);
|
||||||
intel_dp->sink_crc.started = true;
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -738,10 +738,6 @@ enum link_m_n_set {
|
|||||||
M2_N2
|
M2_N2
|
||||||
};
|
};
|
||||||
|
|
||||||
struct sink_crc {
|
|
||||||
bool started;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct intel_dp {
|
struct intel_dp {
|
||||||
uint32_t output_reg;
|
uint32_t output_reg;
|
||||||
uint32_t aux_ch_ctl_reg;
|
uint32_t aux_ch_ctl_reg;
|
||||||
@@ -759,7 +755,6 @@ struct intel_dp {
|
|||||||
/* sink rates as reported by DP_SUPPORTED_LINK_RATES */
|
/* sink rates as reported by DP_SUPPORTED_LINK_RATES */
|
||||||
uint8_t num_sink_rates;
|
uint8_t num_sink_rates;
|
||||||
int sink_rates[DP_MAX_SUPPORTED_RATES];
|
int sink_rates[DP_MAX_SUPPORTED_RATES];
|
||||||
struct sink_crc sink_crc;
|
|
||||||
struct drm_dp_aux aux;
|
struct drm_dp_aux aux;
|
||||||
uint8_t train_set[4];
|
uint8_t train_set[4];
|
||||||
int panel_power_up_delay;
|
int panel_power_up_delay;
|
||||||
|
Reference in New Issue
Block a user