Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 329445
b: refs/heads/master
c: 6ed0f79
h: refs/heads/master
i:
  329443: c8d3657
v: v3
  • Loading branch information
Daniel Vetter committed Sep 6, 2012
1 parent e3406a9 commit 72d4668
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 6 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: 7758a11340cc8845509303b0bee60401738da82e
refs/heads/master: 6ed0f796c22cd638fac60f29ff72b3a7a03485e6
22 changes: 22 additions & 0 deletions trunk/drivers/gpu/drm/i915/intel_display.c
Original file line number Diff line number Diff line change
Expand Up @@ -6563,6 +6563,28 @@ static struct drm_crtc_helper_funcs intel_helper_funcs = {
.disable = intel_crtc_disable,
};

bool intel_encoder_check_is_cloned(struct intel_encoder *encoder)
{
struct intel_encoder *other_encoder;
struct drm_crtc *crtc = &encoder->new_crtc->base;

if (WARN_ON(!crtc))
return false;

list_for_each_entry(other_encoder,
&crtc->dev->mode_config.encoder_list,
base.head) {

if (&other_encoder->new_crtc->base != crtc ||
encoder == other_encoder)
continue;
else
return true;
}

return false;
}

static bool intel_encoder_crtc_ok(struct drm_encoder *encoder,
struct drm_crtc *crtc)
{
Expand Down
1 change: 1 addition & 0 deletions trunk/drivers/gpu/drm/i915/intel_drv.h
Original file line number Diff line number Diff line change
Expand Up @@ -454,6 +454,7 @@ extern void intel_crtc_update_dpms(struct drm_crtc *crtc);
extern void intel_encoder_disable(struct drm_encoder *encoder);
extern void intel_encoder_destroy(struct drm_encoder *encoder);
extern void intel_encoder_dpms(struct intel_encoder *encoder, int mode);
extern bool intel_encoder_check_is_cloned(struct intel_encoder *encoder);
extern void intel_connector_dpms(struct drm_connector *, int mode);
extern bool intel_connector_get_hw_state(struct intel_connector *connector);
extern void intel_connector_check_state(struct intel_connector *);
Expand Down
7 changes: 2 additions & 5 deletions trunk/drivers/gpu/drm/i915/intel_tv.c
Original file line number Diff line number Diff line change
Expand Up @@ -910,17 +910,14 @@ intel_tv_mode_fixup(struct drm_encoder *encoder,
const struct drm_display_mode *mode,
struct drm_display_mode *adjusted_mode)
{
struct drm_device *dev = encoder->dev;
struct intel_tv *intel_tv = enc_to_intel_tv(encoder);
const struct tv_mode *tv_mode = intel_tv_mode_find(intel_tv);
struct intel_encoder *other_encoder;

if (!tv_mode)
return false;

for_each_encoder_on_crtc(dev, encoder->crtc, other_encoder)
if (&other_encoder->base != encoder)
return false;
if (intel_encoder_check_is_cloned(&intel_tv->base))
return false;

adjusted_mode->clock = tv_mode->clock;
return true;
Expand Down

0 comments on commit 72d4668

Please sign in to comment.