Re: rivafb + NV17

David Liontooth <[email protected]>
Newsgroups gmane.linux.fbdev.user
Message-ID <[email protected]>
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










-------------------------------------------------------
This SF.Net email is sponsored by:
Sybase ASE Linux Express Edition - download now for FREE
LinuxWorld Reader's Choice Award Winner for best database on Linux.
http://ads.osdn.com/?ad_id=5588&alloc_id=12065&op=click
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.