summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlex Deucher <alex@botch2.(none)>2007-11-11 18:43:03 -0500
committerAlex Deucher <alex@botch2.(none)>2007-11-11 18:43:03 -0500
commit2ea95900547165e86ad3f8a41ce3331a05bad60e (patch)
tree54a3d4ca54c7fe48d6762c6b7c1709d86d9ec27d /src
parent7ce730828c293f0810dfdc554df48dfd76e35c49 (diff)
Add full parsing support for atom bios connector table
Diffstat (limited to 'src')
-rw-r--r--src/radeon_bios.c15
-rw-r--r--src/radeon_probe.h2
2 files changed, 13 insertions, 4 deletions
diff --git a/src/radeon_bios.c b/src/radeon_bios.c
index 342e458b..7025afac 100644
--- a/src/radeon_bios.c
+++ b/src/radeon_bios.c
@@ -170,8 +170,15 @@ static Bool RADEONGetATOMConnectorInfoFromBIOS (ScrnInfoPtr pScrn)
if (offset) {
tmp = RADEON_BIOS16(offset + 4);
- for (i = 0; i < 8; i++) {
+ for (i = 0; i < RADEON_MAX_BIOS_CONNECTOR; i++) {
if (tmp & (1 << i)) {
+
+ if (i == 8) {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Skipping Component Video\n");
+ info->BiosConnector[i].valid = FALSE;
+ continue;
+ }
+
info->BiosConnector[i].valid = TRUE;
portinfo = RADEON_BIOS16(offset + 6 + i * 2);
info->BiosConnector[i].DACType = (portinfo & 0xf) - 1;
@@ -210,6 +217,8 @@ static Bool RADEONGetATOMConnectorInfoFromBIOS (ScrnInfoPtr pScrn)
info->BiosConnector[i].TMDSType = TMDS_INT;
else if (i == 7)
info->BiosConnector[i].TMDSType = TMDS_EXT;
+ else if (i == 9)
+ info->BiosConnector[i].TMDSType = TMDS_EXT;
else
info->BiosConnector[i].TMDSType = TMDS_UNKNOWN;
@@ -227,10 +236,10 @@ static Bool RADEONGetATOMConnectorInfoFromBIOS (ScrnInfoPtr pScrn)
for (j = 0; j < 8; j++) {
if (info->BiosConnector[j].valid && (i != j) ) {
if (info->BiosConnector[i].output_id == info->BiosConnector[j].output_id) {
- if ((i == 3) || (i == 7)) {
+ if ((i == 3) || (i == 7) || (i == 9)) {
info->BiosConnector[i].DACType = info->BiosConnector[j].DACType;
info->BiosConnector[j].valid = FALSE;
- } else if ((j == 3) || (j == 7)) {
+ } else if ((j == 3) || (j == 7) || (j == 9)) {
info->BiosConnector[j].DACType = info->BiosConnector[i].DACType;
info->BiosConnector[i].valid = FALSE;
}
diff --git a/src/radeon_probe.h b/src/radeon_probe.h
index c24993c7..6bf0dced 100644
--- a/src/radeon_probe.h
+++ b/src/radeon_probe.h
@@ -245,7 +245,7 @@ typedef struct _RADEONOutputPrivateRec {
} RADEONOutputPrivateRec, *RADEONOutputPrivatePtr;
#define RADEON_MAX_CRTC 2
-#define RADEON_MAX_BIOS_CONNECTOR 8
+#define RADEON_MAX_BIOS_CONNECTOR 16
typedef struct
{