On 02/01/08 09:32 -0200, Omar Esteves Duarte Filho wrote:
Thank you for the support and sorry for the inconvenience, Jordan. You are right: this is off-topic.
First - please - stop using the term 'VGA'. VGA is a very specific standard for video display (http://en.wikipedia.org/wiki/VGA). There is no VGA here. By using the term, you muddle the discussion.
After some investigation here, i've finally got VGA output (both text console and X)! In the end, it seems that there is some problem with the lxfb driver. I was trying to set up the VGA with the video boot parameter in the kernel command line ("lxfb.mode_option=..."). But, it did not work. However, the video output works if "fbset 640x480-60", for instance, was previously typed. The fbset tool initializes the VGA with different timing parameters. Below is the VGA timing parameters right after the boot process is complete and there's still no VGA output:
mode_option is only valid when you load the driver as a module. When running with the driver built in, then you specify the mode on the command line, as detailed in Documentation/fb/modedb.txt. The correct way to specify the mode on the command line is as follows:
video=lxfb:<xres>-<yres>-<bpp>@<refresh>
I also noted that you were specifying vga=<number> on your command line - if the vesa framebuffer is also installed in your kernel (as it would be with a normal Ubuntu kernel), then that will cause the VESA framebuffer to be loaded first (which would of course, fail). The lxfb would be loaded as well, but registered as the second framebuffer (if you have your kernel output from dmesg, you should be able to see this happen).
The fbset you did below would kick the second driver and have it take over the console from the failed primary driver.
root@ubuntu-LX800:~# fbset -i
mode "640x480-60" # D: 25.175 MHz, H: 31.469 kHz, V: 59.940 Hz geometry 640 480 640 480 16 timings 39682 48 8 25 2 88 2 rgba 5/11,6/5,5/0,0/0 endmode
This is the mode specified in lxfb_core.c - this is the correct timings for the Geode for the VESA mode 640x480@60.
Then, fbset is used to adjust the video mode:
root@ubuntu-LX800:~# fbset 640x480-60 root@ubuntu-LX800:~#
After that, VGA output works and timing parameters are checked again:
root@ubuntu-LX800:~# fbset -i
mode "640x480-60" # D: 25.175 MHz, H: 31.469 kHz, V: 59.940 Hz geometry 640 480 640 480 16 timings 39722 48 16 33 10 96 2 rgba 5/11,6/5,5/0,0/0 endmode
This is the mode that is listed in the file /etc/fb.modes - which is a set of generic timings provided by Ubuntu. Both timings are actually correct - if you were to run fbset and set the previous timings, they would work. What you are seeing is a side effect of a poorly configured kernel.
Jordan
First - please - stop using the term 'VGA'. VGA is a very specific standard for video display (http://en.wikipedia.org/wiki/VGA). There is no VGA here. By using the term, you muddle the discussion.
Ok.
mode_option is only valid when you load the driver as a module. When running with the driver built in, then you specify the mode on the command line, as detailed in Documentation/fb/modedb.txt. The correct way to specify the mode on the command line is as follows:
video=lxfb:<xres>-<yres>-<bpp>@<refresh>
Yes, my fault! Actually, I did use the correct way of specifying the mode on the command line. However, when composing the email, i wrongly wrote the 'mode_option'. lxfb driver is compiled into the kernel and the current command line is:
kernel /boot/vmlinuz-2.6.23.9-geodelx-fb root=UUID=a4e4ac87-c677-45e1-aa21-1e4654feac95 ro console=tty0 console=ttyS0,115200 video=lxfb:640x480@60
I also noted that you were specifying vga=<number> on your command line - if the vesa framebuffer is also installed in your kernel (as it would be with a normal Ubuntu kernel), then that will cause the VESA framebuffer to be loaded first (which would of course, fail). The lxfb would be loaded as well, but registered as the second framebuffer (if you have your kernel output from dmesg, you should be able to see this happen).
The fbset you did below would kick the second driver and have it take over the console from the failed primary driver.
VESA VGA Support is -not- enabled. So, lxfb is registered as the first framebuffer (/dev/fb0):
root@ubuntu-LX800:~# cat /proc/fb 0 Geode LX
This is the mode that is listed in the file /etc/fb.modes - which is a set of generic timings provided by Ubuntu. Both timings are actually correct - if you were to run fbset and set the previous timings, they would work. What you are seeing is a side effect of a poorly configured kernel.
Jordan
I tried to check both timings sets using "fbset --timings" command. The only set that works is:
root@ubuntu-LX800:~# fbset -i mode "640x480-60" # D: 25.175 MHz, H: 31.469 kHz, V: 59.940 Hz geometry 640 480 640 480 16 timings 39722 48 16 33 10 96 2 rgba 5/11,6/5,5/0,0/0 Endmode
The other set (the "original" one") provides VSYNC=63Hz, instead of 60Hz:
root@ubuntu-LX800:~# fbset -i mode "640x480-63" # D: 25.200 MHz, H: 32.143 kHz, V: 63.150 Hz geometry 640 480 640 480 16 timings 39682 48 8 25 2 88 2 rgba 5/11,6/5,5/0,0/0 Endmode
Omar.