@@ -123,6 +123,7 @@ static void RADEONGetMergedFBOptions(Scr static void RADEONSetDynamicClock(ScrnInfoPtr pScrn, int mode); static void RADEONForceSomeClocks(ScrnInfoPtr pScrn); static void RADEONSaveMemMapRegisters(ScrnInfoPtr pScrn, RADEONSavePtr save); +static void RADEONSaveMode(ScrnInfoPtr pScrn, RADEONSavePtr save); #ifdef XF86DRI static void RADEONAdjustMemMapRegisters(ScrnInfoPtr pScrn, RADEONSavePtr save); @@ -6450,6 +6453,9 @@ static Bool RADEONModeInit(ScrnInfoPtr p RADEONTRACE(("RADEONModeInit()\n")); +/* some of the functions called in RADEONInit rely on some state already + set e.g. the TMDS_TRANSMITTER_CNTL must not be overwritten with 0 */ + RADEONSaveMode(pScrn, &info->ModeReg); if (!RADEONInit(pScrn, mode, &info->ModeReg)) return FALSE; pScrn->vtSema = TRUE; diff --git a/src/radeon_exa.c b/src/radeon_exa.c diff --git a/src/radeon_exa_funcs.c b/src/radeon_exa_funcs.c diff --git a/src/radeon_exa_render.c b/src/radeon_exa_render.c diff --git a/src/radeon_macros.h b/src/radeon_macros.h diff --git a/src/radeon_mergedfb.c b/src/radeon_mergedfb.c diff --git a/src/radeon_mergedfb.h b/src/radeon_mergedfb.h diff --git a/src/radeon_misc.c b/src/radeon_misc.c diff --git a/src/radeon_mm_i2c.c b/src/radeon_mm_i2c.c diff --git a/src/radeon_modes.c b/src/radeon_modes.c index 70bf184..531247e 100644 --- a/src/radeon_modes.c +++ b/src/radeon_modes.c