|
Lines 49-55
Link Here
|
| 49 |
|
49 |
|
| 50 |
extern int getRADEONEntityIndex(void); |
50 |
extern int getRADEONEntityIndex(void); |
| 51 |
|
51 |
|
| 52 |
const char *MonTypeName[7] = { |
52 |
const char *MonTypeName[8] = { |
|
|
53 |
"AUTOCRT", |
| 53 |
"AUTO", |
54 |
"AUTO", |
| 54 |
"NONE", |
55 |
"NONE", |
| 55 |
"CRT", |
56 |
"CRT", |
|
Lines 59-65
const char *MonTypeName[7] = {
Link Here
|
| 59 |
"STV" |
60 |
"STV" |
| 60 |
}; |
61 |
}; |
| 61 |
|
62 |
|
| 62 |
const RADEONMonitorType MonTypeID[7] = { |
63 |
const RADEONMonitorType MonTypeID[8] = { |
|
|
64 |
MT_UNKNOWN_FORCECRT, |
| 63 |
MT_UNKNOWN, /* this is just a dummy value for AUTO DETECTION */ |
65 |
MT_UNKNOWN, /* this is just a dummy value for AUTO DETECTION */ |
| 64 |
MT_NONE, /* NONE -> NONE */ |
66 |
MT_NONE, /* NONE -> NONE */ |
| 65 |
MT_CRT, /* CRT -> CRT */ |
67 |
MT_CRT, /* CRT -> CRT */ |
|
Lines 927-933
void RADEONSetupConnectors(ScrnInfoPtr p
Link Here
|
| 927 |
RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn); |
929 |
RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn); |
| 928 |
const char *s; |
930 |
const char *s; |
| 929 |
Bool ignore_edid = FALSE; |
931 |
Bool ignore_edid = FALSE; |
| 930 |
int i = 0, second = 0, max_mt = 5; |
932 |
int i = 0, second = 0, max_mt = 6; |
| 931 |
|
933 |
|
| 932 |
/* We first get the information about all connectors from BIOS. |
934 |
/* We first get the information about all connectors from BIOS. |
| 933 |
* This is how the card is phyiscally wired up. |
935 |
* This is how the card is phyiscally wired up. |
|
Lines 1051-1057
void RADEONSetupConnectors(ScrnInfoPtr p
Link Here
|
| 1051 |
* after the X server has started. |
1053 |
* after the X server has started. |
| 1052 |
*/ |
1054 |
*/ |
| 1053 |
if ((s = xf86GetOptValString(info->Options, OPTION_MONITOR_LAYOUT))) { |
1055 |
if ((s = xf86GetOptValString(info->Options, OPTION_MONITOR_LAYOUT))) { |
| 1054 |
char s1[5], s2[5]; |
1056 |
char s1[8], s2[8]; |
| 1055 |
i = 0; |
1057 |
i = 0; |
| 1056 |
/* When using user specified monitor types, we will not do DDC detection |
1058 |
/* When using user specified monitor types, we will not do DDC detection |
| 1057 |
* |
1059 |
* |
|
Lines 1076-1082
void RADEONSetupConnectors(ScrnInfoPtr p
Link Here
|
| 1076 |
i++; |
1078 |
i++; |
| 1077 |
break; |
1079 |
break; |
| 1078 |
} |
1080 |
} |
| 1079 |
if (i > 4) i = 4; |
1081 |
if (i > 7) i = 7; |
| 1080 |
} while(*s++); |
1082 |
} while(*s++); |
| 1081 |
s2[i] = '\0'; |
1083 |
s2[i] = '\0'; |
| 1082 |
|
1084 |
|
|
Lines 1189-1194
static void RADEONQueryConnectedDisplays
Link Here
|
| 1189 |
RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn); |
1191 |
RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn); |
| 1190 |
const char *s; |
1192 |
const char *s; |
| 1191 |
Bool ignore_edid = FALSE; |
1193 |
Bool ignore_edid = FALSE; |
|
|
1194 |
Bool forcecrt[2]; |
| 1195 |
int i; |
| 1196 |
|
| 1197 |
for (i = 0; i < 2; i++) { |
| 1198 |
forcecrt[i] = FALSE; |
| 1199 |
if (pRADEONEnt->PortInfo[i]->MonType == MT_UNKNOWN_FORCECRT) { |
| 1200 |
forcecrt[i] = TRUE; |
| 1201 |
pRADEONEnt->PortInfo[i]->MonType = MT_UNKNOWN; |
| 1202 |
} |
| 1203 |
} |
| 1192 |
|
1204 |
|
| 1193 |
/* IgnoreEDID option is different from the NoDDCxx options used by DDC module |
1205 |
/* IgnoreEDID option is different from the NoDDCxx options used by DDC module |
| 1194 |
* When IgnoreEDID is used, monitor detection will still use DDC |
1206 |
* When IgnoreEDID is used, monitor detection will still use DDC |
|
Lines 1259-1264
static void RADEONQueryConnectedDisplays
Link Here
|
| 1259 |
|
1271 |
|
| 1260 |
} |
1272 |
} |
| 1261 |
|
1273 |
|
|
|
1274 |
for (i = 0; i < 2; i++) { |
| 1275 |
if (forcecrt[i] && pRADEONEnt->PortInfo[i]->MonType == MT_NONE) { |
| 1276 |
int a = info->IsAtomBios; |
| 1277 |
int c = pRADEONEnt->PortInfo[i]->ConnectorType; |
| 1278 |
if ((!a && (c == CONNECTOR_CRT || c == CONNECTOR_DVI_I)) || |
| 1279 |
(a && (c == CONNECTOR_VGA_ATOM || c == CONNECTOR_DVI_I_ATOM || |
| 1280 |
c == CONNECTOR_DVI_A_ATOM))) { |
| 1281 |
xf86DrvMsg(pScrn->scrnIndex, X_INFO, |
| 1282 |
"Port%d forced to CRT\n", i+1); |
| 1283 |
pRADEONEnt->PortInfo[i]->MonType = MT_CRT; |
| 1284 |
} else { |
| 1285 |
xf86DrvMsg(pScrn->scrnIndex, X_INFO, |
| 1286 |
"Port%d not forced to CRT due to connector\n", |
| 1287 |
i+1); |
| 1288 |
} |
| 1289 |
} |
| 1290 |
} |
| 1291 |
|
| 1262 |
if(ignore_edid) { |
1292 |
if(ignore_edid) { |
| 1263 |
pRADEONEnt->PortInfo[0]->MonInfo = NULL; |
1293 |
pRADEONEnt->PortInfo[0]->MonInfo = NULL; |
| 1264 |
pRADEONEnt->PortInfo[1]->MonInfo = NULL; |
1294 |
pRADEONEnt->PortInfo[1]->MonInfo = NULL; |
|
Lines 1297-1303
Bool RADEONMapControllers(ScrnInfoPtr pS
Link Here
|
| 1297 |
|
1327 |
|
| 1298 |
xf86DrvMsg(pScrn->scrnIndex, X_INFO, |
1328 |
xf86DrvMsg(pScrn->scrnIndex, X_INFO, |
| 1299 |
"Port1:\n Monitor -- %s\n Connector -- %s\n DAC Type -- %s\n TMDS Type -- %s\n DDC Type -- %s\n", |
1329 |
"Port1:\n Monitor -- %s\n Connector -- %s\n DAC Type -- %s\n TMDS Type -- %s\n DDC Type -- %s\n", |
| 1300 |
MonTypeName[pRADEONEnt->PortInfo[0]->MonType+1], |
1330 |
MonTypeName[pRADEONEnt->PortInfo[0]->MonType+2], |
| 1301 |
info->IsAtomBios ? |
1331 |
info->IsAtomBios ? |
| 1302 |
ConnectorTypeNameATOM[pRADEONEnt->PortInfo[0]->ConnectorType]: |
1332 |
ConnectorTypeNameATOM[pRADEONEnt->PortInfo[0]->ConnectorType]: |
| 1303 |
ConnectorTypeName[pRADEONEnt->PortInfo[0]->ConnectorType], |
1333 |
ConnectorTypeName[pRADEONEnt->PortInfo[0]->ConnectorType], |
|
Lines 1307-1313
Bool RADEONMapControllers(ScrnInfoPtr pS
Link Here
|
| 1307 |
|
1337 |
|
| 1308 |
xf86DrvMsg(pScrn->scrnIndex, X_INFO, |
1338 |
xf86DrvMsg(pScrn->scrnIndex, X_INFO, |
| 1309 |
"Port2:\n Monitor -- %s\n Connector -- %s\n DAC Type -- %s\n TMDS Type -- %s\n DDC Type -- %s\n", |
1339 |
"Port2:\n Monitor -- %s\n Connector -- %s\n DAC Type -- %s\n TMDS Type -- %s\n DDC Type -- %s\n", |
| 1310 |
MonTypeName[pRADEONEnt->PortInfo[1]->MonType+1], |
1340 |
MonTypeName[pRADEONEnt->PortInfo[1]->MonType+2], |
| 1311 |
info->IsAtomBios ? |
1341 |
info->IsAtomBios ? |
| 1312 |
ConnectorTypeNameATOM[pRADEONEnt->PortInfo[1]->ConnectorType]: |
1342 |
ConnectorTypeNameATOM[pRADEONEnt->PortInfo[1]->ConnectorType]: |
| 1313 |
ConnectorTypeName[pRADEONEnt->PortInfo[1]->ConnectorType], |
1343 |
ConnectorTypeName[pRADEONEnt->PortInfo[1]->ConnectorType], |
|
Lines 1360-1365
Bool RADEONMapControllers(ScrnInfoPtr pS
Link Here
|
| 1360 |
if (pRADEONEnt->HasSecondary && pRADEONEnt->PortInfo[1]->MonType == MT_NONE) { |
1390 |
if (pRADEONEnt->HasSecondary && pRADEONEnt->PortInfo[1]->MonType == MT_NONE) { |
| 1361 |
pRADEONEnt->HasSecondary = FALSE; |
1391 |
pRADEONEnt->HasSecondary = FALSE; |
| 1362 |
} |
1392 |
} |
|
|
1393 |
} else { |
| 1394 |
if (pRADEONEnt->PortInfo[0]->MonType == MT_UNKNOWN_FORCECRT) |
| 1395 |
pRADEONEnt->PortInfo[0]->MonType = MT_UNKNOWN; |
| 1396 |
if (pRADEONEnt->PortInfo[1]->MonType == MT_UNKNOWN_FORCECRT) |
| 1397 |
pRADEONEnt->PortInfo[1]->MonType = MT_UNKNOWN; |
| 1363 |
} |
1398 |
} |
| 1364 |
|
1399 |
|
| 1365 |
if(pRADEONEnt->HasCRTC2) { |
1400 |
if(pRADEONEnt->HasCRTC2) { |