View | Details | Raw Unified | Return to bug 263199
Collapse All | Expand All

(-)a/man/radeon.man (-4 / +8 lines)
Lines 229-241 This option is used to overwrite the det Link Here
229
This is only required when driver makes a false detection.
229
This is only required when driver makes a false detection.
230
The possible monitor types are:
230
The possible monitor types are:
231
.br
231
.br
232
NONE   \-\- Not connected
232
AUTO    \-\- Autodetect
233
.br
233
.br
234
CRT    \-\- Analog CRT monitor
234
AUTOCRT \-\- Autodetect, activate CRT if no monitor found
235
.br
235
.br
236
TMDS   \-\- Desktop flat panel
236
NONE    \-\- Not connected
237
.br
238
CRT     \-\- Analog CRT monitor
239
.br
240
TMDS    \-\- Desktop flat panel
237
.br 
241
.br 
238
LVDS   \-\- Laptop flat panel
242
LVDS    \-\- Laptop flat panel
239
.br
243
.br
240
This option can be used in following format:
244
This option can be used in following format:
241
.br
245
.br
(-)a/src/radeon_display.c (-7 / +42 lines)
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) {
(-)a/src/radeon_probe.h (+1 lines)
Lines 53-58 typedef enum Link Here
53
53
54
typedef enum
54
typedef enum
55
{
55
{
56
    MT_UNKNOWN_FORCECRT = -2,
56
    MT_UNKNOWN = -1,
57
    MT_UNKNOWN = -1,
57
    MT_NONE    = 0,
58
    MT_NONE    = 0,
58
    MT_CRT     = 1,
59
    MT_CRT     = 1,

Return to bug 263199