It appears that not all r128 chipsets marked as DFP capable have DVI ports. Some have VGA which we should detect. The old driver "detected" this by attempting a DVI based probe for monitors. Anything that failed this was assumed to be VGA.
Signed-off-by: Connor Behan <[email protected]> Tested-by: Tobias Powalowski <[email protected]> --- src/r128_output.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/r128_output.c b/src/r128_output.c index 0160880..c042c98 100644 --- a/src/r128_output.c +++ b/src/r128_output.c @@ -400,6 +400,24 @@ void R128SetupGenericConnectors(ScrnInfoPtr pScrn, R128OutputType *otypes) otypes[1] = OUTPUT_VGA; } +void R128GetConnectorInfoFromBIOS(ScrnInfoPtr pScrn, R128OutputType *otypes) +{ + R128InfoPtr info = R128PTR(pScrn); + uint16_t bios_header; + int offset; + + /* XXX: Currently, this function only finds VGA ports misidentified as DVI. */ + if (!info->VBIOS || otypes[0] != OUTPUT_DVI) return; + + bios_header = R128_BIOS16(0x48); + offset = R128_BIOS16(bios_header + 0x60); + + if (offset) { + otypes[0] = OUTPUT_VGA; + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Found CRT table, assuming VGA connector\n"); + } +} + Bool R128SetupConnectors(ScrnInfoPtr pScrn) { R128InfoPtr info = R128PTR(pScrn); @@ -411,8 +429,8 @@ Bool R128SetupConnectors(ScrnInfoPtr pScrn) int num_dvi = 0; int i; - /* XXX: Can we make R128GetConnectorInfoFromBIOS()? */ R128SetupGenericConnectors(pScrn, otypes); + R128GetConnectorInfoFromBIOS(pScrn, otypes); for (i = 0; i < R128_MAX_BIOS_CONNECTOR; i++) { if (otypes[i] == OUTPUT_VGA) -- 2.3.2 _______________________________________________ xorg-driver-ati mailing list [email protected] http://lists.x.org/mailman/listinfo/xorg-driver-ati
