Re: RivaFB and GeForce FX
> 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
> 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
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, + PCI_A
Re: Re: RivaFB and GeForce FX
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
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
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;