|
From: Petr V. <VAN...@vc...> - 2001-10-25 22:53:02
|
On 25 Oct 01 at 22:32, Carlo E. Prelz wrote:
> fvs.yres=fvs.yres_virtual=576;
> fvs.vmode=FB_VMODE_INTERLACED;
>
> and I have a good image - exactly what I needed.
> I have one problem, though... I would like to use both screens of a
> Matrox G450 with two independent framebuffers. Well, the first (main)
> screen is set correctly, but it seems that the second one does not
> accept to go interlaced. Is this something well-known? Am I forgetting
> something?
Well, documentation says that it is possible, but I thought that nobody
uses interlaced picture now... If you want to do some experiments, you
can try:
(0) make sure that yres+upper+lower+vslen is odd
(1) set bit 25 (0x02000000) in register 0x3C10 (== enable interlace)
(2) program register 0x3C28 with start of even field (== leave current value)
(3) program register 0x3C2C with start of odd field (== 0x3C28+vxres*bpp/8)
(4) program register 0x3C40 with value twice as large as currently
(== line offset)
and you'll see. I'm not sure whether step (4) is needed or not, documentation
is not clear on this.
If you'll manage to create patch, please send it to me.
Best regards,
Petr Vandrovec
van...@vc...
|
|
From: Petr V. <VAN...@vc...> - 2001-10-26 11:15:46
|
On 26 Oct 01 at 13:04, Carlo E. Prelz wrote:
> Quoting Petr Vandrovec (VAN...@vc...):
>
> > Well, documentation says that it is possible, but I thought that nobody
> > uses interlaced picture now... If you want to do some experiments, you
> > can try:
> >
> > (0) make sure that yres+upper+lower+vslen is odd
> > (1) set bit 25 (0x02000000) in register 0x3C10 (== enable interlace)
> > (2) program register 0x3C28 with start of even field (== leave current value)
> > (3) program register 0x3C2C with start of odd field (== 0x3C28+vxres*bpp/8)
> > (4) program register 0x3C40 with value twice as large as currently
> > (== line offset)
> >
> > and you'll see. I'm not sure whether step (4) is needed or not, documentation
> > is not clear on this.
>
> First of all thanks. I won't be able to experiment on this for at
> least 1 week. But I would like your advice about how best to
> proceed. I mean, can these values be changed at will, or once at the
> loading of the module? Is it wise to just set the second screen to
> interlace at the beginning (possibly with a module parameter) or to
> switch to/from interlace with some sort of ioctl?
All changes should be limited to matroxfb_dh_restore() in
drivers/video/matrox/matroxfb_crtc2.c.
Before line ~133 apply (by hand):
+ if (mt->interlaced) tmp |= 0x02000000;
mga_outl(0x3C10, tmp | 0x10000000);
...
mga_outl(0x3C28, pos);
+ {
+ u_int32_t linelen = p->var.xres_virtual * (p->var.bits_per_pixel >> 3);
+ if (mt->interlaced) {
+ mga_outl(0x3C2C, pos + linelen);
+ linelen *= 2;
+ }
+ mga_outl(0x3C40, linelen);
+ }
- mga_outl(0x3C40, p->var.xres_virtual * (p->var.bits_per_pixel >> 3));
and unless I missed something somewhere, it should work.
Petr Vandrovec
van...@vc...
|
|
From: Carlo E. P. <fl...@fl...> - 2001-10-26 20:11:36
|
Subject: Re: [Linux-fbdev-devel] Fixed-frequency monitor, and G45 se
Date: Fri, Oct 26, 2001 at 01:15:21PM +0000
Quoting Petr Vandrovec (VAN...@vc...):
> All changes should be limited to matroxfb_dh_restore() in
> drivers/video/matrox/matroxfb_crtc2.c.
>
> Before line ~133 apply (by hand):
>
> + if (mt->interlaced) tmp |= 0x02000000;
> mga_outl(0x3C10, tmp | 0x10000000);
> ...
> mga_outl(0x3C28, pos);
> + {
> + u_int32_t linelen = p->var.xres_virtual * (p->var.bits_per_pixel >> 3);
> + if (mt->interlaced) {
> + mga_outl(0x3C2C, pos + linelen);
> + linelen *= 2;
> + }
> + mga_outl(0x3C40, linelen);
> + }
> - mga_outl(0x3C40, p->var.xres_virtual * (p->var.bits_per_pixel >> 3));
>
> and unless I missed something somewhere, it should work.
I am very thankful for your help. Sadly I have no time now to
investigate further the situation. I patched matroxfb_crtc2.c,
recompiled the kernel, rebooted, but still, when my configuration is
applied to video output#1 it generates a signal with 16.0 kHz horiz
and 51 Hz vert, but when applied to video output#2 it generates a
signal with 13.2 kHz horiz and 21 Hz vert...
I will go on exploring this problem one week from now. Now I must
pack...
Thanks again
Carlo
--
* Se la Strada e la sua Virtu' non fossero state messe da parte,
* K * Carlo E. Prelz - fl...@fl... che bisogno ci sarebbe
* di parlare tanto di amore e di rettitudine? (Chuang-Tzu)
|
|
From: Carlo E. P. <fl...@fl...> - 2001-10-26 11:04:39
|
Subject: Re: [Linux-fbdev-devel] Fixed-frequency monitor, and G45 se Date: Fri, Oct 26, 2001 at 12:52:13AM +0000 Quoting Petr Vandrovec (VAN...@vc...): > Well, documentation says that it is possible, but I thought that nobody > uses interlaced picture now... If you want to do some experiments, you > can try: > > (0) make sure that yres+upper+lower+vslen is odd > (1) set bit 25 (0x02000000) in register 0x3C10 (== enable interlace) > (2) program register 0x3C28 with start of even field (== leave current value) > (3) program register 0x3C2C with start of odd field (== 0x3C28+vxres*bpp/8) > (4) program register 0x3C40 with value twice as large as currently > (== line offset) > > and you'll see. I'm not sure whether step (4) is needed or not, documentation > is not clear on this. First of all thanks. I won't be able to experiment on this for at least 1 week. But I would like your advice about how best to proceed. I mean, can these values be changed at will, or once at the loading of the module? Is it wise to just set the second screen to interlace at the beginning (possibly with a module parameter) or to switch to/from interlace with some sort of ioctl? > If you'll manage to create patch, please send it to me. I will. Carlo -- * Se la Strada e la sua Virtu' non fossero state messe da parte, * K * Carlo E. Prelz - fl...@fl... che bisogno ci sarebbe * di parlare tanto di amore e di rettitudine? (Chuang-Tzu) |