xf86-video-ati: Branch 'master'

Alex Deucher agd5f at kemper.freedesktop.org
Sat Aug 25 14:37:48 PDT 2007


 man/radeon.man       |    8 -
 src/radeon.h         |    3 
 src/radeon_crtc.c    |    1 
 src/radeon_display.c |    1 
 src/radeon_driver.c  |  306 ++++++++++-----------------------------------------
 src/radeon_output.c  |    1 
 src/radeon_tv.c      |    1 
 7 files changed, 61 insertions(+), 260 deletions(-)

New commits:
diff-tree 3fd2d22a02812d5f86cdc1c9503f48362b0c362b (from 3469e1aa08792890fa6a5c72da52a1992a0b382c)
Author: Alex Deucher <alex at botch2.(none)>
Date:   Sat Aug 25 17:37:35 2007 -0400

    RADEON: remove fbdev option
    
    FBDev support is currently broken, and it not really compatible
    with randr

diff --git a/man/radeon.man b/man/radeon.man
index 8423cc9..88665bf 100644
--- a/man/radeon.man
+++ b/man/radeon.man
@@ -150,14 +150,6 @@ affects the "true" overlay via xv, it wo
 .br
 The default value is either 1536 (for most chips) or 1920.
 .TP
-.BI "Option \*qUseFBDev\*q \*q" boolean \*q
-Enable or disable use of an OS\-specific framebuffer device interface
-(which is not supported on all OSs).  MergedFB does not work when this
-option is in use.  See fbdevhw(__drivermansuffix__) for further information. 
-.br
-The default is
-.B off.
-.TP
 .BI "Option \*qAGPMode\*q \*q" integer \*q
 Set AGP data transfer rate.
 (used only when DRI is enabled)
