Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 179332
b: refs/heads/master
c: 885a5fb
h: refs/heads/master
v: v3
  • Loading branch information
Zhenyu Wang authored and Eric Anholt committed Jan 15, 2010
1 parent 3e31771 commit acc44a0
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 5 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 500a8cc466a24e2fbc4c86ef9c6467ae2ffdeb0c
refs/heads/master: 885a5fb5b120a5c7e0b3baad7b0feb5a89f76c18
15 changes: 15 additions & 0 deletions trunk/drivers/gpu/drm/i915/intel_display.c
Original file line number Diff line number Diff line change
Expand Up @@ -2924,6 +2924,21 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
temp |= PIPE_8BPC;
else
temp |= PIPE_6BPC;
} else if (is_edp) {
switch (dev_priv->edp_bpp/3) {
case 8:
temp |= PIPE_8BPC;
break;
case 10:
temp |= PIPE_10BPC;
break;
case 6:
temp |= PIPE_6BPC;
break;
case 12:
temp |= PIPE_12BPC;
break;
}
} else
temp |= PIPE_8BPC;
I915_WRITE(pipeconf_reg, temp);
Expand Down
16 changes: 12 additions & 4 deletions trunk/drivers/gpu/drm/i915/intel_dp.c
Original file line number Diff line number Diff line change
Expand Up @@ -125,9 +125,15 @@ intel_dp_link_clock(uint8_t link_bw)

/* I think this is a fiction */
static int
intel_dp_link_required(int pixel_clock)
intel_dp_link_required(struct drm_device *dev,
struct intel_output *intel_output, int pixel_clock)
{
return pixel_clock * 3;
struct drm_i915_private *dev_priv = dev->dev_private;

if (IS_eDP(intel_output))
return (pixel_clock * dev_priv->edp_bpp) / 8;
else
return pixel_clock * 3;
}

static int
Expand All @@ -138,7 +144,8 @@ intel_dp_mode_valid(struct drm_connector *connector,
int max_link_clock = intel_dp_link_clock(intel_dp_max_link_bw(intel_output));
int max_lanes = intel_dp_max_lane_count(intel_output);

if (intel_dp_link_required(mode->clock) > max_link_clock * max_lanes)
if (intel_dp_link_required(connector->dev, intel_output, mode->clock)
> max_link_clock * max_lanes)
return MODE_CLOCK_HIGH;

if (mode->clock < 10000)
Expand Down Expand Up @@ -492,7 +499,8 @@ 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_link_clock(bws[clock]) * lane_count;

if (intel_dp_link_required(mode->clock) <= link_avail) {
if (intel_dp_link_required(encoder->dev, intel_output, mode->clock)
<= link_avail) {
dp_priv->link_bw = bws[clock];
dp_priv->lane_count = lane_count;
adjusted_mode->clock = intel_dp_link_clock(dp_priv->link_bw);
Expand Down

0 comments on commit acc44a0

Please sign in to comment.