diff options
author | Alex Deucher <alexdeucher@gmail.com> | 2009-01-21 13:45:11 -0500 |
---|---|---|
committer | Alex Deucher <alexdeucher@gmail.com> | 2009-01-21 13:45:11 -0500 |
commit | 3f8bbede8bf639050f773780888b89cbdcb425b8 (patch) | |
tree | 60593cbe070e2d6b47f1e3f0161033e6346fe46b | |
parent | 80e0162ea2c1f793964731268251aba2d3243127 (diff) |
fix legacy crtc routing and add some debugging info
-rw-r--r-- | src/legacy_output.c | 32 | ||||
-rw-r--r-- | src/radeon_atombios.c | 15 |
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; } |