Re: RivaFB and GeForce FX

2005-03-05 Thread Alan Jenkins
> I've tried adding the format and vpllB but I can't see any difference.

...

> I'll get 2.6.6 (the version your patch applies to) and try with and
> without your full patch.  Hopefully I'll be able to see the difference.
> Otherwise I might have to ask you to try the trivial and full patches
> I'm using for 2.6.11.

I see gross screen corruption without the full patch on 2.6.6, but this
is gone in 2.6.11. 

I suspect I am preempting someone elses work, but they haven't (yet)
come forward, and as I said I haven't been able to get in touch with the
drivers maintainer.  I'll ask the framebuffer layer maintainer about it.
I've not CC'd him in this email because my habit of stripping quotes has
left it without context.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: RivaFB and GeForce FX

2005-03-05 Thread Alan Jenkins
> Dude you completely forgot the important parts of the code!!
> Sorry I didn't reply to you in that previous e-mail before, I was
> busy, but those vplB and 'format' stuff WAS important, without it, I
> got strange distortions on screen and refreshes were "lagged"... The
> ONLY things you can remove from my patch is the debugging stuff, the
> cursor stuff, and those 2 lines which I commented out in fbdev.c . All
> the rest, HAS to stay, without it rivafb on GeforceFX 5200 (what I
> have) just doesn't work RIGHT. It "works", but it's awful.
> 
> - ods15

Oops.  I defer to your experience.  I didn't notice that much wrong with
it, but definitely something that looked like lagging refreshes - I
described it in more detail in the previous message.

The important parts of the code need reworking to fit in with subsequent
changes.  I'm up for that, but I may need some help in terms of
maintaining good taste; the NV_ARCH_30 case may need to be separated out
a little more than it is at the moment.  I'll post again when I have
something working right.

I owe you an apology; I could not expect you to reply to my query about
the vpllB stuff immediately, and I should have waited until you had.

Also, given that we both tried this on the GeForce FX 5200, and the
single FX card supported under 2.6.11 is a the Mac version of the
GeForce FX GO 5200, it might be a good idea to limit the cards to the
5200 series for the time being.

Yours apologetically,
Alan

PS The email I sent the maintainer bounced anyway


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


RivaFB and GeForce FX

2005-03-05 Thread Alan Jenkins
I asked on LKML about extending the list of supported cards for the
rivafb driver to include GeForce/Quadro FX boards.  I suspect the lack
of response was down to two factors:

a) Not addressing the maintainer
b) Lack of a patch

Hence this email!

Without this patch, the only supported FX board is the GeForce FX GO
5200.  However, I am able to use rivafb on my GeForce FX 5200 by simply
adding it to the list of supported cards.

Part of the code suggests that more FX boards will work:

switch (pd->device & 0x0ff0) {

...

case 0x0300:   /* GeForceFX 5800 */
case 0x0310:   /* GeForceFX 5600 */
case 0x0320:   /* GeForceFX 5200 */
case 0x0330:   /* GeForceFX 5900 */
case 0x0340:   /* GeForceFX 5700 */
 arch =  NV_ARCH_30;
 break;

...

}

IMHO we should allow people to test this suggestion :).  I therefore
attach patches which enables rivafb to be used on all cards with PCI ids
in the above range.  I considered adding an experimental configuration
option, but I didn't think that would be welcome.  

More selective alternatives are possible, and a warning of some sort may
be in order.  I am happy to revise the patch in any way.

Alan


--- linux-2.6.11/drivers/video/riva/fbdev.c	2005-03-04 10:46:21.0 +
+++ linux-2.6.11-rivafb/drivers/video/riva/fbdev.c	2005-03-05 11:04:29.0 +
@@ -195,8 +195,84 @@
 	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
 	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO4_700XGL,
 	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5800_ULTRA,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5800,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO_FX_2000,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO_FX_1000,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5600_ULTRA,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5600,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5600_XT,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO_5600,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO_5650,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO_FX_GO_700,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5200,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5200_ULTRA,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5200_1,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5200_XT,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
 	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO_5200,
 	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO_5250,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5500,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5100,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO_5200_1,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO_5200_MAC,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO_FX_GO_500_600,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO_5300,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO_5100,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5900_ULTRA,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5900,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5900_XT,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5950_ULTRA,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5900_ZT,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5700_ULTRA,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO_FX_3000,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO_FX_700,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5700_ULTRA,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_

