|
@@ -820,6 +820,7 @@ intel_dp_set_m_n(struct drm_crtc *crtc, struct drm_display_mode *mode,
|
|
|
struct intel_link_m_n m_n;
|
|
|
int pipe = intel_crtc->pipe;
|
|
|
enum transcoder cpu_transcoder = intel_crtc->cpu_transcoder;
|
|
|
+ int target_clock;
|
|
|
|
|
|
/*
|
|
|
* Find the lane count in the intel_encoder private
|
|
@@ -835,13 +836,22 @@ intel_dp_set_m_n(struct drm_crtc *crtc, struct drm_display_mode *mode,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ target_clock = mode->clock;
|
|
|
+ for_each_encoder_on_crtc(dev, crtc, intel_encoder) {
|
|
|
+ if (intel_encoder->type == INTEL_OUTPUT_EDP) {
|
|
|
+ target_clock = intel_edp_target_clock(intel_encoder,
|
|
|
+ mode);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/*
|
|
|
* Compute the GMCH and Link ratios. The '3' here is
|
|
|
* the number of bytes_per_pixel post-LUT, which we always
|
|
|
* set up for 8-bits of R/G/B, or 3 bytes total.
|
|
|
*/
|
|
|
intel_link_compute_m_n(intel_crtc->bpp, lane_count,
|
|
|
- mode->clock, adjusted_mode->clock, &m_n);
|
|
|
+ target_clock, adjusted_mode->clock, &m_n);
|
|
|
|
|
|
if (IS_HASWELL(dev)) {
|
|
|
I915_WRITE(PIPE_DATA_M1(cpu_transcoder),
|