If you have XFree86 (X11) installed on your machine, and you can use it successfully, it is a simple matter to convert the mode-lines in your XF86Config file to the required timings needed by the framebuffer devices.
The framebuffer device requires the following fields:
pixclock - pixel clock in pico seconds
left_margin - time between sync to display
right_margin - time between display to sync
upper_margin - time between sync to display
lower_margin - time between display to sync
hsync_len - horizontal sync length
vsync_len - vertical sync length
An XFree86 mode line has the following fields:
Modeline "1280x1024" DCF HR SH1 SH2 HFL VR SV1 SV2 VFL
It is necessary to do some simple calculations to translate the XF86 mode-lines into a set of framebuffer device timings. As an example, we shall examine how to convert a mode-line taken from my XF86Config file:
Modeline "1280x1024" 110.0 1280 1328 1512 1712 1024 1025 1028 1054
First, calculate the required pixclock rate. XFree86 uses megahertz whilst framebuffer devices uses picoseconds (Why, I don't know). Divide one million by DCF. For example: 1,000,000 / 110.0 = 9090.9091
Now we need to calculate the horizontal timings:
left_margin = HFL - SH2
right_margin = SH1 - HR
hsync_len = SH2 - SH1
In our example, this would be:
left_margin = 1712 - 1512 = 200
right_margin = 1328 - 1280 = 48
hsync_len = 1512 - 1328 = 184
And now we need to calculate the vertical timings.
upper_margin = VFL - SV2
lower_margin = SV1 - VR
vsync_len = SV2 - SV1
For our example, this would be:
upper_margin = 1054 - 1028 = 26
lower_margin = 1025 - 1024 = 1
vsync_len = 1028 - 1025 = 3
Now we can use this information to set up the framebuffer for the desired mode. For example, for the matroxfb framebuffer driver, it requires the following:
video=matrox:xres:<>,yres:<>,depth:<>,left:<>,right:<>,hslen:<>,upper:<>,lower:<>,vslen:<>
I put into my /etc/lilo.conf the following line:
append = "video=matroxfb:xres:1280,yres:1024,depth:32,left:200,right:48,hslen:184,upper:26,lower:0,vslen:3"
Note that in this case the pixel clock isn't used. It's only necessary if you don't like the default pixel clock rates. You can supply this as a parameter as well. Setting the pixclock is documented in other parts of this HOWTO.