RivaFB and GeForce FX

2005-03-05 Thread Alan Jenkins
I asked on LKML about extending the list of supported cards for the
rivafb driver to include GeForce/Quadro FX boards.  I suspect the lack
of response was down to two factors:

a) Not addressing the maintainer
b) Lack of a patch

Hence this email!

Without this patch, the only supported FX board is the GeForce FX GO
5200.  However, I am able to use rivafb on my GeForce FX 5200 by simply
adding it to the list of supported cards.

Part of the code suggests that more FX boards will work:

switch (pd-device  0x0ff0) {

...

case 0x0300:   /* GeForceFX 5800 */
case 0x0310:   /* GeForceFX 5600 */
case 0x0320:   /* GeForceFX 5200 */
case 0x0330:   /* GeForceFX 5900 */
case 0x0340:   /* GeForceFX 5700 */
 arch =  NV_ARCH_30;
 break;

...

}

IMHO we should allow people to test this suggestion :).  I therefore
attach patches which enables rivafb to be used on all cards with PCI ids
in the above range.  I considered adding an experimental configuration
option, but I didn't think that would be welcome.  

More selective alternatives are possible, and a warning of some sort may
be in order.  I am happy to revise the patch in any way.

Alan


--- linux-2.6.11/drivers/video/riva/fbdev.c	2005-03-04 10:46:21.0 +
+++ linux-2.6.11-rivafb/drivers/video/riva/fbdev.c	2005-03-05 11:04:29.0 +
@@ -195,8 +195,84 @@
 	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
 	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO4_700XGL,
 	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5800_ULTRA,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5800,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO_FX_2000,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO_FX_1000,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5600_ULTRA,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5600,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5600_XT,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO_5600,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO_5650,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO_FX_GO_700,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5200,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5200_ULTRA,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5200_1,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5200_XT,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
 	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO_5200,
 	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO_5250,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5500,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5100,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO_5200_1,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO_5200_MAC,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO_FX_GO_500_600,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO_5300,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO_5100,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5900_ULTRA,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5900,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5900_XT,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5950_ULTRA,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5900_ZT,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5700_ULTRA,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO_FX_3000,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO_FX_700,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5700_ULTRA,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5700

Re: RivaFB and GeForce FX

2005-03-05 Thread Alan Jenkins
 Dude you completely forgot the important parts of the code!!
 Sorry I didn't reply to you in that previous e-mail before, I was
 busy, but those vplB and 'format' stuff WAS important, without it, I
 got strange distortions on screen and refreshes were lagged... The
 ONLY things you can remove from my patch is the debugging stuff, the
 cursor stuff, and those 2 lines which I commented out in fbdev.c . All
 the rest, HAS to stay, without it rivafb on GeforceFX 5200 (what I
 have) just doesn't work RIGHT. It works, but it's awful.
 
 - ods15

Oops.  I defer to your experience.  I didn't notice that much wrong with
it, but definitely something that looked like lagging refreshes - I
described it in more detail in the previous message.

The important parts of the code need reworking to fit in with subsequent
changes.  I'm up for that, but I may need some help in terms of
maintaining good taste; the NV_ARCH_30 case may need to be separated out
a little more than it is at the moment.  I'll post again when I have
something working right.

I owe you an apology; I could not expect you to reply to my query about
the vpllB stuff immediately, and I should have waited until you had.

Also, given that we both tried this on the GeForce FX 5200, and the
single FX card supported under 2.6.11 is a the Mac version of the
GeForce FX GO 5200, it might be a good idea to limit the cards to the
5200 series for the time being.

Yours apologetically,
Alan

PS The email I sent the maintainer bounced anyway


-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: RivaFB and GeForce FX

2005-03-05 Thread Alan Jenkins
 I've tried adding the format and vpllB but I can't see any difference.

...

 I'll get 2.6.6 (the version your patch applies to) and try with and
 without your full patch.  Hopefully I'll be able to see the difference.
 Otherwise I might have to ask you to try the trivial and full patches
 I'm using for 2.6.11.

