Eureka, washed out intel GM965 tv-out solved
rglowery at exemail.com.au
rglowery at exemail.com.au
Sun Oct 28 04:03:51 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.
> ModeDebug shows the TV_CLR_KNOBS registry defaulting to 0x00404000
>
> I'll leave it up to the intel people with doco to determine what the
> appropriate fix is.
Sorry for the multiple posts, but it looks like the TV_CLR_KNOBS register
is not initialized by the BIOS if a DVI display is also connected, so for
me, the patch to resolve the washed out colours regardless of the
connected devices is
diff --git a/src/i830_tv.c b/src/i830_tv.c
index ee2538a..e6d2ee5 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, 0x00404000);
OUTREG(TV_CLR_LEVEL, ((video_levels->black << TV_BLACK_LEVEL_SHIFT) |
(video_levels->blank << TV_BLANK_LEVEL_SHIFT)));
{
>
>>
>> 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
>>
>>
>> _______________________________________________
>> xorg mailing list
>> xorg at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/xorg
>>
>
>
> _______________________________________________
> xorg mailing list
> xorg at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/xorg
>
More information about the xorg
mailing list