The following piece of code in r128_driver.c does the wrong thing on my system:
(I use 6.7.0, but the code is the same in 6.8.0)
/* return TRUE is a DFP is indeed connected to a DVI port */
static Bool R128GetDFPInfo(ScrnInfoPtr pScrn)
for(i=0; i<4; i++)
if(ddc->det_mon[i].type == 0)
I've a Rage 128 Pro GL PF AGP card with a DVI flat panel (but no VGA monitor)
Of the four DDC results tested by the for loop above, the first one contains the
correct values for my display. However, the second and the third one are all 0
(including .type), and hence also get copied. The fourth has .type > 0.
Hence, after the call to this function, my info->PanelXRes and info->PanelYRes
are 0! (and all the other timings, too). Consequently, the function choosing
modes accepts only modes with XRes and YRes <= 0 and of course finds no such modes.
I fixed this by adding two more tests to the if condition:
... && (ddc->...h_active > 0) && (ddc->...v_active > 0))
I've no idea if this fix is correct and useful, but it solved the problem for me.