Re: problem with i830M interlaced VGA output (915G works fine)

2008-10-07 Thread Thomas Hilber
On Tue, Oct 07, 2008 at 03:55:19PM +0200, walter harms wrote:
> can you produce a testcase ?

simply apply the patch above to xf86-video-intel and run the given
modeline. It will give you a progressive modeline. 

> i have a notebook with i830m maybe we can use that program to test other 
> chipsets also
> and establish what chips a capable. Sometimes these features are simply 
> undocumented.

But as we now know with Keith's help it's not an undocumented but an
not-implemented feature of i830m. As I noted in an other post
i810e, 915G, 945G, 965GM chipsets are running well. 

So I think all that could be done has already been done?

- Thomas

___
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg


Re: problem with i830M interlaced VGA output (915G works fine)

2008-10-07 Thread walter harms


Thomas Hilber schrieb:
> On Mon, Oct 06, 2008 at 09:58:57AM -0700, Keith Packard wrote:
>> On Sun, 2008-10-05 at 09:21 +0200, Thomas Hilber wrote:
>>> Hi list,
>>>
>>> with the attached patch and xorg.conf I successfully use interlaced modes
>>> like 720x576i on a 915G chipset. For an i830M this unfortunately does not
>>> yet work completely. First of all thanks to Keith Packard and 
>>> Krzysztof Halasa for their basic PIPEACONF investigations posted here:
>> I845 and earlier chips (I didn't look at the i855 or i865) do not
>> support interlaced display at all.
> 
> but it's quite strange. Even my i810 is running in
> interlaced mode (i.e. 720x576i) with exactly the patch above with no
> problems at all.
> 
> OK, but if there is an 'interlace gap' between and including i830 - i865 then
> I will stop to find a solution for this issue.
> 
> anyway, thank you for your answer!
> 
>

can you produce a testcase ?
i have a notebook with i830m maybe we can use that program to test other 
chipsets also
and establish what chips a capable. Sometimes these features are simply 
undocumented.

re,
 wh
___
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg


Re: problem with i830M interlaced VGA output (915G works fine)

2008-10-07 Thread Thomas Hilber
On Mon, Oct 06, 2008 at 01:09:55PM -0700, Keith Packard wrote:
> Yup, I read through the hardware docs for i845 and compared them with
> i945 -- all of the places where the i945 says 'for interlaced modes, do
> ' just don't exist in the i845 docs.

thank you very much for reading through the hardware docs! This saved
me a lot of further experimenting.

> Btw, let us know when you're happy with the interlaced mode support and
> we'll stick it into the upstream driver sources. Not that we like to
> encourage people to use interlaced modes, but there are times when it's
> the only option.

I would really appreciate upstream interlaced mode support on VGA/DVI
for several reasons:

- the patch above (originating from Krzysztof Halasa) works fine for 
  at least i810e, 915G, 945G, 965GM chipsets
- adding interlaced mode support won't break existing applications
- for boards like Intel D945GCLF this is the only way to connect a SCART
  TV-device without the need for additional hardware
- signal quality on VGA/RGB is superior to S-VIDEO
- support for variable frame rates allowing to deinterlace by display hardware:

As mentioned here:

http://lists.freedesktop.org/archives/xorg/2008-September/038296.html

I wrote a patch for older ATI-radeon type cards, which synchronizes
VGA/DVI output timing with external signals. This is an essential feature 
for jerkyless playback of live TV. I'm currently porting this to intel
9xx-class hardware hoping it will work there as flawless as on radeons. 

Cheers
  Thomas
___
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg


Re: problem with i830M interlaced VGA output (915G works fine)

2008-10-06 Thread Keith Packard
On Mon, 2008-10-06 at 19:27 +0200, Thomas Hilber wrote:

> but it's quite strange. Even my i810 is running in
> interlaced mode (i.e. 720x576i) with exactly the patch above with no
> problems at all.

Yeah, i810 is completely different than i830 and later. And, for some
reason, i830 has no interlaced display support.

> OK, but if there is an 'interlace gap' between and including i830 - i865 then
> I will stop to find a solution for this issue.

Yup, I read through the hardware docs for i845 and compared them with
i945 -- all of the places where the i945 says 'for interlaced modes, do
' just don't exist in the i845 docs.

Btw, let us know when you're happy with the interlaced mode support and
we'll stick it into the upstream driver sources. Not that we like to
encourage people to use interlaced modes, but there are times when it's
the only option.

-- 
[EMAIL PROTECTED]


signature.asc
Description: This is a digitally signed message part
___
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg

Re: problem with i830M interlaced VGA output (915G works fine)

2008-10-06 Thread Thomas Hilber
On Mon, Oct 06, 2008 at 09:58:57AM -0700, Keith Packard wrote:
> On Sun, 2008-10-05 at 09:21 +0200, Thomas Hilber wrote:
> > Hi list,
> > 
> > with the attached patch and xorg.conf I successfully use interlaced modes
> > like 720x576i on a 915G chipset. For an i830M this unfortunately does not
> > yet work completely. First of all thanks to Keith Packard and 
> > Krzysztof Halasa for their basic PIPEACONF investigations posted here:
> 
> I845 and earlier chips (I didn't look at the i855 or i865) do not
> support interlaced display at all.

but it's quite strange. Even my i810 is running in
interlaced mode (i.e. 720x576i) with exactly the patch above with no
problems at all.

OK, but if there is an 'interlace gap' between and including i830 - i865 then
I will stop to find a solution for this issue.

anyway, thank you for your answer!

- Thomas

___
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg


Re: problem with i830M interlaced VGA output (915G works fine)

2008-10-06 Thread Keith Packard
On Sun, 2008-10-05 at 09:21 +0200, Thomas Hilber wrote:
> Hi list,
> 
> with the attached patch and xorg.conf I successfully use interlaced modes
> like 720x576i on a 915G chipset. For an i830M this unfortunately does not
> yet work completely. First of all thanks to Keith Packard and 
> Krzysztof Halasa for their basic PIPEACONF investigations posted here:

I845 and earlier chips (I didn't look at the i855 or i865) do not
support interlaced display at all.

-- 
[EMAIL PROTECTED]


signature.asc
Description: This is a digitally signed message part
___
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg

problem with i830M interlaced VGA output (915G works fine)

2008-10-05 Thread Thomas Hilber
Hi list,

with the attached patch and xorg.conf I successfully use interlaced modes
like 720x576i on a 915G chipset. For an i830M this unfortunately does not
yet work completely. First of all thanks to Keith Packard and 
Krzysztof Halasa for their basic PIPEACONF investigations posted here:

http://lists.freedesktop.org/archives/xorg/2007-January/021271.html

I dug deeper into this:

Video mode setup is done by the same function i830_crtc_mode_set() for 
both i830M and 915G. To PIPEACONF register of both chipsets the same
value is written to by:

OUTREG(PIPEACONF, PIPEACONF_ENABLE | PIPECONF_INTERLACE_W_FIELD_INDICATION);

It reads back the same value on a 915G where the interlaced mode works fine.
But it reads back only as

PIPEACONF_ENABLE

on an i830M chipset. The other bits of this register probably are reserved
there and thus are cleared. This makes me believe that 
PIPECONF_INTERLACE_W_FIELD_INDICATION is not implemented on i830M hardware. 

All the other register initialization needed for i830M interlaced mode 
setup appears to work already. I exactly get the correct timings there but
they are progressive.

So I think there is just a tiny little thing missing which keeps my i830M
from operating in interlaced mode.

My question:
Does anybody have information what register to program to put an i830M
into interlaced mode?

It must to be something equivalent to

/* for i810 chipset */
#define INTERLACE_ENABLE 0x80
i810Reg->InterlaceControl = INTERLACE_ENABLE;

or

/* for 9xx-class chipsets */
#define PIPECONF_INTERLACE_W_FIELD_INDICATION (6 << 21)
OUTREG(PIPEACONF, PIPEACONF_ENABLE | PIPECONF_INTERLACE_W_FIELD_INDICATION);

Thanks in advance
   Thomas

diff -ur xserver-xorg-video-intel-2.4.2.org/src/i810_driver.c 
xserver-xorg-video-intel-2.4.2/src/i810_driver.c
--- xserver-xorg-video-intel-2.4.2.org/src/i810_driver.c2008-10-02 
18:56:10.0 +0200
+++ xserver-xorg-video-intel-2.4.2/src/i810_driver.c2008-10-02 
20:31:37.0 +0200
@@ -2857,7 +2857,9 @@
 xf86DrvMsg(scrnIndex, X_PROBED,
"Removing interlaced mode \"%s\"\n", mode->name);
   }
+#if 0 /* allow interlaced mode */
   return MODE_BAD;
+#endif
}
return MODE_OK;
 }
