> Fix TV control save register for untouched bits, and color > knobs different definition for 945 and 965 chips. > > Signed-off-by: Zhenyu Wang <zhenyu.z.w...@intel.com> > --- > drivers/gpu/drm/i915/i915_reg.h | 2 +- > drivers/gpu/drm/i915/intel_tv.c | 11 ++++++++--- > 2 files changed, 9 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_reg.h > b/drivers/gpu/drm/i915/i915_reg.h > index 9d6539a..0ae0274 100644 > --- a/drivers/gpu/drm/i915/i915_reg.h > +++ b/drivers/gpu/drm/i915/i915_reg.h > @@ -855,7 +855,7 @@ > */ > # define TV_ENC_C0_FIX (1 << 10) > /** Bits that must be preserved by software */ > -# define TV_CTL_SAVE ((3 << 8) | (3 << 6)) > +# define TV_CTL_SAVE ((1 << 11) | (3 << 9) | (7 << 6) | 0xf) > # define TV_FUSE_STATE_MASK (3 << 4) > /** Read-only state that reports all features enabled */ > # define TV_FUSE_STATE_ENABLED (0 << 4) > diff --git a/drivers/gpu/drm/i915/intel_tv.c > b/drivers/gpu/drm/i915/intel_tv.c > index 21cddea..5c406a1 100644 > --- a/drivers/gpu/drm/i915/intel_tv.c > +++ b/drivers/gpu/drm/i915/intel_tv.c > @@ -1135,7 +1135,8 @@ intel_tv_mode_set(struct drm_encoder *encoder, > struct drm_display_mode *mode, > if (!tv_mode) > return; /* can't happen (mode_prepare prevents this) */ > > - tv_ctl = 0; > + tv_ctl = I915_READ(TV_CTL); > + tv_ctl &= TV_CTL_SAVE; > > switch (tv_priv->type) { > default: > @@ -1215,7 +1216,6 @@ intel_tv_mode_set(struct drm_encoder *encoder, > struct drm_display_mode *mode, > /* dda1 implies valid video levels */ > if (tv_mode->dda1_inc) { > scctl1 |= TV_SC_DDA1_EN; > - scctl1 |= video_levels->burst << TV_BURST_LEVEL_SHIFT; > } > > if (tv_mode->dda2_inc) > @@ -1225,6 +1225,7 @@ intel_tv_mode_set(struct drm_encoder *encoder, > struct drm_display_mode *mode, > scctl1 |= TV_SC_DDA3_EN; > > scctl1 |= tv_mode->sc_reset; > + scctl1 |= video_levels->burst << TV_BURST_LEVEL_SHIFT; > scctl1 |= tv_mode->dda1_inc << TV_SCDDA1_INC_SHIFT; > > scctl2 = tv_mode->dda2_size << TV_SCDDA2_SIZE_SHIFT | > @@ -1266,7 +1267,11 @@ intel_tv_mode_set(struct drm_encoder *encoder, > struct drm_display_mode *mode, > color_conversion->av); > } > > - I915_WRITE(TV_CLR_KNOBS, 0x00606000); > + if (IS_I965G(dev)) > + I915_WRITE(TV_CLR_KNOBS, 0x00404000); > + else > + I915_WRITE(TV_CLR_KNOBS, 0x00606000); > + > if (video_levels) > I915_WRITE(TV_CLR_LEVEL, > ((video_levels->black << TV_BLACK_LEVEL_SHIFT) |
This is out of sync now that the following is committed http://cgit.freedesktop.org/xorg/driver/xf86-video-intel/commit/?id=42e34e90e2e4048b38481cab61cef46f932eada7 > -- > 1.5.6.5 > > _______________________________________________ > Intel-gfx mailing list > intel-...@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx > ------------------------------------------------------------------------------ Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise -Strategies to boost innovation and cut costs with open source participation -Receive a $600 discount off the registration fee with the source code: SFAD http://p.sf.net/sfu/XcvMzF8H -- _______________________________________________ Dri-devel mailing list Dri-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/dri-devel