Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 42099 Details for
Bug 67485
xorg 6.8.0-r1 xinerama broken using an xorg.conf that worked with 6.7.0
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch for fixing monitor detection bugs
xorg_radeon_monitor.diff (text/plain), 6.34 KB, created by
Lance Albertson (RETIRED)
on 2004-10-18 07:39:41 UTC
(
hide
)
Description:
Patch for fixing monitor detection bugs
Filename:
MIME Type:
Creator:
Lance Albertson (RETIRED)
Created:
2004-10-18 07:39:41 UTC
Size:
6.34 KB
patch
obsolete
>Index: radeon_bios.c >=================================================================== >RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_bios.c,v >retrieving revision 1.1 >diff -u -r1.1 radeon_bios.c >--- radeon_bios.c 30 Jul 2004 22:20:21 -0000 1.1 >+++ radeon_bios.c 18 Oct 2004 00:48:24 -0000 >@@ -198,6 +198,7 @@ > return FALSE; > } > } else { >+ int connector_found = 0; > if ((tmp = RADEON_BIOS16(info->ROMHeaderStart + 0x50))) { > for (i = 1; i < 4; i++) { > >@@ -222,9 +223,7 @@ > pRADEONEnt->PortInfo[tmp1].TMDSType == TMDS_INT) > pRADEONEnt->PortInfo[tmp1].TMDSType = TMDS_UNKNOWN; > >- xf86DrvMsg(0, X_INFO, "Connector%d: DDCType-%d, DACType-%d, TMDSType-%d, ConnectorType-%d\n", >- tmp1, pRADEONEnt->PortInfo[tmp1].DDCType, pRADEONEnt->PortInfo[tmp1].DACType, >- pRADEONEnt->PortInfo[tmp1].TMDSType, pRADEONEnt->PortInfo[tmp1].ConnectorType); >+ connector_found++; > } > } else { > xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "No Connector Info Table found!\n"); >@@ -232,14 +231,43 @@ > } > > if (info->IsMobility) { >- if ((tmp = RADEON_BIOS16(info->ROMHeaderStart + 0x42))) { >- if ((tmp0 = RADEON_BIOS16(tmp + 0x15))) { >- if ((tmp1 = RADEON_BIOS8(tmp0+2) & 0x07)) { >- pRADEONEnt->PortInfo[0].DDCType = tmp1; >- xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "LCD DDC Info Table found!\n"); >- } >+ /* For the cases where only one VGA connector is found, >+ we assume LVDS is not listed in the connector table, >+ add it in here as the first port. >+ */ >+ if ((connector_found == 1) && (CONNECTOR_CRT)) { >+ memcpy (&pRADEONEnt->PortInfo[1], &pRADEONEnt->PortInfo[0], >+ sizeof (pRADEONEnt->PortInfo[0])); >+ pRADEONEnt->PortInfo[0].DACType = DAC_TVDAC; >+ pRADEONEnt->PortInfo[0].TMDSType = TMDS_UNKNOWN; >+ pRADEONEnt->PortInfo[0].DDCType = DDC_NONE_DETECTED; >+ pRADEONEnt->PortInfo[0].ConnectorType = CONNECTOR_PROPRIETARY; >+ >+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "LVDS port is not in connector table, added in.\n"); >+ connector_found++; > } >- } >+ >+ if ((tmp = RADEON_BIOS16(info->ROMHeaderStart + 0x42))) { >+ if ((tmp0 = RADEON_BIOS16(tmp + 0x15))) { >+ if ((tmp1 = RADEON_BIOS8(tmp0+2) & 0x07)) { >+ pRADEONEnt->PortInfo[0].DDCType = tmp1; >+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "LCD DDC Info Table found!\n"); >+ } >+ } >+ } >+ } >+ >+ if (connector_found == 0) { >+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "No connector found in Connector Info Table.\n"); >+ } else { >+ xf86DrvMsg(0, X_INFO, "Connector0: DDCType-%d, DACType-%d, TMDSType-%d, ConnectorType-%d\n", >+ pRADEONEnt->PortInfo[0].DDCType, pRADEONEnt->PortInfo[0].DACType, >+ pRADEONEnt->PortInfo[0].TMDSType, pRADEONEnt->PortInfo[0].ConnectorType); >+ } >+ if (connector_found == 2) { >+ xf86DrvMsg(0, X_INFO, "Connector1: DDCType-%d, DACType-%d, TMDSType-%d, ConnectorType-%d\n", >+ pRADEONEnt->PortInfo[1].DDCType, pRADEONEnt->PortInfo[1].DACType, >+ pRADEONEnt->PortInfo[1].TMDSType, pRADEONEnt->PortInfo[1].ConnectorType); > } > > #if 0 >Index: radeon_driver.c >=================================================================== >RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c,v >retrieving revision 1.23 >diff -u -r1.23 radeon_driver.c >--- radeon_driver.c 11 Oct 2004 23:20:26 -0000 1.23 >+++ radeon_driver.c 18 Oct 2004 00:48:26 -0000 >@@ -1726,6 +1726,13 @@ > break; > } > } >+ for (i = 0; i < max_mt; i++) { >+ if (strcmp(s2, MonTypeName[i]) == 0) { >+ pRADEONEnt->PortInfo[1].MonType = MonTypeID[i]; >+ break; >+ } >+ } >+ > if (i == max_mt) > xf86DrvMsg(pScrn->scrnIndex, X_WARNING, > "Invalid Monitor type specified for 2nd port \n"); >@@ -1758,32 +1765,45 @@ > > } > >- if (pRADEONEnt->PortInfo[0].MonType == MT_UNKNOWN || pRADEONEnt->PortInfo[1].MonType == MT_UNKNOWN) { >- >- if(((!info->HasCRTC2) || info->IsDellServer) && >- (pRADEONEnt->PortInfo[0].MonType == MT_UNKNOWN)) { >+ if(((!info->HasCRTC2) || info->IsDellServer)) { >+ if (pRADEONEnt->PortInfo[0].MonType == MT_UNKNOWN) { > if((pRADEONEnt->PortInfo[0].MonType = RADEONDisplayDDCConnected(pScrn, DDC_DVI, &pRADEONEnt->PortInfo[0]))); > else if((pRADEONEnt->PortInfo[0].MonType = RADEONDisplayDDCConnected(pScrn, DDC_VGA, &pRADEONEnt->PortInfo[0]))); > else if((pRADEONEnt->PortInfo[0].MonType = RADEONDisplayDDCConnected(pScrn, DDC_CRT2, &pRADEONEnt->PortInfo[0]))); > else > pRADEONEnt->PortInfo[0].MonType = MT_CRT; >+ } > >- if (!ignore_edid) { >- if (pRADEONEnt->PortInfo[0].MonInfo) { >- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Monitor1 EDID data ---------------------------\n"); >- xf86PrintEDID(pRADEONEnt->PortInfo[0].MonInfo ); >- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "End of Monitor1 EDID data --------------------\n"); >- } >+ if (!ignore_edid) { >+ if (pRADEONEnt->PortInfo[0].MonInfo) { >+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Monitor1 EDID data ---------------------------\n"); >+ xf86PrintEDID(pRADEONEnt->PortInfo[0].MonInfo ); >+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "End of Monitor1 EDID data --------------------\n"); > } >- >- pRADEONEnt->MonType1 = pRADEONEnt->PortInfo[0].MonType; >- pRADEONEnt->MonInfo1 = pRADEONEnt->PortInfo[0].MonInfo; >- pRADEONEnt->MonType2 = MT_NONE; >- pRADEONEnt->MonInfo2 = NULL; >- info->MergeType = MT_NONE; >- return TRUE; > } > >+ pRADEONEnt->MonType1 = pRADEONEnt->PortInfo[0].MonType; >+ pRADEONEnt->MonInfo1 = pRADEONEnt->PortInfo[0].MonInfo; >+ pRADEONEnt->MonType2 = MT_NONE; >+ pRADEONEnt->MonInfo2 = NULL; >+ info->MergeType = MT_NONE; >+ info->DisplayType = pRADEONEnt->MonType1; >+ >+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, >+ "Primary:\n Monitor -- %s\n Connector -- %s\n DAC Type -- %s\n TMDS Type -- %s\n DDC Type -- %s\n", >+ MonTypeName[pRADEONEnt->PortInfo[0].MonType+1], >+ info->IsAtomBios ? >+ ConnectorTypeNameATOM[pRADEONEnt->PortInfo[0].ConnectorType]: >+ ConnectorTypeName[pRADEONEnt->PortInfo[0].ConnectorType], >+ DACTypeName[pRADEONEnt->PortInfo[0].DACType+1], >+ TMDSTypeName[pRADEONEnt->PortInfo[0].TMDSType+1], >+ DDCTypeName[pRADEONEnt->PortInfo[0].DDCType]); >+ >+ return TRUE; >+ } >+ >+ if (pRADEONEnt->PortInfo[0].MonType == MT_UNKNOWN || pRADEONEnt->PortInfo[1].MonType == MT_UNKNOWN) { >+ > /* Primary Head (DVI or Laptop Int. panel)*/ > /* A ddc capable display connected on DVI port */ > if (pRADEONEnt->PortInfo[0].MonType == MT_UNKNOWN) {
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 67485
:
42099
|
42184
|
42232