diff -ur xserver-xorg-video-intel-2.4.2.org/src/i830_crt.c 
xserver-xorg-video-intel-2.4.2/src/i830_crt.c
--- xserver-xorg-video-intel-2.4.2.org/src/i830_crt.c   2008-03-26 
03:15:53.0 +0100
+++ xserver-xorg-video-intel-2.4.2/src/i830_crt.c   2008-10-02 
20:31:37.0 +0200
@@ -87,7 +87,7 @@
 if (pMode->Flags & V_DBLSCAN)
return MODE_NO_DBLESCAN;
 
-if (pMode->Clock > 40 || pMode->Clock < 25000)
+if (pMode->Clock > 40 || pMode->Clock < 12000)
return MODE_CLOCK_RANGE;
 
 return MODE_OK;
@@ -446,7 +446,7 @@
   (1 << I830_OUTPUT_DVO_TMDS));
 
 output->driver_private = i830_output;
-output->interlaceAllowed = FALSE;
+output->interlaceAllowed = TRUE;
 output->doubleScanAllowed = FALSE;
 
 /* Set up the DDC bus. */
diff -ur xserver-xorg-video-intel-2.4.2.org/src/i830_display.c 
xserver-xorg-video-intel-2.4.2/src/i830_display.c
--- xserver-xorg-video-intel-2.4.2.org/src/i830_display.c   2008-10-02 
18:56:10.0 +0200
+++ xserver-xorg-video-intel-2.4.2/src/i830_display.c   2008-10-02 
20:31:37.0 +0200
@@ -71,7 +71,7 @@
 intel_p2_t p2;
 } intel_limit_t;
 
