From: David L. <lio...@co...> - 2004-11-09 03:40:20
|
Antonino A. Daplas wrote: >On Friday 05 November 2004 18:21, David Liontooth wrote: > > >>On the 2.6.9 kernel on Debian sid, rivafb loads successfully: >> >>ACPI: PCI interrupt 0000:01:00.0[A] -> GSI 11 (level, low) -> IRQ 11 >>rivafb: nVidia device/chipset 10DE0176 >>rivafb: nVidia Corporation NV17 [GeForce4 420 Go 32M] >>rivafb: flatpanel support enabled >>rivafb: Detected CRTC controller 1 being used >>rivafb: RIVA MTRR set to ON >>rivafb: could not retrieve EDID from DDC/I2C >>rivafb: setting virtual Y resolution to 52428 >>rivafb: Detected CRTC controller 1 being used >>rivafb: Detected CRTC controller 1 being used >>Console: switching to colour frame buffer device 80x30 >>rivafb: PCI nVidia NV17 framebuffer ver 0.9.5b (32MB @ 0xEC000000) >> >>Along with rivafb, these modules load: >> >>Module Size Used by >>rivafb 49924 1 >>i2c_algo_bit 8968 1 rivafb >>vgastate 9472 1 rivafb >>cfbimgblt 2944 1 rivafb >>i2c_core 19088 2 rivafb,i2c_algo_bit >> >>As long as the proprietary nvidia kernel module is not loaded, this works >>fine. >> >>However, I'm only getting 640x480. My /etc/fb.modes has lots of other >>resolutions, but they're not accepted. >> >>Is this a limitation of the rivafb driver, my hardware, or something else? >> >> > >Nope, it's a bug in the rivafb driver when the EDID block cannot be accessed. > >I can't submit a patch right now, but I'll give instructions on how to fix this: > >1. open drivers/video/riva/fbdev.c >2. search for the function "static int __devinit rivafb_probe". >3. Somewhere near the end you should see these lines: > > fb_destroy_modedb(info->monspecs.modedb); > info->monspecs.modedb_len = 0; > info->monspecs.modedb = NULL; > >4. Remove the line "info->monspecs.modedb_len = 0" >5. Next, search for the function "static int rivafb_check_var" >6. Look for these lines: > > if (!mode_valid && !list_empty(&info->modelist)) > return -EINVAL; > >7. Change it so it becomes like this: > > if (!mode_valid && info->monspecs.modedb_len) > return -EINVAL; > >8. Recompile and reboot. The end effect is rivafb will accept >all modelines coming from fbset as gospel truth. > >Tony > > > > Hi Tony, Thank you! That did the trick. I now have a framebuffer of any size, including my 1280x854 monitor. How do I generate new entries for /etc/fb.modes? I know the 1280x854 entry I use is slightly wrong, but evidently not wrong enough to cause problems, and a 720x480 entry I tried to create failed. I'm now able to run slideshows using fbi, and the results are excellent! I also tried to play videos, and fbxine will play stuff, the sound is fine, the speed is correct, but the colors are all swapped. Is there anything I can do? I also tried mplayer -vo fbdev, but that didn't work -- it looks like mplayer tries to scale the framebuffer to the size of the movie and fails if that size is not available. This is very cool and I really appreciate your patch. It would be great to have this in the kernel. Cheers, David |