I see gross screen corruption without the full patch on 2.6.6, but this
is gone in 2.6.11. 

I suspect I am preempting someone elses work, but they haven't (yet)
come forward, and as I said I haven't been able to get in touch with the
drivers maintainer.  I'll ask the framebuffer layer maintainer about it.
I've not CC'd him in this email because my habit of stripping quotes has
left it without context.

-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: Re: RivaFB and GeForce FX

2005-03-04 Thread Alan Jenkins
Query: register vpllB


I have a question about your patch: you added chip->vpllB and
chip->vpllB2 (presumably taken from the X driver).  Do you know their
purpose, and did you find them to be necessary or useful?


Possible patch to add supported cards


I discovered that since your patch, some changes have been made to
support GeForce FX chips (which are classified as NV_ARCH_30), but the
only one recognised by the driver is the GeForce FX GO 5200 (the name
may be slightly mangled).  I can get the driver to work on my card just
by adding it to the list of supported cards (altering
drivers/video/riva/fbdev.c and include/linux/pci_ids.h of 2.6.11).

The driver comments suggest that NV_ARCH_30 is applicable to the 5200,
5600, 5700, 5800 and 5900.  As far as I can tell the actual code would
apply this classifaction to all GeForce FX cards, including the GeForce
FX Go series, and also the Quadro FX series.

My opinion is that theres no point in having the code there but not
letting people try it.  I'd like to add every single card which would be
classified under NV_ARCH_30, taking them from the X driver
(hw/XFree86/drivers/nv/nv_driver.c), with a configuration warning that
rivafb has not really been tested on these cards.  If nobody has any
objections I'll send a patch.


Additional information


I do see a cursor related problem, but I don't think its the same one
you describe.  On the framebuffer console, sometimes when the cursor
moves the character at the new cursor position will be displayed at the
old position for a very short period of time.

EDID/DDC fails (it works with my monitor under X), and acceleration has
been disabled.  

There are problems with some screen modes, particularly on 800x600-90
and 1024x768-43-lace.  The screen wraps, so that about an 8th of the
left hand side appears on the right hand side instead, and there is
additional corruption (there seem to be pixels in the wrong places, but
colours are not affected).

My computer locked up during a console switch (X to console) with linux
rivafb, X framebuffer and X nv running.

Some rivafb debug output during boot:

rivafb: nVidia device/chipset 10DE0322
rivafb: Detected CRTC controller 0 being used
rivafb: RIVA MTRR set to ON
riva_get_EDID START
riva_get_EDID_i2c START
riva_get_EDID_i2c END
rivafb: could not retrieve EDID from DDC/I2C
riva_get_EDID END
riva_update_default_var START
riva_update_default_var END
riva_set_fbinfo START
rivafb: disabling acceleration
riva_set_fbinfo END
rivafb_check_var START
rivafb_do_maximize START
rivafb: setting virtual Y resolution to 209715
rivafb_do_maximize END
rivafb_check_var END
rivafb: PCI nVidia NV32 framebuffer ver 0.9.5b (128MB @ 0xC000)
rivafb_probe END
rivafb_open START
riva_save_state START
riva_save_state END
rivafb_open END
rivafb_release START
riva_load_state START
riva_load_state END
rivafb_release END


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: Re: RivaFB and GeForce FX

2005-03-04 Thread Alan Jenkins
Query: register vpllB


I have a question about your patch: you added chip-vpllB and
chip-vpllB2 (presumably taken from the X driver).  Do you know their
purpose, and did you find them to be necessary or useful?


Possible patch to add supported cards


I discovered that since your patch, some changes have been made to
support GeForce FX chips (which are classified as NV_ARCH_30), but the
only one recognised by the driver is the GeForce FX GO 5200 (the name
may be slightly mangled).  I can get the driver to work on my card just
by adding it to the list of supported cards (altering
drivers/video/riva/fbdev.c and include/linux/pci_ids.h of 2.6.11).

