Hooray!  I'm using an MSI Slim PC (MS-6215) with its integrated i815
connected to a television and I experienced this issue of video playback
incorrectly offset.  I applied Matthew's patch to XFree86 4.1.0 and it
worked!  Thanks, Matthew.

I noticed that the patch still isn't entered into CVS.  Someone please
put it in so that future generations may benefit.  Here is the patch
against version 1.68 of i810_driver.c:

--- i810_driver.c       Fri May 10 05:50:05 2002
+++ i810_driver.c-patched       Mon May 13 20:29:06 2002
@@ -1522,8 +1522,11 @@
    }
 
    /* OVRACT Register */
-  i810Reg->OverlayActiveStart = mode->CrtcHTotal - 32;
-  i810Reg->OverlayActiveEnd = mode->CrtcHDisplay - 32;
+   {
+      unsigned int temp = INREG(0x60000);
+      i810Reg->OverlayActiveStart = (temp>>16) - 31;
+      i810Reg->OverlayActiveEnd = (temp & 0x3ff) - 31;
+   }
 

    /* Turn on interlaced mode if necessary */

Note that I haven't tested this on version 1.68, I tested it on the Red
Hat version of 4.1.0.  The original thread discussing this issue starts
here: http://www.xfree86.org/pipermail/xpert/2001-November/013420.html

Christer, I notice in your message below you asked for wish-list items. 
I don't know whether this is appropriate or not but I would like some
way to adjust the overscan settings for the TV-out to reduce the width
of the black border around the image.  Am I asking the right person?

-Sam

-----Original Message-----
Christer,
I think you have correctly identified the issue. The timings in the 
LCD/TV registers don't match the timings that are being used to 
calculate the Overlay Active offsets.

Try this.... it should work

unsigned int temp = INREG(0x60000);
i810Reg->OverlayActiveStart = (temp>>16) - 31;
i810Reg->OverlayActiveEnd = (temp & 0x3ff) - 31;

-Matt




-----Original Message-----
From: Christer Palm [mailto:[EMAIL PROTECTED]]
Sent: Friday, January 18, 2002 6:06 PM
To: [EMAIL PROTECTED]
Cc: Sottek, Matthew J
Subject: Re: [Xpert]i815 overlay output revisited


OK, I now understand (I think) why this (and other related things) 
doesn't work as I expect...

I now realize that the i815 has a separate set of registers for the 
digital out timing. The i810 driver never touches those registers, so 
they will be left at the default 800x600 mode programmed by the BIOS at 
system initialization. This also explains why I at all get a picture on 
the TV regardless of the X11 modeline, even though the driver never 
talks to the TV chip, which has puzzled me for a while.

I'm adding this stuff to the driver right now. My goal is to keep the 
TV-out chip stuff generic, so that it could be used with other 
drivers/TV-out chips as well. Suggestions and wish-list items are
welcome!

-- 
Christer Palm


_______________________________________________
Xpert mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/xpert

Reply via email to