xf86-video-ati: Branch 'master'
Alex Deucher
agd5f at kemper.freedesktop.org
Thu Sep 22 07:45:27 PDT 2011
src/atombios_output.c | 9 +++++++++
1 file changed, 9 insertions(+)
New commits:
commit a6b2bd2d184f10d4c56c4ee17186aedb238a36ec
Author: Alex Deucher <alexdeucher at gmail.com>
Date: Wed Sep 21 17:00:16 2011 -0400
UMS: fix DDIA enable on some rs690 systems
DVOOutputControl checks the value of of bios scratch reg 3
on some tables and assumes the encoder is already enabled
if the DFP2_ACTIVE bit is set. Clear that bit so the table
sets the DDIA enable bit properly.
Signed-off-by: Alex Deucher <alexdeucher at gmail.com>
diff --git a/src/atombios_output.c b/src/atombios_output.c
index 0d0f48a..bfaeb6b 100644
--- a/src/atombios_output.c
+++ b/src/atombios_output.c
@@ -1465,6 +1465,8 @@ atombios_output_dpms(xf86OutputPtr output, int mode)
unsigned char *space;
int index = 0;
Bool is_dig = FALSE;
+ unsigned char *RADEONMMIO = info->MMIO;
+ uint32_t reg = 0;
if (radeon_encoder == NULL)
return;
@@ -1541,12 +1543,19 @@ atombios_output_dpms(xf86OutputPtr output, int mode)
data.exec.dataSpace = (void *)&space;
data.exec.pspace = &disp_data;
+ /* workaround for DVOOutputControl on some RS690 systems */
+ if (radeon_encoder->encoder_id == ENCODER_OBJECT_ID_INTERNAL_DDI) {
+ reg = INREG(RADEON_BIOS_3_SCRATCH);
+ OUTREG(RADEON_BIOS_3_SCRATCH, reg & ~ATOM_S3_DFP2I_ACTIVE);
+ }
if (RHDAtomBiosFunc(info->atomBIOS->scrnIndex, info->atomBIOS, ATOMBIOS_EXEC, &data) == ATOM_SUCCESS)
ErrorF("Output %s enable success\n",
device_name[radeon_get_device_index(radeon_output->active_device)]);
else
ErrorF("Output %s enable failed\n",
device_name[radeon_get_device_index(radeon_output->active_device)]);
+ if (radeon_encoder->encoder_id == ENCODER_OBJECT_ID_INTERNAL_DDI)
+ OUTREG(RADEON_BIOS_3_SCRATCH, reg);
}
/* at least for TV atom fails to reassociate the correct crtc source at dpms on */
if (radeon_output->active_device & (ATOM_DEVICE_TV_SUPPORT))
More information about the xorg-commit
mailing list