The driver comments suggest that NV_ARCH_30 is applicable to the 5200,
5600, 5700, 5800 and 5900.  As far as I can tell the actual code would
apply this classifaction to all GeForce FX cards, including the GeForce
FX Go series, and also the Quadro FX series.

My opinion is that theres no point in having the code there but not
letting people try it.  I'd like to add every single card which would be
classified under NV_ARCH_30, taking them from the X driver
(hw/XFree86/drivers/nv/nv_driver.c), with a configuration warning that
rivafb has not really been tested on these cards.  If nobody has any
objections I'll send a patch.


Additional information


I do see a cursor related problem, but I don't think its the same one
you describe.  On the framebuffer console, sometimes when the cursor
moves the character at the new cursor position will be displayed at the
old position for a very short period of time.

EDID/DDC fails (it works with my monitor under X), and acceleration has
been disabled.  

There are problems with some screen modes, particularly on 800x600-90
and 1024x768-43-lace.  The screen wraps, so that about an 8th of the
left hand side appears on the right hand side instead, and there is
additional corruption (there seem to be pixels in the wrong places, but
colours are not affected).

My computer locked up during a console switch (X to console) with linux
rivafb, X framebuffer and X nv running.

Some rivafb debug output during boot:

rivafb: nVidia device/chipset 10DE0322
rivafb: Detected CRTC controller 0 being used
rivafb: RIVA MTRR set to ON
riva_get_EDID START
riva_get_EDID_i2c START
riva_get_EDID_i2c END
rivafb: could not retrieve EDID from DDC/I2C
riva_get_EDID END
riva_update_default_var START
riva_update_default_var END
riva_set_fbinfo START
rivafb: disabling acceleration
riva_set_fbinfo END
rivafb_check_var START
rivafb_do_maximize START
rivafb: setting virtual Y resolution to 209715
rivafb_do_maximize END
rivafb_check_var END
rivafb: PCI nVidia NV32 framebuffer ver 0.9.5b (128MB @ 0xC000)
rivafb_probe END
rivafb_open START
riva_save_state START
riva_save_state END
rivafb_open END
rivafb_release START
riva_load_state START
riva_load_state END
rivafb_release END


-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: RivaFB and GeForce FX

2005-03-03 Thread Oded Shimon
On Friday 04 March 2005 00:53, Alan Jenkins wrote:
> Having a GeForce FX 5200 which I expected to work under rivafb (kernel
> version 2.6.11), I found the attached message on google groups.
>
> I know it is a little later now, but would you think about getting the
> work you've done committed?
>
> I recognise that updating the driver to work with more recent kernels
> would involve a reasonable amount of work.  I don't need the driver
> personally (although it would be nice).  I wouldn't be able to take
> advantage of TV out either, but if you can get the code into the kernel
> then more people are likely to look at it.
>
> If you're not going to do anything, could you send me the latest
> version?  I don't promise to do anything but as a student I should have
> the time to do so.  Actuall skill is another matter :)

Wow, it's been ages.. I eventually stopped caring about this patch because i 
realized with my skills TV out would be utterly impossible, which was very 
important for me.. So for now I am STILL using VesaFB and the binary nvidia X 
driver...