-#define I8XX_DOT_MIN 25000
+#define I8XX_DOT_MIN 12000
 #define I8XX_DOT_MAX35
 #define I8XX_VCO_MIN93
 #define I8XX_VCO_MAX   140
@@ -95,9 +95,9 @@
 #define I8XX_P2_LVDS_FAST7
 #define I8XX_P2_SLOW_LIMIT  165000
 
-#define I9XX_DOT_MIN 2
+#define I9XX_DOT_MIN 12000
 #define I9XX_DOT_MAX40
-#define I9XX_VCO_MIN   140
+#define I9XX_VCO_MIN   100
 #define I9XX_VCO_MAX   280
 
 /* Haven't found any reason to go this fast, but newer chips support it */
@@ -495,7 +495,7 @@
return FALSE;
 if (crtc->enabled)
return FALSE;
-xf86SetModeCrtc (&mode, INTERLACE_HALVE_V);
+xf86SetModeCrtc (&mode, 0);
 crtc->funcs->mode_set (crtc, &mode, &mode, 0, 0);
 crtc->funcs->dpms (crtc, DPMSModeOn);
 return TRUE;
@@ -962,8 +962,16 @@
 
 static Bool
 i830_crtc_mode_fixup(xf86CrtcPtr crtc, DisplayModePtr mode,
-DisplayModePtr adjusted_mode)
+DisplayModePtr ajd_mode)
 {
+if (mode->Flags & V_INTERLACE) {
+   mode->CrtcVDisplay = ajd_mode->CrtcVDisplay = mode->VDisplay;
+   mode->CrtcVSyncStart = ajd_mode->CrtcVSyncStart = mode->VSyncStart;
+   mode->CrtcVSyncEnd = ajd_mode->CrtcVSyncEnd = mode->VSyncEnd;
+   mode->CrtcVBlankStart = ajd_mode->CrtcVBlankStart = mode->CrtcVDisplay;
+   mode->CrtcVBlankEnd = ajd_mode->CrtcVBlankEnd = mode->VTotal;
+   mode->CrtcVTotal = ajd_mode->CrtcVTotal = mode->VTotal;
+