|
@@ -208,17 +208,8 @@ intel_dp_link_clock(uint8_t link_bw)
|
|
|
*/
|
|
|
|
|
|
static int
|
|
|
-intel_dp_link_required(struct intel_dp *intel_dp, int pixel_clock, int check_bpp)
|
|
|
+intel_dp_link_required(int pixel_clock, int bpp)
|
|
|
{
|
|
|
- struct drm_crtc *crtc = intel_dp->base.base.crtc;
|
|
|
- struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
|
|
|
- int bpp = 24;
|
|
|
-
|
|
|
- if (check_bpp)
|
|
|
- bpp = check_bpp;
|
|
|
- else if (intel_crtc)
|
|
|
- bpp = intel_crtc->bpp;
|
|
|
-
|
|
|
return (pixel_clock * bpp + 9) / 10;
|
|
|
}
|
|
|
|
|
@@ -245,12 +236,11 @@ intel_dp_mode_valid(struct drm_connector *connector,
|
|
|
return MODE_PANEL;
|
|
|
}
|
|
|
|
|
|
- mode_rate = intel_dp_link_required(intel_dp, mode->clock, 0);
|
|
|
+ mode_rate = intel_dp_link_required(mode->clock, 24);
|
|
|
max_rate = intel_dp_max_data_rate(max_link_clock, max_lanes);
|
|
|
|
|
|
if (mode_rate > max_rate) {
|
|
|
- mode_rate = intel_dp_link_required(intel_dp,
|
|
|
- mode->clock, 18);
|
|
|
+ mode_rate = intel_dp_link_required(mode->clock, 18);
|
|
|
if (mode_rate > max_rate)
|
|
|
return MODE_CLOCK_HIGH;
|
|
|
else
|
|
@@ -683,7 +673,7 @@ intel_dp_mode_fixup(struct drm_encoder *encoder, struct drm_display_mode *mode,
|
|
|
int lane_count, clock;
|
|
|
int max_lane_count = intel_dp_max_lane_count(intel_dp);
|
|
|
int max_clock = intel_dp_max_link_bw(intel_dp) == DP_LINK_BW_2_7 ? 1 : 0;
|
|
|
- int bpp = mode->private_flags & INTEL_MODE_DP_FORCE_6BPC ? 18 : 0;
|
|
|
+ int bpp = mode->private_flags & INTEL_MODE_DP_FORCE_6BPC ? 18 : 24;
|
|
|
static int bws[2] = { DP_LINK_BW_1_62, DP_LINK_BW_2_7 };
|
|
|
|
|
|
if (is_edp(intel_dp) && intel_dp->panel_fixed_mode) {
|
|
@@ -701,7 +691,7 @@ intel_dp_mode_fixup(struct drm_encoder *encoder, struct drm_display_mode *mode,
|
|
|
for (clock = 0; clock <= max_clock; clock++) {
|
|
|
int link_avail = intel_dp_max_data_rate(intel_dp_link_clock(bws[clock]), lane_count);
|
|
|
|
|
|
- if (intel_dp_link_required(intel_dp, mode->clock, bpp)
|
|
|
+ if (intel_dp_link_required(mode->clock, bpp)
|
|
|
<= link_avail) {
|
|
|
intel_dp->link_bw = bws[clock];
|
|
|
intel_dp->lane_count = lane_count;
|