The patch I did prepare were a few strategic copy pastes from the X "nv" 
driver which "works" (without TV out) for Geforce FX... I hardly understand 
at all what I have done (hardware, just ain't my thing :).

You're free to have the patch though.. I'd advise cleaning it up though, there 
is still some debugging stuff in there...
Also, this is actually a common trait for Any rivafb output, the cursor is 
horribly broken.. I had a hack in the patch to fix this, but this probably 
not welcome for the official driver...

- ods15
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: RivaFB and GeForce FX

2005-03-03 Thread Oded Shimon
On Friday 04 March 2005 01:03, Oded Shimon wrote:
> - ods15

Oops.
diff -U 3 -r -N -X /usr/src/diffignore -- linux-2.6.6/drivers/video/riva/fbdev.c linux/drivers/video/riva/fbdev.c
--- linux-2.6.6/drivers/video/riva/fbdev.c	2004-05-10 05:32:54.0 +0300
+++ linux/drivers/video/riva/fbdev.c	2004-11-13 16:33:22.0 +0200
@@ -145,6 +145,21 @@
 	CH_GEFORCE4_TI_4600,
 	CH_GEFORCE4_TI_4400,
 	CH_GEFORCE4_TI_4200,
+	CH_GEFORCE_FX_5800_ULTRA,
+	CH_GEFORCE_FX_5800,
+	CH_GEFORCE_FX_5600_ULTRA,
+	CH_GEFORCE_FX_5600,
+	CH_GEFORCE_FX_5600_XT,
+	CH_GEFORCE_FX_5200_1,
+	CH_GEFORCE_FX_5200_ULTRA,
+	CH_GEFORCE_FX_5200,
+	CH_GEFORCE_FX_5200_SE,
+	CH_GEFORCE_FX_5900_ULTRA,
+	CH_GEFORCE_FX_5900,
+	CH_GEFORCE_FX_5900_XT,
+	CH_GEFORCE_FX_5950_ULTRA,
+	CH_GEFORCE_FX_5700_ULTRA,
+	CH_GEFORCE_FX_5700,
 	CH_QUADRO4_900XGL,
 	CH_QUADRO4_750XGL,
 	CH_QUADRO4_700XGL
@@ -192,6 +207,21 @@
 	{ "GeForce4 Ti 4600", NV_ARCH_20 },
 	{ "GeForce4 Ti 4400", NV_ARCH_20 },
 	{ "GeForce4 Ti 4200", NV_ARCH_20 },
+	{ "GeForce FX 5800 Ultra", NV_ARCH_20 },
+	{ "GeForce FX 5800", NV_ARCH_20 },
+	{ "GeForce FX 5600 Ultra", NV_ARCH_20 },
+	{ "GeForce FX 5600", NV_ARCH_20 },
+	{ "GeForce FX 5600 XT", NV_ARCH_20 },
+	{ "GeForce FX 5200 1", NV_ARCH_20 },
+	{ "GeForce FX 5200 Ultra", NV_ARCH_20 },
+	{ "GeForce FX 5200", NV_ARCH_20 },
+	{ "GeForce FX 5200 SE", NV_ARCH_20 },
+	{ "GeForce FX 5900 Ultra", NV_ARCH_20 },
+	{ "GeForce FX 5900", NV_ARCH_20 },
+	{ "GeForce FX 5900 XT", NV_ARCH_20 },
+	{ "GeForce FX 5950 Ultra", NV_ARCH_20 },
+	{ "GeForce FX 5700 Ultra", NV_ARCH_20 },
+	{ "GeForce FX 5700", NV_ARCH_20 },
 	{ "Quadro4-900-XGL", NV_ARCH_20 },
 	{ "Quadro4-750-XGL", NV_ARCH_20 },
 	{ "Quadro4-700-XGL", NV_ARCH_20 }
@@ -272,6 +302,36 @@
 	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE4_TI_4400 },
 	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI_4200,
 	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE4_TI_4200 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5800_ULTRA,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE_FX_5800_ULTRA },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5800,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE_FX_5800 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5600_ULTRA,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE_FX_5600_ULTRA },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5600,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE_FX_5600 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5600_XT,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE_FX_5600_XT },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5200_1,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE_FX_5200_1 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5200_ULTRA,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE_FX_5200_ULTRA },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5200,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE_FX_5200 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5200_SE,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE_FX_5200_SE },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5900_ULTRA,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE_FX_5900_ULTRA },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5900,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE_FX_5900 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5900_XT,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE_FX_5900_XT },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5950_ULTRA,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE_FX_5950_ULTRA },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5700_ULTRA,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE_FX_5700_ULTRA },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5700,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE_FX_5700 },
  	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO4_900XGL,
 	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_QUADRO4_900XGL },
 	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO4_750XGL,
@@ -814,8 +874,9 @@
 		newmode.ext.head  = par->riva.PCRTC0[0x0860/4] & ~0x1000;
 		newmode.ext.head2 = par->riva.PCRTC0[0x2860/4] | 0x1000;
 		newmode.ext.crtcOwner = 3;
