summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Deucher <alex@botch2.(none)>2007-08-27 23:59:03 -0400
committerAlex Deucher <alex@botch2.(none)>2007-08-27 23:59:03 -0400
commit17e0f9e6cbfdb115034d327bd34d46339fd632b7 (patch)
treee4570d99b71b942bdd000b20e6aacb6283c061db
parent42839fb5a8584196e7b18375bff6c426ed0347d9 (diff)
RADEON: enable load detection for tvdac if output count for tvdac < 2
-rw-r--r--src/radeon.h1
-rw-r--r--src/radeon_output.c16
2 files changed, 10 insertions, 7 deletions
diff --git a/src/radeon.h b/src/radeon.h
index 53fb5f7f..fa2bccdf 100644
--- a/src/radeon.h
+++ b/src/radeon.h
@@ -799,6 +799,7 @@ typedef struct {
Bool crtc2_on;
Bool InternalTVOut;
+ int tvdac_use_count;
Rotation rotation;
void (*PointerMoved)(int, int, int);
diff --git a/src/radeon_output.c b/src/radeon_output.c
index 78f451ed..6bd0d953 100644
--- a/src/radeon_output.c
+++ b/src/radeon_output.c
@@ -1637,14 +1637,13 @@ radeon_create_resources(xf86OutputPtr output)
if (err != 0) {
xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
"RRConfigureOutputProperty error, %d\n", err);
- }
+ }
if (radeon_output->DACType == DAC_PRIMARY)
data = 1; /* primary dac, only drives vga */
else if (radeon_output->DACType == DAC_TVDAC &&
- info->IsMobility &&
- !info->IsIGP)
- data = 1; /* laptops with tv only on tvdac */
+ info->tvdac_use_count < 2)
+ data = 1; /* only one output with tvdac */
else
data = 0; /* shared tvdac between vga/dvi/tv */
@@ -2428,9 +2427,8 @@ void RADEONInitConnector(xf86OutputPtr output)
if (radeon_output->DACType == DAC_PRIMARY)
radeon_output->load_detection = 1; /* primary dac, only drives vga */
else if (radeon_output->DACType == DAC_TVDAC &&
- info->IsMobility &&
- !info->IsIGP)
- radeon_output->load_detection = 1; /* laptops with tv only on tvdac */
+ info->tvdac_use_count < 2)
+ radeon_output->load_detection = 1; /* only one output with tvdac */
else
radeon_output->load_detection = 0; /* shared tvdac between vga/dvi/tv */
@@ -2617,8 +2615,12 @@ Bool RADEONSetupConnectors(ScrnInfoPtr pScrn)
}
}
+ info->tvdac_use_count = 0;
for (i = 0; i < RADEON_MAX_BIOS_CONNECTOR; i++) {
if (info->BiosConnector[i].valid) {
+ if (info->BiosConnector[i].DACType == DAC_TVDAC)
+ info->tvdac_use_count++;
+
if (info->IsAtomBios) {
if ((info->BiosConnector[i].ConnectorType == CONNECTOR_DVI_D_ATOM) ||
(info->BiosConnector[i].ConnectorType == CONNECTOR_DVI_I_ATOM) ||