On some cards where no BIOS provided output mapping infos is available, the driver would get the DDC flipped between the two outputs of the card. This typically happen on recent Mac cards. This adds an option to force the driver to reverse what it thinks is the primary display DDC and the secondary display DDC. Ultimately, we'll have to do a better job of recognizing those Mac cards though. Index: xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c =================================================================== --- xc.orig/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c 2004-12-05 20:22:04.655611936 +1100 +++ xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c 2004-12-05 20:22:08.091089664 +1100 @@ -173,6 +173,7 @@ OPTION_SHOWCACHE, OPTION_DYNAMIC_CLOCKS, OPTION_VGA_ACCESS, + OPTION_REVERSE_DDC, } RADEONOpts; static const OptionInfoRec RADEONOptions[] = { @@ -225,6 +226,7 @@ { OPTION_SHOWCACHE, "ShowCache", OPTV_BOOLEAN, {0}, FALSE }, { OPTION_DYNAMIC_CLOCKS, "DynamicClocks", OPTV_BOOLEAN, {0}, FALSE }, { OPTION_VGA_ACCESS, "VGAAccess", OPTV_BOOLEAN, {0}, TRUE }, + { OPTION_REVERSE_DDC, "ReverseDDC", OPTV_BOOLEAN, {0}, FALSE }, { -1, NULL, OPTV_NONE, {0}, FALSE } }; @@ -1721,6 +1723,14 @@ pRADEONEnt->PortInfo[1].DACType = DAC_PRIMARY; pRADEONEnt->PortInfo[1].TMDSType = TMDS_EXT; pRADEONEnt->PortInfo[1].ConnectorType = CONNECTOR_CRT; + + /* Some cards have the DDC lines swapped and we have no way to + * detect it yet (Mac cards) + */ + if (xf86ReturnOptValBool(info->Options, OPTION_REVERSE_DDC, FALSE)) { + pRADEONEnt->PortInfo[0].DDCType = DDC_VGA; + pRADEONEnt->PortInfo[1].DDCType = DDC_DVI; + } } /* always make TMDS_INT port first*/ Index: xc/programs/Xserver/hw/xfree86/drivers/ati/radeon.man =================================================================== --- xc.orig/programs/Xserver/hw/xfree86/drivers/ati/radeon.man 2004-12-05 20:16:30.136466576 +1100 +++ xc/programs/Xserver/hw/xfree86/drivers/ati/radeon.man 2004-12-05 20:22:08.094089208 +1100 @@ -507,6 +507,14 @@ .B on on other architectures. .TP +.BI "Option \*qReverseDDC\*q \*q" boolean \*q +When BIOS connector informations aren't available, use this option to +reverse the mapping of the 2 main DDC ports. Use this if the X serve +obviously detects the wrong display for each connector. This is +typically needed on the Radeon 9600 cards bundled with Apple G5s. The +default is +.B off. +.TP .SH SEE ALSO __xservername__(__appmansuffix__), __xconfigfile__(__filemansuffix__), xorgconfig(__appmansuffix__), Xserver(__appmansuffix__), X(__miscmansuffix__)