-		newmode.ext.pllsel |= 0x2800;
-		newmode.ext.vpll2 = newmode.ext.vpll;
+		//newmode.ext.pllsel |= 0x2800;
+		//newmode.ext.vpll2 = newmode.ext.vpll;
+		newmode.ext.vpll2 = par->riva.PRAMDAC0[0x0520/4];
 	} else if (par->riva.twoHeads) {
 		newmode.ext.head  =  par->riva.PCRTC0[0x0860/4] | 0x1000;
 		newmode.ext.head2 =  par->riva.PCRTC0[0x2860/4] & ~0x1000;
@@ -827,6 +888,8 @@
 		newmode.ext.scale |= (1 << 8);
 	}
 	newmode.ext.cursorConfig = 0x02000100;
+	newmode.ext.vpllB = 0;
+	newmode.ext.vpll2B = 0;
 	par->current_state = newmode;
 	riva_load_state(par, >current_state);
 	par->riva.LockUnlock(>riva, 0); /* important for HW cursor */
@@ -1119,10 +1182,16 @@
 static int rivafb_set_par(struct fb_info *info)
 {
 	struct riva_par *par = (struct riva_par *) info->par;
+	int i;
 
 	

Re: RivaFB and GeForce FX

2005-03-03 Thread Oded Shimon
On Friday 04 March 2005 00:53, Alan Jenkins wrote:
 Having a GeForce FX 5200 which I expected to work under rivafb (kernel
 version 2.6.11), I found the attached message on google groups.

 I know it is a little later now, but would you think about getting the
 work you've done committed?

 I recognise that updating the driver to work with more recent kernels
 would involve a reasonable amount of work.  I don't need the driver
 personally (although it would be nice).  I wouldn't be able to take
 advantage of TV out either, but if you can get the code into the kernel
 then more people are likely to look at it.

 If you're not going to do anything, could you send me the latest
 version?  I don't promise to do anything but as a student I should have
 the time to do so.  Actuall skill is another matter :)

Wow, it's been ages.. I eventually stopped caring about this patch because i 
realized with my skills TV out would be utterly impossible, which was very 
important for me.. So for now I am STILL using VesaFB and the binary nvidia X 
driver...

