Eureka, washed out intel GM965 tv-out solved

rglowery at exemail.com.au rglowery at exemail.com.au
Sun Oct 28 01:19:31 PDT 2007


Browsing through i810_reg.h I came across

1573 /** @defgroup TV_CSC_KNOBS
1574  * @{
1575  */
1576 #define TV_CLR_KNOBS            0x68028
1577 /** 2s-complement brightness adjustment */
1578 # define TV_BRIGHTNESS_MASK             0xff000000
1579 # define TV_BRIGHTNESS_SHIFT            24
1580 /** Contrast adjustment, as a 2.6 unsigned floating point number */
1581 # define TV_CONTRAST_MASK               0x00ff0000
1582 # define TV_CONTRAST_SHIFT              16
1583 /** Saturation adjustment, as a 2.6 unsigned floating point number */
1584 # define TV_SATURATION_MASK             0x0000ff00
1585 # define TV_SATURATION_SHIFT            8
1586 /** Hue adjustment, as an integer phase angle in degrees */
1587 # define TV_HUE_MASK                    0x000000ff
1588 # define TV_HUE_SHIFT                   0
1589 /** @} */

This led me to the following patch which solves the problem for me
diff --git a/src/i830_tv.c b/src/i830_tv.c
index ee2538a..5f82188 100644
--- a/src/i830_tv.c
+++ b/src/i830_tv.c
@@ -1178,7 +1178,7 @@ i830_tv_mode_set(xf86OutputPtr output,
DisplayModePtr mode,
            (i830_float_to_csc(color_conversion->bv) << 16) |
            (i830_float_to_luma(color_conversion->av)));

-    OUTREG(TV_CLR_KNOBS, 0x10606000);
+    //OUTREG(TV_CLR_KNOBS, 0x10606000);
     OUTREG(TV_CLR_LEVEL, ((video_levels->black << TV_BLACK_LEVEL_SHIFT) |
                (video_levels->blank << TV_BLANK_LEVEL_SHIFT)));
     {


I guess the BIOS defaults these to something more reasonable.

So the question is what does a brightness of 0x10, and contrast and
saturation of 0x60 mean, and are they a reasonable hard coded default. 
These values should really be made configurable at runtime

-Rob





More information about the xorg mailing list