diff --git a/src/radeon.h b/src/radeon.h
index 6f880b8..53fb5f7 100644
--- a/src/radeon.h
+++ b/src/radeon.h
@@ -123,7 +123,6 @@ typedef enum {
 #endif
     OPTION_DDC_MODE,
     OPTION_IGNORE_EDID,
-    OPTION_FBDEV,
     OPTION_DISP_PRIORITY,
     OPTION_PANEL_SIZE,
     OPTION_MIN_DOTCLOCK,
@@ -437,8 +436,6 @@ typedef struct {
     RADEONChipFamily  ChipFamily;
     RADEONErrata      ChipErrata;
 
-    Bool              FBDev;
-
     unsigned long     LinearAddr;       /* Frame buffer physical address     */
     unsigned long     MMIOAddr;         /* MMIO region physical address      */
     unsigned long     BIOSAddr;         /* BIOS physical address             */
diff --git a/src/radeon_crtc.c b/src/radeon_crtc.c
index 3ee7760..d42e482 100644
--- a/src/radeon_crtc.c
+++ b/src/radeon_crtc.c
@@ -36,7 +36,6 @@
 /* X and server generic header files */
 #include "xf86.h"
 #include "xf86_OSproc.h"
-#include "fbdevhw.h"
 #include "vgaHW.h"
 #include "xf86Modes.h"
 
diff --git a/src/radeon_display.c b/src/radeon_display.c
index ed20409..ed45d79 100644
--- a/src/radeon_display.c
+++ b/src/radeon_display.c
@@ -36,7 +36,6 @@
 /* X and server generic header files */
 #include "xf86.h"
 #include "xf86_OSproc.h"
-#include "fbdevhw.h"
 #include "vgaHW.h"
 #include "xf86Modes.h"
 
diff --git a/src/radeon_driver.c b/src/radeon_driver.c
index a111e0d..e445b9e 100644
--- a/src/radeon_driver.c
+++ b/src/radeon_driver.c
@@ -98,11 +98,10 @@
 #include "xf86cmap.h"
 #include "vbe.h"
 
-				/* fbdevhw * vgaHW definitions */
+				/* vgaHW definitions */
 #ifdef WITH_VGAHW
 #include "vgaHW.h"
 #endif
-#include "fbdevhw.h"
 
 #define DPMS_SERVER
 #include <X11/extensions/dpms.h>
@@ -159,7 +158,6 @@ static const OptionInfoRec RADEONOptions
 #endif
     { OPTION_DDC_MODE,       "DDCMode",          OPTV_BOOLEAN, {0}, FALSE },
     { OPTION_IGNORE_EDID,    "IgnoreEDID",       OPTV_BOOLEAN, {0}, FALSE },
-    { OPTION_FBDEV,          "UseFBDev",         OPTV_BOOLEAN, {0}, FALSE },
     { OPTION_DISP_PRIORITY,  "DisplayPriority",  OPTV_ANYSTR,  {0}, FALSE },
     { OPTION_PANEL_SIZE,     "PanelSize",        OPTV_ANYSTR,  {0}, FALSE },
     { OPTION_MIN_DOTCLOCK,   "ForceMinDotClock", OPTV_FREQ,    {0}, FALSE },
@@ -208,34 +206,6 @@ static const char *vgahwSymbols[] = {
 };
 #endif
 
-static const char *fbdevHWSymbols[] = {
-    "fbdevHWInit",
-    "fbdevHWUseBuildinMode",
-
-    "fbdevHWGetVidmem",
-
-    "fbdevHWDPMSSet",
-
-    /* colormap */
-    "fbdevHWLoadPalette",
-    /* ScrnInfo hooks */
-    "fbdevHWAdjustFrame",
-    "fbdevHWEnterVT",
-    "fbdevHWLeaveVT",
-    "fbdevHWModeInit",
-    "fbdevHWRestore",
-    "fbdevHWSave",
-    "fbdevHWSwitchMode",
-    "fbdevHWValidModeWeak",
-
-    "fbdevHWMapMMIO",
-    "fbdevHWMapVidmem",
-    "fbdevHWUnmapMMIO",
-    "fbdevHWUnmapVidmem",
-
-    NULL
-};
-
 static const char *ddcSymbols[] = {
     "xf86PrintEDID",
     "xf86DoEDID_DDC1",
@@ -396,7 +366,6 @@ void RADEONLoaderRefSymLists(void)
 			  drmSymbols,
 			  driSymbols,
 #endif
-			  fbdevHWSymbols,
 			  vbeSymbols,
 			  int10Symbols,
 			  i2cSymbols,
@@ -553,15 +522,11 @@ static Bool RADEONMapMMIO(ScrnInfoPtr pS
 {
     RADEONInfoPtr  info = RADEONPTR(pScrn);
 
-    if (info->FBDev) {
-	info->MMIO = fbdevHWMapMMIO(pScrn);
-    } else {
-	info->MMIO = xf86MapPciMem(pScrn->scrnIndex,
-				   VIDMEM_MMIO | VIDMEM_READSIDEEFFECT,
-				   info->PciTag,
-				   info->MMIOAddr,
-				   info->MMIOSize);
-    }
+    info->MMIO = xf86MapPciMem(pScrn->scrnIndex,
+			       VIDMEM_MMIO | VIDMEM_READSIDEEFFECT,
+			       info->PciTag,
+			       info->MMIOAddr,
+			       info->MMIOSize);
 
     if (!info->MMIO) return FALSE;
     return TRUE;
@@ -574,11 +539,8 @@ static Bool RADEONUnmapMMIO(ScrnInfoPtr 
 {
     RADEONInfoPtr  info = RADEONPTR(pScrn);
 
-    if (info->FBDev)
-	fbdevHWUnmapMMIO(pScrn);
-    else {
-	xf86UnMapVidMem(pScrn->scrnIndex, info->MMIO, info->MMIOSize);
-    }
+    xf86UnMapVidMem(pScrn->scrnIndex, info->MMIO, info->MMIOSize);
+
     info->MMIO = NULL;
     return TRUE;
 }
@@ -588,17 +550,13 @@ static Bool RADEONMapFB(ScrnInfoPtr pScr
 {
     RADEONInfoPtr  info = RADEONPTR(pScrn);
 
-    if (info->FBDev) {
-	info->FB = fbdevHWMapVidmem(pScrn);
-    } else {
-	xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG,
-		       "Map: 0x%08lx, 0x%08lx\n", info->LinearAddr, info->FbMapSize);
-	info->FB = xf86MapPciMem(pScrn->scrnIndex,
-				 VIDMEM_FRAMEBUFFER,
-				 info->PciTag,
-				 info->LinearAddr,
-				 info->FbMapSize);
-    }
+    xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG,
+		   "Map: 0x%08lx, 0x%08lx\n", info->LinearAddr, info->FbMapSize);
+    info->FB = xf86MapPciMem(pScrn->scrnIndex,
+			     VIDMEM_FRAMEBUFFER,
+			     info->PciTag,
+			     info->LinearAddr,
+			     info->FbMapSize);
 
     if (!info->FB) return FALSE;
     return TRUE;
@@ -609,10 +567,7 @@ static Bool RADEONUnmapFB(ScrnInfoPtr pS
 {
     RADEONInfoPtr  info = RADEONPTR(pScrn);
 
-    if (info->FBDev)
-	fbdevHWUnmapVidmem(pScrn);
-    else
-	xf86UnMapVidMem(pScrn->scrnIndex, info->FB, info->FbMapSize);
+    xf86UnMapVidMem(pScrn->scrnIndex, info->FB, info->FbMapSize);
     info->FB = NULL;
     return TRUE;
 }
@@ -1211,8 +1166,7 @@ static void RADEONInitMemoryMap(ScrnInfo
     }
 #endif
 
-    /* We won't try to change MC_FB_LOCATION when using fbdev */
-    if (!info->FBDev) {
+    {
 	if (info->IsIGP)
 	    info->mc_fb_location = INREG(RADEON_NB_TOM);
 	else
@@ -1380,9 +1334,7 @@ static Bool RADEONPreInitVRAM(ScrnInfoPt
     MessageType    from = X_PROBED;
     CARD32         accessible, bar_size;
 
-    if (info->FBDev)
-	pScrn->videoRam      = fbdevHWGetVidmem(pScrn) / 1024;
-    else if ((info->IsIGP)) {
+    if ((info->IsIGP)) {
         CARD32 tom = INREG(RADEON_NB_TOM);
 
 	pScrn->videoRam = (((tom >> 16) -
@@ -2293,12 +2245,7 @@ static void RADEONPreInitColorTiling(Scr
     }
 #endif /* XF86DRI */
 
-    if ((info->allowColorTiling) && (info->FBDev)) {
-	xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
-		   "Color tiling not supported with UseFBDev option\n");
-	info->allowColorTiling = FALSE;
-    }
-    else if (info->allowColorTiling) {
+    if (info->allowColorTiling) {
 	xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Color tiling enabled by default\n");
     } else {
 	xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Color tiling disabled\n");
@@ -2715,30 +2662,8 @@ _X_EXPORT Bool RADEONPreInit(ScrnInfoPtr
 	"X server will %skeep DPI constant for all screen sizes\n",
 	info->constantDPI ? "" : "not ");
 
-    if (xf86ReturnOptValBool(info->Options, OPTION_FBDEV, FALSE)) {
-	/* check for Linux framebuffer device */
-
-	if (xf86LoadSubModule(pScrn, "fbdevhw")) {
-	    xf86LoaderReqSymLists(fbdevHWSymbols, NULL);
-
-	    if (fbdevHWInit(pScrn, info->PciInfo, NULL)) {
-		pScrn->ValidMode     = fbdevHWValidModeWeak();
-		info->FBDev = TRUE;
-		xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
-			   "Using framebuffer device\n");
-	    } else {
-		xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
-			   "fbdevHWInit failed, not using framebuffer device\n");
-	    }
-	} else {
-	    xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
-		       "Couldn't load fbdevhw module, not using framebuffer device\n");
-	}
-    }
-
-    if (!info->FBDev)
-	if (!RADEONPreInitInt10(pScrn, &pInt10))
-	    goto fail;
+    if (!RADEONPreInitInt10(pScrn, &pInt10))
+	goto fail;
 
     RADEONPostInt10Check(pScrn, int10_save);
 
@@ -2906,9 +2831,7 @@ static void RADEONLoadPalette(ScrnInfoPt
     if (info->accelOn && pScrn->pScreen)
         RADEON_SYNC(info, pScrn);
 
-    if (info->FBDev) {
-	fbdevHWLoadPalette(pScrn, numColors, indices, colors, pVisual);
-    } else {
+    {
 
       for (c = 0; c < xf86_config->num_crtc; c++) {
 	  xf86CrtcPtr crtc = xf86_config->crtc[c];
@@ -3365,6 +3288,7 @@ Bool RADEONScreenInit(int scrnIndex, Scr
     RADEONInfoPtr  info  = RADEONPTR(pScrn);
     xf86CrtcConfigPtr   xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
     int            hasDRI = 0;
+    int i;
 #ifdef RENDER
     int            subPixelOrder = SubPixelUnknown;
     char*          s;
@@ -3465,11 +3389,11 @@ Bool RADEONScreenInit(int scrnIndex, Scr
 
     /* empty the surfaces */
     unsigned char *RADEONMMIO = info->MMIO;
-    unsigned int i;
-    for (i = 0; i < 8; i++) {
-	OUTREG(RADEON_SURFACE0_INFO + 16 * i, 0);
-	OUTREG(RADEON_SURFACE0_LOWER_BOUND + 16 * i, 0);
-	OUTREG(RADEON_SURFACE0_UPPER_BOUND + 16 * i, 0);
+    unsigned int j;
+    for (j = 0; j < 8; j++) {
+	OUTREG(RADEON_SURFACE0_INFO + 16 * j, 0);
+	OUTREG(RADEON_SURFACE0_LOWER_BOUND + 16 * j, 0);
+	OUTREG(RADEON_SURFACE0_UPPER_BOUND + 16 * j, 0);
     }
 
 #ifdef XF86DRI
@@ -3642,35 +3566,22 @@ Bool RADEONScreenInit(int scrnIndex, Scr
 #endif
 
     pScrn->vtSema = TRUE;
-    if (info->FBDev) {
-	unsigned char *RADEONMMIO = info->MMIO;
 
-	if (!fbdevHWModeInit(pScrn, pScrn->currentMode)) return FALSE;
-	pScrn->displayWidth = fbdevHWGetLineLength(pScrn)
-		/ info->CurrentLayout.pixel_bytes;
-	RADEONSaveMemMapRegisters(pScrn, &info->ModeReg);
-	info->fbLocation = (info->ModeReg.mc_fb_location & 0xffff) << 16;
-	info->ModeReg.surface_cntl = INREG(RADEON_SURFACE_CNTL);
-	info->ModeReg.surface_cntl &= ~RADEON_SURF_TRANSLATION_DIS;
-    } else {
-	int i;
-	for (i = 0; i < xf86_config->num_crtc; i++)
-	{
-	    xf86CrtcPtr	crtc = xf86_config->crtc[i];
+    for (i = 0; i < xf86_config->num_crtc; i++) {
+	xf86CrtcPtr	crtc = xf86_config->crtc[i];
 	    
-	    /* Mark that we'll need to re-set the mode for sure */
-	    memset(&crtc->mode, 0, sizeof(crtc->mode));
-	    if (!crtc->desiredMode.CrtcHDisplay) {
-		crtc->desiredMode = *RADEONCrtcFindClosestMode (crtc, pScrn->currentMode);
-		crtc->desiredRotation = RR_Rotate_0;
-		crtc->desiredX = 0;
-		crtc->desiredY = 0;
-	    }
+	/* Mark that we'll need to re-set the mode for sure */
+	memset(&crtc->mode, 0, sizeof(crtc->mode));
+	if (!crtc->desiredMode.CrtcHDisplay) {
+	    crtc->desiredMode = *RADEONCrtcFindClosestMode (crtc, pScrn->currentMode);
+	    crtc->desiredRotation = RR_Rotate_0;
+	    crtc->desiredX = 0;
+	    crtc->desiredY = 0;
+	}
 
-	    if (!xf86CrtcSetMode (crtc, &crtc->desiredMode, crtc->desiredRotation, crtc->desiredX, crtc->desiredY))
-		return FALSE;
+	if (!xf86CrtcSetMode (crtc, &crtc->desiredMode, crtc->desiredRotation, crtc->desiredX, crtc->desiredY))
+	    return FALSE;
 
-	}
     }
 
     RADEONSaveScreen(pScreen, SCREEN_SAVER_ON);
@@ -4090,32 +4001,6 @@ void RADEONRestoreCommonRegisters(ScrnIn
     }
 }
 
-/* Write miscellaneous registers which might have been destroyed by an fbdevHW
- * call
- */
-static void RADEONRestoreFBDevRegisters(ScrnInfoPtr pScrn,
-					 RADEONSavePtr restore)
-{
-#ifdef XF86DRI
-    RADEONInfoPtr  info       = RADEONPTR(pScrn);
-    RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn);
-    unsigned char *RADEONMMIO = info->MMIO;
-
-    /* Restore register for vertical blank interrupts */
-    if (info->irq) {
-	OUTREG(RADEON_GEN_INT_CNTL, restore->gen_int_cntl);
-    }
-
-    /* Restore registers for page flipping */
-    if (info->allowPageFlip) {
-	OUTREG(RADEON_CRTC_OFFSET_CNTL, restore->crtc_offset_cntl);
-	if (pRADEONEnt->HasCRTC2) {
-	    OUTREG(RADEON_CRTC2_OFFSET_CNTL, restore->crtc2_offset_cntl);
-	}
-    }
-#endif
-}
-
 void RADEONRestoreDACRegisters(ScrnInfoPtr pScrn,
 				       RADEONSavePtr restore)
 {
@@ -5079,29 +4964,6 @@ static void RADEONSaveCommonRegisters(Sc
     save->grph2_buffer_cntl  = INREG(RADEON_GRPH2_BUFFER_CNTL);
 }
 
-/* Read miscellaneous registers which might be destroyed by an fbdevHW call */
-static void RADEONSaveFBDevRegisters(ScrnInfoPtr pScrn, RADEONSavePtr save)
-{
-#ifdef XF86DRI
-    RADEONInfoPtr  info       = RADEONPTR(pScrn);
-    RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn);
-    unsigned char *RADEONMMIO = info->MMIO;
-
-    /* Save register for vertical blank interrupts */
-    if (info->irq) {
-	save->gen_int_cntl = INREG(RADEON_GEN_INT_CNTL);
-    }
-
-    /* Save registers for page flipping */
-    if (info->allowPageFlip) {
-	save->crtc_offset_cntl = INREG(RADEON_CRTC_OFFSET_CNTL);
-	if (pRADEONEnt->HasCRTC2) {
-	    save->crtc2_offset_cntl = INREG(RADEON_CRTC2_OFFSET_CNTL);
-	}
-    }
-#endif
-}
-
 /* Read CRTC registers */
 static void RADEONSaveCrtcRegisters(ScrnInfoPtr pScrn, RADEONSavePtr save)
 {
@@ -5411,13 +5273,6 @@ static void RADEONSave(ScrnInfoPtr pScrn
     xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG,
 		   "RADEONSave\n");
 
-    if (info->FBDev) {
-	RADEONSaveMemMapRegisters(pScrn, save);
-	fbdevHWSave(pScrn);
-	return;
-    }
-
-
 #ifdef WITH_VGAHW
     if (info->VGAAccess) {
 	vgaHWPtr hwp = VGAHWPTR(pScrn);
@@ -5464,10 +5319,6 @@ void RADEONRestore(ScrnInfoPtr pScrn)
     OUTREG(RADEON_RBBM_GUICNTL, RADEON_HOST_DATA_SWAP_NONE);
 #endif
 
-    if (info->FBDev) {
-	fbdevHWRestore(pScrn);
-	return;
-    }
     RADEONBlank(pScrn);
 
     OUTREG(RADEON_CLOCK_CNTL_INDEX, restore->clock_cntl_index);
@@ -5635,17 +5486,7 @@ Bool RADEONSwitchMode(int scrnIndex, Dis
     if (info->accelOn)
         RADEON_SYNC(info, pScrn);
 
-    if (info->FBDev) {
-	RADEONSaveFBDevRegisters(pScrn, &info->ModeReg);
-
-	ret = fbdevHWSwitchMode(scrnIndex, mode, flags);
-	pScrn->displayWidth = fbdevHWGetLineLength(pScrn)
-		/ info->CurrentLayout.pixel_bytes;
-
-	RADEONRestoreFBDevRegisters(pScrn, &info->ModeReg);
-    } else {
-	ret = xf86SetSingleMode (pScrn, mode, RR_Rotate_0);
-    }
+    ret = xf86SetSingleMode (pScrn, mode, RR_Rotate_0);
 
     if (info->tilingEnabled != tilingOld) {
 	/* need to redraw front buffer, I guess this can be considered a hack ? */
@@ -5841,14 +5682,10 @@ void RADEONAdjustFrame(int scrnIndex, in
         RADEON_SYNC(info, pScrn);
 
     if (crtc && crtc->enabled) {
-	if (info->FBDev) {
-	    fbdevHWAdjustFrame(scrnIndex, crtc->desiredX + x, crtc->desiredY + y, flags);
-	} else {
-	    if (crtc == pRADEONEnt->pCrtc[0])
-		RADEONDoAdjustFrame(pScrn, crtc->desiredX + x, crtc->desiredY + y, FALSE);
-	    else
-		RADEONDoAdjustFrame(pScrn, crtc->desiredX + x, crtc->desiredY + y, TRUE);
-	}
+	if (crtc == pRADEONEnt->pCrtc[0])
+	    RADEONDoAdjustFrame(pScrn, crtc->desiredX + x, crtc->desiredY + y, FALSE);
+	else
+	    RADEONDoAdjustFrame(pScrn, crtc->desiredX + x, crtc->desiredY + y, TRUE);
 	crtc->x = output->initial_x + x;
 	crtc->y = output->initial_y + y;
     }
@@ -5868,11 +5705,12 @@ Bool RADEONEnterVT(int scrnIndex, int fl
     RADEONInfoPtr  info  = RADEONPTR(pScrn);
     unsigned char *RADEONMMIO = info->MMIO;
     xf86CrtcConfigPtr   xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
+    int i;
 
     xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG,
 		   "RADEONEnterVT\n");
 
-    if (!info->FBDev && (INREG(RADEON_CONFIG_MEMSIZE) == 0)) { /* Softboot V_BIOS */
+    if ((INREG(RADEON_CONFIG_MEMSIZE)) == 0) { /* Softboot V_BIOS */
        xf86Int10InfoPtr pInt;
        xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
                   "zero MEMSIZE, probably at D3cold. Re-POSTing via int10.\n");
@@ -5887,34 +5725,22 @@ Bool RADEONEnterVT(int scrnIndex, int fl
     /* Makes sure the engine is idle before doing anything */
     RADEONWaitForIdleMMIO(pScrn);
 
-    if (info->FBDev) {
-	unsigned char *RADEONMMIO = info->MMIO;
-	if (!fbdevHWEnterVT(scrnIndex,flags)) return FALSE;
-	info->PaletteSavedOnVT = FALSE;
-	info->ModeReg.surface_cntl = INREG(RADEON_SURFACE_CNTL);
-
-	RADEONRestoreFBDevRegisters(pScrn, &info->ModeReg);
-    } else {
-	int i;
-
-	pScrn->vtSema = TRUE;
-	for (i = 0; i < xf86_config->num_crtc; i++)
-	{
-	    xf86CrtcPtr	crtc = xf86_config->crtc[i];
-	    /* Mark that we'll need to re-set the mode for sure */
-	    memset(&crtc->mode, 0, sizeof(crtc->mode));
-	    if (!crtc->desiredMode.CrtcHDisplay) {
-		crtc->desiredMode = *RADEONCrtcFindClosestMode (crtc, pScrn->currentMode);
-		crtc->desiredRotation = RR_Rotate_0;
-		crtc->desiredX = 0;
-		crtc->desiredY = 0;
-	    }
+    pScrn->vtSema = TRUE;
+    for (i = 0; i < xf86_config->num_crtc; i++) {
+	xf86CrtcPtr	crtc = xf86_config->crtc[i];
+	/* Mark that we'll need to re-set the mode for sure */
+	memset(&crtc->mode, 0, sizeof(crtc->mode));
+	if (!crtc->desiredMode.CrtcHDisplay) {
+	    crtc->desiredMode = *RADEONCrtcFindClosestMode (crtc, pScrn->currentMode);
+	    crtc->desiredRotation = RR_Rotate_0;
+	    crtc->desiredX = 0;
+	    crtc->desiredY = 0;
+	}
 
-	    if (!xf86CrtcSetMode (crtc, &crtc->desiredMode, crtc->desiredRotation,
-				    crtc->desiredX, crtc->desiredY))
-		return FALSE;
+	if (!xf86CrtcSetMode (crtc, &crtc->desiredMode, crtc->desiredRotation,
+			      crtc->desiredX, crtc->desiredY))
+	    return FALSE;
 
-	}
     }
 
     RADEONRestoreSurfaces(pScrn, &info->ModeReg);
@@ -5960,7 +5786,6 @@ void RADEONLeaveVT(int scrnIndex, int fl
 {
     ScrnInfoPtr    pScrn = xf86Screens[scrnIndex];
     RADEONInfoPtr  info  = RADEONPTR(pScrn);
-    RADEONSavePtr  save  = &info->ModeReg;
 
     xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG,
 		   "RADEONLeaveVT\n");
@@ -5992,15 +5817,6 @@ void RADEONLeaveVT(int scrnIndex, int fl
     }
 #endif
 
-    if (info->FBDev) {
-	RADEONSavePalette(pScrn, save);
-	info->PaletteSavedOnVT = TRUE;
-
-	RADEONSaveFBDevRegisters(pScrn, &info->ModeReg);
-
-	fbdevHWLeaveVT(scrnIndex,flags);
-    }
-
     RADEONRestore(pScrn);
 
     xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG,
diff --git a/src/radeon_output.c b/src/radeon_output.c
index 1f38b3b..c2b749a 100644
--- a/src/radeon_output.c
+++ b/src/radeon_output.c
@@ -36,7 +36,6 @@
 /* X and server generic header files */
 #include "xf86.h"
 #include "xf86_OSproc.h"
-#include "fbdevhw.h"
 #include "vgaHW.h"
 #include "xf86Modes.h"
 
diff --git a/src/radeon_tv.c b/src/radeon_tv.c
index bc2905a..c5917bc 100644
--- a/src/radeon_tv.c
+++ b/src/radeon_tv.c
@@ -13,7 +13,6 @@
 /* X and server generic header files */
 #include "xf86.h"
 #include "xf86_OSproc.h"
-#include "fbdevhw.h"
 #include "vgaHW.h"
 #include "xf86Modes.h"
 


More information about the xorg-commit mailing list