The patch I did prepare were a few strategic copy pastes from the X nv 
driver which works (without TV out) for Geforce FX... I hardly understand 
at all what I have done (hardware, just ain't my thing :).

You're free to have the patch though.. I'd advise cleaning it up though, there 
is still some debugging stuff in there...
Also, this is actually a common trait for Any rivafb output, the cursor is 
horribly broken.. I had a hack in the patch to fix this, but this probably 
not welcome for the official driver...

- ods15
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: RivaFB and GeForce FX

2005-03-03 Thread Oded Shimon
On Friday 04 March 2005 01:03, Oded Shimon wrote:
 - ods15

Oops.
diff -U 3 -r -N -X /usr/src/diffignore -- linux-2.6.6/drivers/video/riva/fbdev.c linux/drivers/video/riva/fbdev.c
--- linux-2.6.6/drivers/video/riva/fbdev.c	2004-05-10 05:32:54.0 +0300
+++ linux/drivers/video/riva/fbdev.c	2004-11-13 16:33:22.0 +0200
@@ -145,6 +145,21 @@
 	CH_GEFORCE4_TI_4600,
 	CH_GEFORCE4_TI_4400,
 	CH_GEFORCE4_TI_4200,
+	CH_GEFORCE_FX_5800_ULTRA,
+	CH_GEFORCE_FX_5800,
+	CH_GEFORCE_FX_5600_ULTRA,
+	CH_GEFORCE_FX_5600,
+	CH_GEFORCE_FX_5600_XT,
+	CH_GEFORCE_FX_5200_1,
+	CH_GEFORCE_FX_5200_ULTRA,
+	CH_GEFORCE_FX_5200,
+	CH_GEFORCE_FX_5200_SE,
+	CH_GEFORCE_FX_5900_ULTRA,
+	CH_GEFORCE_FX_5900,
+	CH_GEFORCE_FX_5900_XT,
+	CH_GEFORCE_FX_5950_ULTRA,
+	CH_GEFORCE_FX_5700_ULTRA,
+	CH_GEFORCE_FX_5700,
 	CH_QUADRO4_900XGL,
 	CH_QUADRO4_750XGL,
 	CH_QUADRO4_700XGL
@@ -192,6 +207,21 @@
 	{ GeForce4 Ti 4600, NV_ARCH_20 },
 	{ GeForce4 Ti 4400, NV_ARCH_20 },
 	{ GeForce4 Ti 4200, NV_ARCH_20 },
+	{ GeForce FX 5800 Ultra, NV_ARCH_20 },
+	{ GeForce FX 5800, NV_ARCH_20 },
+	{ GeForce FX 5600 Ultra, NV_ARCH_20 },
+	{ GeForce FX 5600, NV_ARCH_20 },
+	{ GeForce FX 5600 XT, NV_ARCH_20 },
+	{ GeForce FX 5200 1, NV_ARCH_20 },
+	{ GeForce FX 5200 Ultra, NV_ARCH_20 },
+	{ GeForce FX 5200, NV_ARCH_20 },
+	{ GeForce FX 5200 SE, NV_ARCH_20 },
+	{ GeForce FX 5900 Ultra, NV_ARCH_20 },
+	{ GeForce FX 5900, NV_ARCH_20 },
+	{ GeForce FX 5900 XT, NV_ARCH_20 },
+	{ GeForce FX 5950 Ultra, NV_ARCH_20 },
+	{ GeForce FX 5700 Ultra, NV_ARCH_20 },
+	{ GeForce FX 5700, NV_ARCH_20 },
 	{ Quadro4-900-XGL, NV_ARCH_20 },
 	{ Quadro4-750-XGL, NV_ARCH_20 },
 	{ Quadro4-700-XGL, NV_ARCH_20 }
@@ -272,6 +302,36 @@
 	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE4_TI_4400 },
 	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI_4200,
 	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE4_TI_4200 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5800_ULTRA,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE_FX_5800_ULTRA },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5800,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE_FX_5800 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5600_ULTRA,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE_FX_5600_ULTRA },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5600,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE_FX_5600 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5600_XT,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE_FX_5600_XT },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5200_1,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE_FX_5200_1 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5200_ULTRA,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE_FX_5200_ULTRA },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5200,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE_FX_5200 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5200_SE,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE_FX_5200_SE },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5900_ULTRA,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE_FX_5900_ULTRA },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5900,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE_FX_5900 },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5900_XT,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE_FX_5900_XT },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5950_ULTRA,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE_FX_5950_ULTRA },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5700_ULTRA,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE_FX_5700_ULTRA },
+	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5700,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE_FX_5700 },
  	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO4_900XGL,
 	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_QUADRO4_900XGL },
 	{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO4_750XGL,
@@ -814,8 +874,9 @@
 		newmode.ext.head  = par-riva.PCRTC0[0x0860/4]  ~0x1000;
 		newmode.ext.head2 = par-riva.PCRTC0[0x2860/4] | 0x1000;
 		newmode.ext.crtcOwner = 3;
-		newmode.ext.pllsel |= 0x2800;
-		newmode.ext.vpll2 = newmode.ext.vpll;
+		//newmode.ext.pllsel |= 0x2800;
+		//newmode.ext.vpll2 = newmode.ext.vpll;
+		newmode.ext.vpll2 = par-riva.PRAMDAC0[0x0520/4];
 	} else if (par-riva.twoHeads) {
 		newmode.ext.head  =  par-riva.PCRTC0[0x0860/4] | 0x1000;
 		newmode.ext.head2 =  par-riva.PCRTC0[0x2860/4]  ~0x1000;
@@ -827,6 +888,8 @@
 		newmode.ext.scale |= (1  8);
 	}
 	newmode.ext.cursorConfig = 0x02000100;
+	newmode.ext.vpllB = 0;
+	newmode.ext.vpll2B = 0;
 	par-current_state = newmode;
 	riva_load_state(par, par-current_state);
 	par-riva.LockUnlock(par-riva, 0); /* important for HW cursor */
@@ -1119,10 +1182,16 @@
 static int rivafb_set_par(struct fb_info *info)
 {
 	struct riva_par *par = (struct riva_par *) info-par;
+	int i;
 
 	riva_load_video_mode(info);
 	riva_setup_accel(par);
-