diff --git a/src/i810_reg.h b/src/i810_reg.h index 6458008c..e9c03e50 100644 --- a/src/i810_reg.h +++ b/src/i810_reg.h @@ -1577,7 +1577,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ # 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/src/i830_tv.c b/src/i830_tv.c index 4063588b..d02bc114 100644 --- a/src/i830_tv.c +++ b/src/i830_tv.c @@ -1042,7 +1042,8 @@ i830_tv_mode_set(xf86OutputPtr output, DisplayModePtr mode, if (!tv_mode) return; /* can't happen (mode_prepare prevents this) */ - tv_ctl = 0; + tv_ctl = INREG(TV_CTL); + tv_ctl &= TV_CTL_SAVE; switch (dev_priv->type) { default: