summaryrefslogtreecommitdiff
path: root/source/x/x11/patch/xf86-video-chips/0001-chips-gut-the-overlay-8-16-support-from-driver.patch
diff options
context:
space:
mode:
Diffstat (limited to 'source/x/x11/patch/xf86-video-chips/0001-chips-gut-the-overlay-8-16-support-from-driver.patch')
-rw-r--r--source/x/x11/patch/xf86-video-chips/0001-chips-gut-the-overlay-8-16-support-from-driver.patch588
1 files changed, 588 insertions, 0 deletions
diff --git a/source/x/x11/patch/xf86-video-chips/0001-chips-gut-the-overlay-8-16-support-from-driver.patch b/source/x/x11/patch/xf86-video-chips/0001-chips-gut-the-overlay-8-16-support-from-driver.patch
new file mode 100644
index 00000000..a52e4103
--- /dev/null
+++ b/source/x/x11/patch/xf86-video-chips/0001-chips-gut-the-overlay-8-16-support-from-driver.patch
@@ -0,0 +1,588 @@
+From e4bd864898fd276a62dac05cdfff394e98434f02 Mon Sep 17 00:00:00 2001
+From: Dave Airlie <airlied@redhat.com>
+Date: Tue, 29 Mar 2011 13:53:31 +1000
+Subject: [PATCH 1/9] chips: gut the overlay 8/16 support from driver.
+
+This driver is for chips that were bought by Intel in 1997,
+this feature means maintaining a lot of code in the X server
+for little gain.
+
+Drop it like its hot.
+
+Signed-off-by: Dave Airlie <airlied@redhat.com>
+Reviewed-by: Adam Jackson <ajax@redhat.com>
+---
+ man/chips.man | 3 -
+ src/ct_accel.c | 46 ++---------
+ src/ct_driver.c | 234 ++++++-------------------------------------------------
+ src/ct_driver.h | 1 -
+ src/ct_video.c | 3 +-
+ 5 files changed, 28 insertions(+), 259 deletions(-)
+
+diff --git a/man/chips.man b/man/chips.man
+index 740af38..0c022ee 100644
+--- a/man/chips.man
++++ b/man/chips.man
+@@ -165,9 +165,6 @@ Force the use of memory mapped IO where it can be used. Default: off
+ Force driver to leave centering and stretching registers alone. This
+ can fix some laptop suspend/resume problems. Default: off
+ .TP
+-.BI "Option \*qOverlay\*q"
+-Enable 8+24 overlay mode. Only appropriate for depth 24. Default: off.
+-.TP
+ .BI "Option \*qColorKey\*q \*q" integer \*q
+ Set the colormap index used for the transparency key for the depth 8 plane
+ when operating in 8+16 overlay mode. The value must be in the range
+diff --git a/src/ct_accel.c b/src/ct_accel.c
+index 3920b0a..4b5776a 100644
+--- a/src/ct_accel.c
++++ b/src/ct_accel.c
+@@ -428,19 +428,7 @@ chips_imagewrite:
+ infoPtr->ImageWriteFlags |= NO_PLANEMASK;
+ #endif
+
+-
+-#ifdef CHIPS_HIQV
+- if (XAAInit(pScreen, infoPtr)) {
+- if (cPtr->Flags & ChipsOverlay8plus16)
+- return(XAAInitDualFramebufferOverlay(pScreen,
+- CTNAME(DepthChange)));
+- else
+- return TRUE;
+- } else
+- return FALSE;
+-#else
+ return(XAAInit(pScreen, infoPtr));
+-#endif
+ }
+
+ #ifdef CHIPS_HIQV
+@@ -1243,11 +1231,6 @@ CTNAME(SubsequentScreenToScreenColorExpandFill)(ScrnInfoPtr pScrn,
+ #endif
+ w *= cAcl->BytesPerPixel;
+ ctBLTWAIT;
+-#ifdef CHIPS_HIQV
+- if ((y >= pScrn->virtualY) && (cPtr->Flags & ChipsOverlay8plus16) &&
+- (pScrn->depth == 8))
+- ctSETPITCH(cAcl->PitchInBytes << 1, cAcl->PitchInBytes);
+-#endif
+ ctSETSRCADDR(srcaddr);
+ ctSETDSTADDR(destaddr);
+ #ifdef CHIPS_HIQV
+@@ -1271,10 +1254,6 @@ CTNAME(SetupForColor8x8PatternFill)(ScrnInfoPtr pScrn, int patx, int paty,
+ patternaddr = (paty * pScrn->displayWidth +
+ (patx & ~0x3F)) * cAcl->BytesPerPixel;
+ cAcl->patternyrot = (patx & 0x3F) >> 3;
+-#ifdef CHIPS_HIQV
+- if (cPtr->Flags & ChipsOverlay8plus16)
+- patternaddr += cPtr->FbOffset16;
+-#endif
+
+ ctBLTWAIT;
+ ctSETPATSRCADDR(patternaddr);
+@@ -1338,10 +1317,7 @@ CTNAME(SetupForMono8x8PatternFill)(ScrnInfoPtr pScrn, int patx, int paty,
+
+ #ifdef CHIPS_HIQV
+ patternaddr = paty * pScrn->displayWidth + patx;
+- if (cPtr->Flags & ChipsOverlay8plus16)
+- patternaddr = patternaddr * 2 + cPtr->FbOffset16;
+- else
+- patternaddr *= cAcl->BytesPerPixel;
++ patternaddr *= cAcl->BytesPerPixel;
+ #else
+ patternaddr = (paty * pScrn->displayWidth + patx) * cAcl->BytesPerPixel;
+ #endif
+@@ -1593,10 +1569,7 @@ CTNAME(WritePixmap)(ScrnInfoPtr pScrn, int x, int y, int w, int h,
+ dwords = (((skipleft + bytesPerLine + 0x7) & ~0x7)) >> 2;
+ destaddr = (y * pScrn->displayWidth + x) * (bpp >> 3);
+ destpitch = pScrn->displayWidth * (bpp >> 3);
+- if ((y >= pScrn->virtualY) && (cPtr->Flags & ChipsOverlay8plus16))
+- destaddr += cPtr->FbOffset16;
+- else
+- destaddr += cAcl->FbOffset;
++ destaddr += cAcl->FbOffset;
+
+ ctBLTWAIT;
+
+@@ -1681,10 +1654,7 @@ CTNAME(WritePixmap)(ScrnInfoPtr pScrn, int x, int y, int w, int h,
+ y++;
+
+ destaddr = (y * pScrn->displayWidth + x) * (bpp >> 3);
+- if ((y >= pScrn->virtualY) && (cPtr->Flags & ChipsOverlay8plus16))
+- destaddr += cPtr->FbOffset16;
+- else
+- destaddr += cAcl->FbOffset;
++ destaddr += cAcl->FbOffset;
+
+ ctBLTWAIT;
+ ctSETDSTADDR(destaddr);
+@@ -1717,10 +1687,7 @@ CTNAME(ReadPixmap)(ScrnInfoPtr pScrn, int x, int y, int w, int h,
+ dwords = (((bytesPerLine + 0x7) & ~0x7)) >> 2;
+ srcaddr = (y * pScrn->displayWidth + x) * (bpp >> 3);
+ srcpitch = pScrn->displayWidth * (bpp >> 3);
+- if ((y >= pScrn->virtualY) && (cPtr->Flags & ChipsOverlay8plus16))
+- srcaddr += cPtr->FbOffset16;
+- else
+- srcaddr += cAcl->FbOffset;
++ srcaddr += cAcl->FbOffset;
+
+ ctBLTWAIT;
+ ctSETROP( ctDSTSYSTEM | ctLEFT2RIGHT | ctTOP2BOTTOM |
+@@ -1755,10 +1722,7 @@ CTNAME(ReadPixmap)(ScrnInfoPtr pScrn, int x, int y, int w, int h,
+ dst += dstwidth;
+ y++;
+ srcaddr = (y * pScrn->displayWidth + x) * (bpp >> 3);
+- if ((y >= pScrn->virtualY) && (cPtr->Flags & ChipsOverlay8plus16))
+- srcaddr += cPtr->FbOffset16;
+- else
+- srcaddr += cAcl->FbOffset;
++ srcaddr += cAcl->FbOffset;
+ ctBLTWAIT;
+ ctSETSRCADDR(srcaddr);
+ ctSETHEIGHTWIDTHGO(h, bytesPerLine);
+diff --git a/src/ct_driver.c b/src/ct_driver.c
+index 6624b79..08df050 100644
+--- a/src/ct_driver.c
++++ b/src/ct_driver.c
+@@ -1639,55 +1639,15 @@ chipsPreInitHiQV(ScrnInfoPtr pScrn, int flags)
+ }
+ }
+
+- if ((s = xf86GetOptValString(cPtr->Options, OPTION_OVERLAY))) {
+- if (!*s || !xf86NameCmp(s, "8,16") || !xf86NameCmp(s, "16,8")) {
+- if (pScrn->bitsPerPixel == 16) {
+- if (cPtr->Flags & ChipsLinearSupport) {
+- cPtr->Flags |= ChipsOverlay8plus16;
+- if(!xf86GetOptValInteger(
+- cPtr->Options, OPTION_COLOR_KEY, &(pScrn->colorKey)))
+- pScrn->colorKey = TRANSPARENCY_KEY;
+- pScrn->overlayFlags = OVERLAY_8_16_DUALFB;
+- xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
+- "PseudoColor overlay enabled.\n");
+- if (!xf86IsOptionSet(cPtr->Options, OPTION_LCD_STRETCH))
+- xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+- " - Forcing option \"Stretch\" \"ON\".\n");
+- if (!xf86IsOptionSet(cPtr->Options, OPTION_LCD_CENTER))
+- xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+- " - Forcing option \"LcdCenter\" \"OFF\".\n");
+- if (cPtr->Flags & ChipsShadowFB) {
+- xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+- " - Disabling \"Shadow Framebuffer\".\n");
+- xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+- " Not support with option \"8Plus16\".\n");
+- cPtr->Flags &= ~ChipsShadowFB;
+- cPtr->Rotate = 0;
+- }
+- } else {
+- xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Option \"Overlay\" ignored. Not supported without linear addressing\n");
+- }
+- } else {
+- xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+- "Option \"Overlay\" is not supported in this configuration\n");
+- }
+- } else {
+- xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+- "\"%s\" is not a valid value for Option \"Overlay\"\n", s);
+- }
+- }
+-
+- if (!(cPtr->Flags & ChipsOverlay8plus16)) {
+- if(xf86GetOptValInteger(cPtr->Options, OPTION_VIDEO_KEY,
+- &(cPtr->videoKey))) {
+- xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "video key set to 0x%x\n",
++ if(xf86GetOptValInteger(cPtr->Options, OPTION_VIDEO_KEY,
++ &(cPtr->videoKey))) {
++ xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "video key set to 0x%x\n",
+ cPtr->videoKey);
+- } else {
+- cPtr->videoKey = (1 << pScrn->offset.red) |
++ } else {
++ cPtr->videoKey = (1 << pScrn->offset.red) |
+ (1 << pScrn->offset.green) |
+ (((pScrn->mask.blue >> pScrn->offset.blue) - 1)
+ << pScrn->offset.blue);
+- }
+ }
+
+ if (cPtr->Flags & ChipsShadowFB) {
+@@ -2335,28 +2295,16 @@ chipsPreInitHiQV(ScrnInfoPtr pScrn, int flags)
+ /* and 32bits on the others. Thus multiply by a suitable factor */
+ if (cPtr->Flags & Chips64BitMemory) {
+ if (cPtr->FrameBufferSize && (cPtr->PanelType & ChipsLCD))
+- if (cPtr->Flags & ChipsOverlay8plus16 )
+- cPtr->MaxClock = min(cPtr->MaxClock, MemClk->Clk * 8 * 0.7 / 4);
+- else
+ cPtr->MaxClock = min(cPtr->MaxClock,
+ MemClk->Clk * 8 * 0.7 / (bytesPerPixel + 1));
+ else
+- if (cPtr->Flags & ChipsOverlay8plus16)
+- cPtr->MaxClock = min(cPtr->MaxClock, MemClk->Clk * 8 * 0.7 / 3);
+- else
+ cPtr->MaxClock = min(cPtr->MaxClock,
+ MemClk->Clk * 8 * 0.7 / bytesPerPixel);
+ } else {
+ if (cPtr->FrameBufferSize && (cPtr->PanelType & ChipsLCD))
+- if (cPtr->Flags & ChipsOverlay8plus16 )
+- cPtr->MaxClock = min(cPtr->MaxClock, MemClk->Clk * 4 * 0.7 / 4);
+- else
+ cPtr->MaxClock = min(cPtr->MaxClock,
+ MemClk->Clk * 4 * 0.7 / (bytesPerPixel + 1));
+ else
+- if (cPtr->Flags & ChipsOverlay8plus16)
+- cPtr->MaxClock = min(cPtr->MaxClock, MemClk->Clk * 4 * 0.7 / 3);
+- else
+ cPtr->MaxClock = min(cPtr->MaxClock,
+ MemClk->Clk * 4 * 0.7 / bytesPerPixel);
+ }
+@@ -3736,8 +3684,7 @@ CHIPSEnterVT(int scrnIndex, int flags)
+ /* Should we re-save the text mode on each VT enter? */
+ if(!chipsModeInit(pScrn, pScrn->currentMode))
+ return FALSE;
+- if ((!(cPtr->Flags & ChipsOverlay8plus16))
+- && (cPtr->Flags & ChipsVideoSupport)
++ if ((cPtr->Flags & ChipsVideoSupport)
+ && (cPtr->Flags & ChipsLinearSupport))
+ CHIPSResetVideo(pScrn);
+
+@@ -3788,8 +3735,7 @@ chipsLoadPalette(ScrnInfoPtr pScrn, int numColors, int *indices, LOCO *colors,
+ int i, index, shift ;
+ CHIPSEntPtr cPtrEnt;
+
+- shift = ((pScrn->depth == 15) &&
+- (!(cPtr->Flags & ChipsOverlay8plus16))) ? 3 : 0;
++ shift = (pScrn->depth == 15) ? 3 : 0;
+
+ if (cPtr->UseDualChannel) {
+ cPtrEnt = xf86GetEntityPrivate(pScrn->entityList[0],
+@@ -3895,18 +3841,6 @@ chipsLoadPalette16(ScrnInfoPtr pScrn, int numColors, int *indices,
+ hwp->disablePalette(hwp);
+ }
+
+-static Bool
+-cfb8_16ScreenInit(ScreenPtr pScreen, pointer pbits16, pointer pbits8,
+- int xsize, int ysize, int dpix, int dpiy,
+- int width16, int width8)
+-{
+- return
+- (fbOverlaySetupScreen(pScreen, pbits16, pbits8, xsize, ysize,
+- dpix, dpiy, width16, width8, 16, 8) &&
+- fbOverlayFinishScreenInit(pScreen, pbits16, pbits8, xsize, ysize,
+- dpix, dpiy, width16, width8, 16, 8, 16, 8));
+-}
+-
+ /* Mandatory */
+ static Bool
+ CHIPSScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
+@@ -3947,22 +3881,6 @@ CHIPSScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
+ if (!chipsMapMem(pScrn))
+ return FALSE;
+
+- /* Setup a pointer to the overlay if needed */
+- if (cPtr->Flags & ChipsOverlay8plus16) {
+- cPtr->FbOffset16 = pScrn->displayWidth * pScrn->virtualY;
+- cPtr->FbSize16 = (pScrn->displayWidth << 1) * pScrn->virtualY;
+- if (cPtr->FbSize16 > (cPtr->FbMapSize - cPtr->FrameBufferSize)) {
+- xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
+- "Too little memory for overlay. Disabling.\n");
+- cPtr->Flags &= ~ChipsOverlay8plus16;
+- }
+- if ((pScrn->displayWidth > 1024) || (pScrn->virtualY > 1024)) {
+- xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
+- "Max overlay Width/Height 1024 pixels. Disabling.\n");
+- cPtr->Flags &= ~ChipsOverlay8plus16;
+- }
+- }
+-
+ /* Setup the MMIO register access functions if need */
+ if (cPtr->UseFullMMIO && cPtr->MMIOBaseVGA) {
+ CHIPSSetMmioExtFuncs(cPtr);
+@@ -4035,18 +3953,10 @@ CHIPSScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
+ miClearVisualTypes();
+
+ /* Setup the visuals we support. */
+- if ((pScrn->bitsPerPixel == 16) && (cPtr->Flags & ChipsOverlay8plus16)){
+- if (!miSetVisualTypes(8, PseudoColorMask | GrayScaleMask,
+- pScrn->rgbBits, PseudoColor))
+- return FALSE;
+- if (!miSetVisualTypes(16, TrueColorMask, pScrn->rgbBits, TrueColor))
+- return FALSE;
+- } else {
+- if (!miSetVisualTypes(pScrn->depth,
++ if (!miSetVisualTypes(pScrn->depth,
+ miGetDefaultVisualMask(pScrn->depth),
+ pScrn->rgbBits, pScrn->defaultVisual))
+- return FALSE;
+- }
++ return FALSE;
+ miSetPixmapDepths ();
+
+ /*
+@@ -4090,13 +4000,6 @@ CHIPSScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
+ break;
+ #endif
+ case 16:
+- if (cPtr->Flags & ChipsOverlay8plus16) {
+- ret = cfb8_16ScreenInit(pScreen, (unsigned char *)FBStart +
+- cPtr->FbOffset16, FBStart, width,
+- height, pScrn->xDpi, pScrn->yDpi,
+- displayWidth, displayWidth);
+- break;
+- }
+ default:
+ ret = fbScreenInit(pScreen, FBStart,
+ width,height,
+@@ -4244,9 +4147,6 @@ CHIPSScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
+ if (pScrn->bitsPerPixel < 8)
+ freespace = allocatebase - pScrn->displayWidth *
+ pScrn->virtualY / 2;
+- else if ((pScrn->bitsPerPixel == 16) && (cPtr->Flags & ChipsOverlay8plus16))
+- freespace = allocatebase - pScrn->displayWidth *
+- pScrn->virtualY - cPtr->FbSize16;
+ else
+ freespace = allocatebase - pScrn->displayWidth *
+ pScrn->virtualY * (pScrn->bitsPerPixel >> 3);
+@@ -4369,9 +4269,7 @@ CHIPSScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
+ AvailFBArea.y2 = cAcl->CacheEnd /
+ (pScrn->displayWidth * (pScrn->bitsPerPixel >> 3));
+
+- if (!(cPtr->Flags & ChipsOverlay8plus16)) {
+- xf86InitFBManager(pScreen, &AvailFBArea);
+- }
++ xf86InitFBManager(pScreen, &AvailFBArea);
+ }
+ if (cPtr->Flags & ChipsAccelSupport) {
+ if (IS_HiQV(cPtr)) {
+@@ -4425,16 +4323,10 @@ CHIPSScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
+ if (!miCreateDefColormap(pScreen))
+ return FALSE;
+
+- if ((cPtr->Flags & ChipsOverlay8plus16) && (pScrn->bitsPerPixel == 16)) {
+- if(!xf86HandleColormaps(pScreen, 256, pScrn->rgbBits, chipsLoadPalette,
+- NULL, CMAP_RELOAD_ON_MODE_SWITCH))
+- return FALSE;
+- } else {
+- if(!xf86HandleColormaps(pScreen, 256, pScrn->rgbBits,
++ if(!xf86HandleColormaps(pScreen, 256, pScrn->rgbBits,
+ (pScrn->depth == 16 ? chipsLoadPalette16 : chipsLoadPalette),
+ NULL, CMAP_RELOAD_ON_MODE_SWITCH | CMAP_PALETTED_TRUECOLOR))
+- return FALSE;
+- }
++ return FALSE;
+
+ #ifndef XSERVER_LIBPCIACCESS
+ racflag = RAC_COLORMAP;
+@@ -4448,8 +4340,7 @@ CHIPSScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
+ xf86SetSilkenMouse(pScreen);
+ #endif
+
+- if ((!(cPtr->Flags & ChipsOverlay8plus16))
+- && (cPtr->Flags & ChipsVideoSupport)
++ if ((cPtr->Flags & ChipsVideoSupport)
+ && (cPtr->Flags & ChipsLinearSupport)) {
+ CHIPSInitVideo(pScreen);
+ }
+@@ -4522,10 +4413,7 @@ CHIPSAdjustFrame(int scrnIndex, int x, int y, int flags)
+ Base >>= 3;
+ break;
+ case 16:
+- if (!(cPtr->Flags & ChipsOverlay8plus16))
+- Base >>= 1;
+- else
+- Base >>= 2;
++ Base >>= 1;
+ break;
+ case 24:
+ if (!IS_HiQV(cPtr))
+@@ -4581,14 +4469,6 @@ CHIPSAdjustFrame(int scrnIndex, int x, int y, int flags)
+ cPtr->writeMSS(cPtr, hwp, MSS);
+ }
+
+- if (cPtr->Flags & ChipsOverlay8plus16) {
+- Base = (Base << 3) & ~(unsigned long)0xF;
+-
+- cPtr->writeMR(cPtr, 0x22, (cPtr->FbOffset16 + Base) & 0xF8);
+- cPtr->writeMR(cPtr, 0x23, ((cPtr->FbOffset16 + Base) >> 8) & 0xFF);
+- cPtr->writeMR(cPtr, 0x24, ((cPtr->FbOffset16 + Base) >> 16) & 0xFF);
+- }
+-
+ }
+
+ /* Mandatory */
+@@ -4652,13 +4532,6 @@ CHIPSValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, int flags)
+ ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ CHIPSPtr cPtr = CHIPSPTR(pScrn);
+
+- if (flags & MODECHECK_FINAL) {
+- /* Don't subtract FrambufferSize here as it should be subtracted already */
+- if ((cPtr->Flags & ChipsOverlay8plus16)
+- && ((pScrn->videoRam<<10) - pScrn->displayWidth * 3 * pScrn->virtualY
+- < 0))
+- return MODE_MEM;
+- }
+ /* The tests here need to be expanded */
+ if ((mode->Flags & V_INTERLACE) && (cPtr->PanelType & ChipsLCD))
+ return MODE_NO_INTERLACE;
+@@ -5544,12 +5417,7 @@ chipsModeInitHiQV(ScrnInfoPtr pScrn, DisplayModePtr mode)
+ } else {
+ ChipsStd->Attribute[0x10] = 0x01; /* mode */
+ }
+- if ((pScrn->bitsPerPixel == 16) && (cPtr->Flags & ChipsOverlay8plus16)) {
+- /* Make sure that the overlay isn't visible in the overscan region */
+- if (ChipsStd->Attribute[0x11] == pScrn->colorKey)
+- ChipsStd->Attribute[0x11] = pScrn->colorKey - 1;
+- } else
+- ChipsStd->Attribute[0x11] = 0x00; /* overscan (border) color */
++ ChipsStd->Attribute[0x11] = 0x00; /* overscan (border) color */
+ ChipsStd->Attribute[0x12] = 0x0F; /* enable all color planes */
+ ChipsStd->Attribute[0x13] = 0x00; /* horiz pixel panning 0 */
+
+@@ -5558,8 +5426,7 @@ chipsModeInitHiQV(ScrnInfoPtr pScrn, DisplayModePtr mode)
+ /* set virtual screen width */
+ tmp = pScrn->displayWidth >> 3;
+ if (pScrn->bitsPerPixel == 16) {
+- if (!(cPtr->Flags & ChipsOverlay8plus16))
+- tmp <<= 1; /* double the width of the buffer */
++ tmp <<= 1; /* double the width of the buffer */
+ } else if (pScrn->bitsPerPixel == 24) {
+ tmp += tmp << 1;
+ } else if (pScrn->bitsPerPixel == 32) {
+@@ -5688,8 +5555,7 @@ chipsModeInitHiQV(ScrnInfoPtr pScrn, DisplayModePtr mode)
+
+ /* centering/stretching */
+ if (!xf86ReturnOptValBool(cPtr->Options, OPTION_SUSPEND_HACK, FALSE)) {
+- if (!xf86ReturnOptValBool(cPtr->Options, OPTION_LCD_STRETCH, FALSE) ||
+- (cPtr->Flags & ChipsOverlay8plus16)) {
++ if (!xf86ReturnOptValBool(cPtr->Options, OPTION_LCD_STRETCH, FALSE)) {
+ ChipsNew->FR[0x40] &= 0xDF; /* Disable Horizontal stretching */
+ ChipsNew->FR[0x48] &= 0xFB; /* Disable vertical stretching */
+ ChipsNew->XR[0xA0] = 0x10; /* Disable cursor stretching */
+@@ -5709,8 +5575,7 @@ chipsModeInitHiQV(ScrnInfoPtr pScrn, DisplayModePtr mode)
+ }
+ }
+
+- if ((xf86ReturnOptValBool(cPtr->Options, OPTION_LCD_CENTER, TRUE))
+- || (cPtr->Flags & ChipsOverlay8plus16)) {
++ if (xf86ReturnOptValBool(cPtr->Options, OPTION_LCD_CENTER, TRUE)) {
+ ChipsNew->FR[0x40] |= 0x3; /* Enable Horizontal centering */
+ ChipsNew->FR[0x48] |= 0x3; /* Enable Vertical centering */
+ } else {
+@@ -5723,8 +5588,7 @@ chipsModeInitHiQV(ScrnInfoPtr pScrn, DisplayModePtr mode)
+ ChipsNew->XR[0x82] |=0x02;
+
+ /* software mode flag */
+- ChipsNew->XR[0xE2] = chipsVideoMode(((cPtr->Flags & ChipsOverlay8plus16) ?
+- 8 : pScrn->depth), (cPtr->PanelType & ChipsLCD) ?
++ ChipsNew->XR[0xE2] = chipsVideoMode((pScrn->depth), (cPtr->PanelType & ChipsLCD) ?
+ min(mode->CrtcHDisplay, cPtr->PanelSize.HDisplay) :
+ mode->CrtcHDisplay, mode->CrtcVDisplay);
+ #ifdef DEBUG
+@@ -5762,7 +5626,7 @@ chipsModeInitHiQV(ScrnInfoPtr pScrn, DisplayModePtr mode)
+ }
+ }
+ /* bpp depend */
+- if ((pScrn->bitsPerPixel == 16) && (!(cPtr->Flags & ChipsOverlay8plus16))) {
++ if (pScrn->bitsPerPixel == 16) {
+ ChipsNew->XR[0x81] = (ChipsNew->XR[0x81] & 0xF0) | 0x4;
+ if (cPtr->Flags & ChipsGammaSupport)
+ ChipsNew->XR[0x82] |= 0x0C;
+@@ -5915,60 +5779,7 @@ chipsModeInitHiQV(ScrnInfoPtr pScrn, DisplayModePtr mode)
+ /* Turn off multimedia by default as it degrades performance */
+ ChipsNew->XR[0xD0] &= 0x0f;
+
+- /* Setup the video/overlay */
+- if (cPtr->Flags & ChipsOverlay8plus16) {
+- ChipsNew->XR[0xD0] |= 0x10; /* Force the Multimedia engine on */
+-#ifdef SAR04
+- ChipsNew->XR[0x4F] = 0x2A; /* SAR04 >352 pixel overlay width */
+-#endif
+- ChipsNew->MR[0x1E] &= 0xE0; /* Set Zoom and Direction */
+- if ((!(cPtr->PanelType & ChipsLCD)) && (mode->Flags & V_INTERLACE))
+- ChipsNew->MR[0x1E] |= 0x10; /* Interlace */
+- ChipsNew->MR[0x1F] &= 0x14; /* Mask reserved bits */
+- ChipsNew->MR[0x1F] |= 0x08; /* RGB 16bpp */
+- if (pScrn->weight.green == 5)
+- ChipsNew->MR[0x1F] |= 0x01; /* RGB 15bpp */
+-
+- ChipsNew->MR[0x20] &= 0x03; /* Mask reserved bits */
+- ChipsNew->MR[0x20] |= 0x80; /* Auto Centre, Use mem ptr1 */
+- ChipsNew->MR[0x22] = cPtr->FbOffset16 & 0xF8; /* Setup Pointer 1 */
+- ChipsNew->MR[0x23] = (cPtr->FbOffset16 >> 8) & 0xFF;
+- ChipsNew->MR[0x24] = (cPtr->FbOffset16 >> 16) & 0xFF;
+- ChipsNew->MR[0x25] = cPtr->FbOffset16 & 0xF8; /* Setup Pointer 2 */
+- ChipsNew->MR[0x26] = (cPtr->FbOffset16 >> 8) & 0xFF;
+- ChipsNew->MR[0x27] = (cPtr->FbOffset16 >> 16) & 0xFF;
+- ChipsNew->MR[0x28] = (pScrn->displayWidth >> 2) - 1; /* Width */
+- ChipsNew->MR[0x34] = (pScrn->displayWidth >> 2) - 1;
+-
+- /* Left Edge of Overlay */
+- ChipsNew->MR[0x2A] = cPtr->OverlaySkewX;
+- ChipsNew->MR[0x2B] &= 0xF8; /* Mask reserved bits */
+- ChipsNew->MR[0x2B] |= ((cPtr->OverlaySkewX >> 8) & 0x7);
+- /* Right Edge of Overlay */
+- ChipsNew->MR[0x2C] = (cPtr->OverlaySkewX + pScrn->displayWidth -
+- 1) & 0xFF;
+- ChipsNew->MR[0x2D] &= 0xF8; /* Mask reserved bits */
+- ChipsNew->MR[0x2D] |= ((cPtr->OverlaySkewX + pScrn->displayWidth -
+- 1) >> 8) & 0x07;
+- /* Top Edge of Overlay */
+- ChipsNew->MR[0x2E] = cPtr->OverlaySkewY;
+- ChipsNew->MR[0x2F] &= 0xF8;
+- ChipsNew->MR[0x2F] |= ((cPtr->OverlaySkewY >> 8) & 0x7);
+- /* Bottom Edge of Overlay*/
+- ChipsNew->MR[0x30] = (cPtr->OverlaySkewY + pScrn->virtualY - 1 )& 0xFF;
+- ChipsNew->MR[0x31] &= 0xF8; /* Mask reserved bits */
+- ChipsNew->MR[0x31] |= ((cPtr->OverlaySkewY + pScrn->virtualY -
+- 1 ) >> 8) & 0x07;
+-
+- ChipsNew->MR[0x3C] &= 0x18; /* Mask reserved bits */
+- ChipsNew->MR[0x3C] |= 0x07; /* Enable keyed overlay window */
+- ChipsNew->MR[0x3D] = 0x00;
+- ChipsNew->MR[0x3E] = 0x00;
+- ChipsNew->MR[0x3F] = pScrn->colorKey; /* 8bpp transparency key */
+- ChipsNew->MR[0x40] = 0xFF;
+- ChipsNew->MR[0x41] = 0xFF;
+- ChipsNew->MR[0x42] = 0x00;
+- } else if (cPtr->Flags & ChipsVideoSupport) {
++ if (cPtr->Flags & ChipsVideoSupport) {
+ #if 0 /* if we do this even though video isn't playing we kill performance */
+ ChipsNew->XR[0xD0] |= 0x10; /* Force the Multimedia engine on */
+ #endif
+@@ -6877,8 +6688,7 @@ chipsRestoreExtendedRegs(ScrnInfoPtr pScrn, CHIPSRegPtr Regs)
+ }
+
+ /* Set SAR04 multimedia register correctly */
+- if ((cPtr->Flags & ChipsOverlay8plus16)
+- || (cPtr->Flags & ChipsVideoSupport)) {
++ if ((cPtr->Flags & ChipsVideoSupport)) {
+ #ifdef SAR04
+ cPtr->writeXR(cPtr, 0x4E, 0x04);
+ if (cPtr->readXR(cPtr, 0x4F) != Regs->XR[0x4F])
+diff --git a/src/ct_driver.h b/src/ct_driver.h
+index d8ce228..10a24d4 100644
+--- a/src/ct_driver.h
++++ b/src/ct_driver.h
+@@ -114,7 +114,6 @@ typedef struct {
+ /* Options flags for the C&T chipsets */
+ #define ChipsHWCursor 0x00001000
+ #define ChipsShadowFB 0x00002000
+-#define ChipsOverlay8plus16 0x00004000
+ #define ChipsUseNewFB 0x00008000
+
+ /* Architecture type flags */
+diff --git a/src/ct_video.c b/src/ct_video.c
+index a68acb9..c9e5bb4 100644
+--- a/src/ct_video.c
++++ b/src/ct_video.c
+@@ -56,8 +56,7 @@ CHIPSInitVideo(ScreenPtr pScreen)
+ CHIPSPtr cPtr = CHIPSPTR(pScrn);
+ int num_adaptors;
+
+- if (!(cPtr->Flags & ChipsOverlay8plus16) &&
+- (cPtr->Flags & ChipsVideoSupport)) {
++ if ((cPtr->Flags & ChipsVideoSupport)) {
+ newAdaptor = CHIPSSetupImageVideo(pScreen);
+ CHIPSInitOffscreenImages(pScreen);
+ }
+--
+1.7.9.4
+