summaryrefslogtreecommitdiff
path: root/src/g80_ddc.c
diff options
context:
space:
mode:
authorAaron Plattner <aplattner@nvidia.com>2007-03-09 12:43:12 -0800
committerAaron Plattner <aplattner@nvidia.com>2007-03-09 12:43:12 -0800
commit8b2c7bc457d34b7ed59cd08719bec8754ebf6fb8 (patch)
treee4358464752acd35be48e86e00f8c073f41a07a4 /src/g80_ddc.c
parent06b168ced3cc4aa47cdad21a2351cca674fa26e0 (diff)
Use DAC load detection to decide which OR to use instead of trusting the EDID.
Diffstat (limited to 'src/g80_ddc.c')
-rw-r--r--src/g80_ddc.c25
1 files changed, 11 insertions, 14 deletions
diff --git a/src/g80_ddc.c b/src/g80_ddc.c
index 3713028..bcc4bff 100644
--- a/src/g80_ddc.c
+++ b/src/g80_ddc.c
@@ -197,22 +197,19 @@ Bool G80ProbeDDC(ScrnInfoPtr pScrn)
flatPanel = (monInfo->features.input_type == 1);
- if(flatPanel) {
- if(pNv->i2cMap[port].sor == -1) {
- xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Saw a flat panel EDID "
- "on I2C port %i but no SOR outputs were registered for "
- "that port.\n", port);
- continue;
- }
+ if(pNv->i2cMap[port].dac != -1 &&
+ G80DispDetectLoad(pScrn, pNv->i2cMap[port].dac)) {
+ pNv->orType = DAC;
+ pNv->or = pNv->i2cMap[port].dac;
+ } else if(pNv->i2cMap[port].sor != -1) {
pNv->orType = SOR;
pNv->or = pNv->i2cMap[port].sor;
} else {
- if(pNv->i2cMap[port].dac == -1) {
- xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Saw a flat panel EDID "
- "on I2C port %i but no DAC outputs were registered for "
- "that port.\n", port);
- continue;
- }
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+ "Saw an EDID on I2C port %i but no DAC load was "
+ "detected and no SOR is connected to this port. Using "
+ "DAC%i.\n", port,
+ pNv->or);
pNv->orType = DAC;
pNv->or = pNv->i2cMap[port].dac;
}
@@ -220,7 +217,7 @@ Bool G80ProbeDDC(ScrnInfoPtr pScrn)
xf86DrvMsg(pScrn->scrnIndex, X_PROBED,
"Found a %s on I2C port %i, assigning %s%i\n",
flatPanel ? "flat panel" : "CRT",
- port, flatPanel ? "SOR" : "DAC", pNv->or);
+ port, pNv->orType == SOR ? "SOR" : "DAC", pNv->or);
pScrn->monitor->DDC = monInfo;
xf86SetDDCproperties(pScrn, monInfo);