summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2009-01-21 13:45:11 -0500
committerAlex Deucher <alexdeucher@gmail.com>2009-01-21 13:45:11 -0500
commit3f8bbede8bf639050f773780888b89cbdcb425b8 (patch)
tree60593cbe070e2d6b47f1e3f0161033e6346fe46b
parent80e0162ea2c1f793964731268251aba2d3243127 (diff)
fix legacy crtc routing and add some debugging info
-rw-r--r--src/legacy_output.c32
-rw-r--r--src/radeon_atombios.c15
2 files changed, 39 insertions, 8 deletions
diff --git a/src/legacy_output.c b/src/legacy_output.c
index 71fef863..a35d0bbd 100644
--- a/src/legacy_output.c
+++ b/src/legacy_output.c
@@ -708,6 +708,7 @@ RADEONEnableDisplay(xf86OutputPtr output, BOOL bEnable)
/*ErrorF("enable montype: %d\n", radeon_output->MonType);*/
switch (radeon_encoder->encoder_id) {
case ENCODER_OBJECT_ID_INTERNAL_LVDS:
+ ErrorF("enable LVDS\n");
info->output_lcd1 |= (1 << o);
tmp = INREG(RADEON_LVDS_GEN_CNTL);
tmp |= (RADEON_LVDS_ON | RADEON_LVDS_BLON | RADEON_LVDS_EN);
@@ -718,6 +719,7 @@ RADEONEnableDisplay(xf86OutputPtr output, BOOL bEnable)
save->lvds_gen_cntl &= ~(RADEON_LVDS_DISPLAY_DIS);
break;
case ENCODER_OBJECT_ID_INTERNAL_TMDS1:
+ ErrorF("enable FP1\n");
info->output_dfp1 |= (1 << o);
tmp = INREG(RADEON_FP_GEN_CNTL);
tmp |= (RADEON_FP_FPON | RADEON_FP_TMDS_EN);
@@ -733,6 +735,7 @@ RADEONEnableDisplay(xf86OutputPtr output, BOOL bEnable)
}
break;
case ENCODER_OBJECT_ID_INTERNAL_DVO1:
+ ErrorF("enable FP2\n");
info->output_dfp2 |= (1 << o);
tmp = INREG(RADEON_FP2_GEN_CNTL);
tmp &= ~RADEON_FP2_BLANK_EN;
@@ -751,6 +754,7 @@ RADEONEnableDisplay(xf86OutputPtr output, BOOL bEnable)
}
break;
case ENCODER_OBJECT_ID_INTERNAL_DAC1:
+ ErrorF("enable primary dac\n");
info->output_crt1 |= (1 << o);
tmp = INREG(RADEON_CRTC_EXT_CNTL);
tmp |= RADEON_CRTC_CRT_ON;
@@ -760,6 +764,7 @@ RADEONEnableDisplay(xf86OutputPtr output, BOOL bEnable)
break;
case ENCODER_OBJECT_ID_INTERNAL_DAC2:
if (radeon_output->active_device && (ATOM_DEVICE_TV_SUPPORT)) {
+ ErrorF("enable TV\n");
info->output_tv1 |= (1 << o);
tmp = INREG(RADEON_TV_MASTER_CNTL);
tmp |= RADEON_TV_ON;
@@ -767,6 +772,7 @@ RADEONEnableDisplay(xf86OutputPtr output, BOOL bEnable)
tv_dac_change = 2;
radeon_output->tv_on = TRUE;
} else {
+ ErrorF("enable TVDAC\n");
info->output_crt2 |= (1 << o);
if (info->ChipFamily == CHIP_FAMILY_R200) {
tmp = INREG(RADEON_FP2_GEN_CNTL);
@@ -787,6 +793,7 @@ RADEONEnableDisplay(xf86OutputPtr output, BOOL bEnable)
/*ErrorF("disable montype: %d\n", radeon_output->MonType);*/
switch (radeon_encoder->encoder_id) {
case ENCODER_OBJECT_ID_INTERNAL_LVDS:
+ ErrorF("disable LVDS\n");
info->output_lcd1 &= ~(1 << o);
if (!info->output_lcd1) {
unsigned long tmpPixclksCntl = INPLL(pScrn, RADEON_PIXCLKS_CNTL);
@@ -808,6 +815,7 @@ RADEONEnableDisplay(xf86OutputPtr output, BOOL bEnable)
}
break;
case ENCODER_OBJECT_ID_INTERNAL_TMDS1:
+ ErrorF("disable FP1\n");
info->output_dfp1 &= ~(1 << o);
if (!info->output_dfp1) {
tmp = INREG(RADEON_FP_GEN_CNTL);
@@ -825,6 +833,7 @@ RADEONEnableDisplay(xf86OutputPtr output, BOOL bEnable)
}
break;
case ENCODER_OBJECT_ID_INTERNAL_DVO1:
+ ErrorF("disable FP2\n");
info->output_dfp2 &= ~(1 << o);
if (!info->output_dfp2) {
tmp = INREG(RADEON_FP2_GEN_CNTL);
@@ -845,6 +854,7 @@ RADEONEnableDisplay(xf86OutputPtr output, BOOL bEnable)
}
break;
case ENCODER_OBJECT_ID_INTERNAL_DAC1:
+ ErrorF("disable primary dac\n");
info->output_crt1 &= ~(1 << o);
if (!info->output_crt1) {
tmp = INREG(RADEON_CRTC_EXT_CNTL);
@@ -856,6 +866,7 @@ RADEONEnableDisplay(xf86OutputPtr output, BOOL bEnable)
break;
case ENCODER_OBJECT_ID_INTERNAL_DAC2:
if (radeon_output->active_device && (ATOM_DEVICE_TV_SUPPORT)) {
+ ErrorF("disable TV\n");
info->output_tv1 &= ~(1 << o);
tv_dac_change = 2;
if (!info->output_tv1) {
@@ -865,6 +876,7 @@ RADEONEnableDisplay(xf86OutputPtr output, BOOL bEnable)
radeon_output->tv_on = FALSE;
}
} else {
+ ErrorF("disable TVDAC\n");
info->output_crt2 &= ~(1 << o);
tv_dac_change = 1;
if (!info->output_crt2) {
@@ -1391,26 +1403,31 @@ legacy_output_mode_set(xf86OutputPtr output, DisplayModePtr mode,
xf86CrtcPtr crtc = output->crtc;
RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private;
radeon_encoder_ptr radeon_encoder = radeon_get_encoder(output);
+ Bool is_primary = FALSE;
if (radeon_encoder == NULL)
return;
if (radeon_crtc->crtc_id == 0) {
+ is_primary = TRUE;
RADEONInitRMXRegisters(output, info->ModeReg, adjusted_mode);
RADEONRestoreRMXRegisters(pScrn, info->ModeReg);
}
switch (radeon_encoder->encoder_id) {
case ENCODER_OBJECT_ID_INTERNAL_LVDS:
- RADEONInitLVDSRegisters(output, info->ModeReg, adjusted_mode, radeon_crtc->crtc_id);
+ ErrorF("set LVDS\n");
+ RADEONInitLVDSRegisters(output, info->ModeReg, adjusted_mode, is_primary);
RADEONRestoreLVDSRegisters(pScrn, info->ModeReg);
break;
case ENCODER_OBJECT_ID_INTERNAL_TMDS1:
- RADEONInitFPRegisters(output, info->ModeReg, adjusted_mode, radeon_crtc->crtc_id);
+ ErrorF("set FP1\n");
+ RADEONInitFPRegisters(output, info->ModeReg, adjusted_mode, is_primary);
RADEONRestoreFPRegisters(pScrn, info->ModeReg);
break;
case ENCODER_OBJECT_ID_INTERNAL_DVO1:
- RADEONInitFP2Registers(output, info->ModeReg, adjusted_mode, radeon_crtc->crtc_id);
+ ErrorF("set FP2\n");
+ RADEONInitFP2Registers(output, info->ModeReg, adjusted_mode, is_primary);
if (info->IsAtomBios) {
unsigned char *RADEONMMIO = info->MMIO;
uint32_t fp2_gen_cntl;
@@ -1432,16 +1449,19 @@ legacy_output_mode_set(xf86OutputPtr output, DisplayModePtr mode,
}
break;
case ENCODER_OBJECT_ID_INTERNAL_DAC1:
- RADEONInitDACRegisters(output, info->ModeReg, adjusted_mode, radeon_crtc->crtc_id);
+ ErrorF("set primary dac\n");
+ RADEONInitDACRegisters(output, info->ModeReg, adjusted_mode, is_primary);
RADEONRestoreDACRegisters(pScrn, info->ModeReg);
break;
case ENCODER_OBJECT_ID_INTERNAL_DAC2:
if (radeon_output->active_device && (ATOM_DEVICE_TV_SUPPORT)) {
- RADEONInitTVRegisters(output, info->ModeReg, adjusted_mode, radeon_crtc->crtc_id);
+ ErrorF("set TV\n");
+ RADEONInitTVRegisters(output, info->ModeReg, adjusted_mode, is_primary);
RADEONRestoreDACRegisters(pScrn, info->ModeReg);
RADEONRestoreTVRegisters(pScrn, info->ModeReg);
} else {
- RADEONInitDAC2Registers(output, info->ModeReg, adjusted_mode, radeon_crtc->crtc_id);
+ ErrorF("set TVDAC\n");
+ RADEONInitDAC2Registers(output, info->ModeReg, adjusted_mode, is_primary);
RADEONRestoreDACRegisters(pScrn, info->ModeReg);
}
break;
diff --git a/src/radeon_atombios.c b/src/radeon_atombios.c
index 78d6ee16..9a4927c4 100644
--- a/src/radeon_atombios.c
+++ b/src/radeon_atombios.c
@@ -1601,8 +1601,10 @@ radeon_add_encoder(ScrnInfoPtr pScrn, uint32_t encoder_id, uint32_t device_suppo
uint32_t device_index = radeon_get_device_index(device_support);
int i;
- if (device_support == 0)
+ if (device_support == 0) {
+ ErrorF("device support == 0\n");
return FALSE;
+ }
if (info->encoders[device_index] != NULL)
return TRUE;
@@ -1620,8 +1622,10 @@ radeon_add_encoder(ScrnInfoPtr pScrn, uint32_t encoder_id, uint32_t device_suppo
info->encoders[device_index]->encoder_id = encoder_id;
// add dev_priv stuff
return TRUE;
- } else
+ } else {
+ ErrorF("xalloc failed\n");
return FALSE;
+ }
}
}
@@ -2057,6 +2061,7 @@ radeon_get_encoder_id_from_supported_device(ScrnInfoPtr pScrn, uint32_t supporte
switch (dac) {
// primary dac
case 1:
+ ErrorF("adding primary dac\n");
if ((info->ChipFamily == CHIP_FAMILY_RS300) ||
(info->ChipFamily == CHIP_FAMILY_RS400) ||
(info->ChipFamily == CHIP_FAMILY_RS480))
@@ -2068,6 +2073,7 @@ radeon_get_encoder_id_from_supported_device(ScrnInfoPtr pScrn, uint32_t supporte
break;
// secondary dac
case 2:
+ ErrorF("adding tv dac\n");
if (IS_AVIVO_VARIANT)
ret = ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC2;
else {
@@ -2079,6 +2085,7 @@ radeon_get_encoder_id_from_supported_device(ScrnInfoPtr pScrn, uint32_t supporte
break;
// external dac
case 3:
+ ErrorF("adding external dac\n");
if (IS_AVIVO_VARIANT)
ret = ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1;
else
@@ -2087,12 +2094,14 @@ radeon_get_encoder_id_from_supported_device(ScrnInfoPtr pScrn, uint32_t supporte
}
break;
case ATOM_DEVICE_LCD1_SUPPORT:
+ ErrorF("adding LVDS\n");
if (IS_AVIVO_VARIANT)
ret = ENCODER_OBJECT_ID_INTERNAL_LVTM1;
else
ret = ENCODER_OBJECT_ID_INTERNAL_LVDS;
break;
case ATOM_DEVICE_DFP1_SUPPORT:
+ ErrorF("adding FP1\n");
if ((info->ChipFamily == CHIP_FAMILY_RS300) ||
(info->ChipFamily == CHIP_FAMILY_RS400) ||
(info->ChipFamily == CHIP_FAMILY_RS480))
@@ -2104,6 +2113,7 @@ radeon_get_encoder_id_from_supported_device(ScrnInfoPtr pScrn, uint32_t supporte
break;
case ATOM_DEVICE_LCD2_SUPPORT:
case ATOM_DEVICE_DFP2_SUPPORT:
+ ErrorF("adding FP2\n");
if ((info->ChipFamily == CHIP_FAMILY_RS600) ||
(info->ChipFamily == CHIP_FAMILY_RS690) ||
(info->ChipFamily == CHIP_FAMILY_RS740))
@@ -2114,6 +2124,7 @@ radeon_get_encoder_id_from_supported_device(ScrnInfoPtr pScrn, uint32_t supporte
ret = ENCODER_OBJECT_ID_INTERNAL_DVO1;
break;
case ATOM_DEVICE_DFP3_SUPPORT:
+ ErrorF("adding FP3\n");
ret = ENCODER_OBJECT_ID_INTERNAL_LVTM1;
break;
}