diff options
author | Jamey Sharp <jamey@minilop.net> | 2011-09-15 10:29:11 -0500 |
---|---|---|
committer | Jamey Sharp <jamey@minilop.net> | 2011-09-20 10:36:33 -0700 |
commit | 94bbeb132c7eda912d1b402a1a91ca7cbbf5e6a1 (patch) | |
tree | f8ccd5d1c5c38893c705d34cf7d3fb259a35233a | |
parent | ae90c47503bc1015a50e7ea6d22ec10e5e0d4113 (diff) |
Delete support for MGA's proprietary HAL: unifdef USEMGAHAL.
This patch produced with:
for f in `git grep -Fwl USEMGAHAL`; do
unifdef -B -UUSEMGAHAL $f | sponge $f
done
Adam Jackson wrote:
Hey, so, remember back in the dark ages when dualhead was this
insanely wild differentiating feature? Matrox thought it was so
special, in fact, that they hid most of the implementation of it
(and a bunch of other stuff) in a binary-only blob called the
HALlib. As you'd expect it was pretty much a cut-and-paste of
the relevant Windows code, and then some open glue to keep it
working; clientlx.c is that glue.
I guess the theory was that if you don't tell people which
registers to duplicate to implement a second pipe in their own
hardware, they won't figure it out? A pretty eyeroll-worthy
idea even at the time, and definitely not something we should be
condoning anymore.
Kill it with fire, but while you're at it, untangle the hideous
mess of MGA_HAL() macros too.
Signed-off-by: Jamey Sharp <jamey@minilop.net>
Cc: Adam Jackson <ajax@redhat.com>
-rw-r--r-- | src/mga.h | 38 | ||||
-rw-r--r-- | src/mga_dacG.c | 48 | ||||
-rw-r--r-- | src/mga_driver.c | 604 | ||||
-rw-r--r-- | src/mga_esc.c | 778 | ||||
-rw-r--r-- | src/mga_macros.h | 11 | ||||
-rw-r--r-- | src/mga_merge.c | 37 |
6 files changed, 0 insertions, 1516 deletions
@@ -42,10 +42,6 @@ #include "mga_dri.h" #endif -#ifdef USEMGAHAL -#include "client.h" -#endif - typedef enum { OPTION_SW_CURSOR, OPTION_HW_CURSOR, @@ -329,11 +325,6 @@ typedef enum { typedef struct { int lastInstance; -#ifdef USEMGAHAL - LPCLIENTDATA pClientStruct; - LPBOARDHANDLE pBoard; - LPMGAHWINFO pMgaHwInfo; -#endif int refCount; CARD32 masterFbAddress; long masterFbMapSize; @@ -459,12 +450,6 @@ struct mga_device_attributes { }; typedef struct { -#ifdef USEMGAHAL - LPCLIENTDATA pClientStruct; - LPBOARDHANDLE pBoard; - LPMGAMODEINFO pMgaModeInfo; - LPMGAHWINFO pMgaHwInfo; -#endif EntityInfoPtr pEnt; struct mga_bios_values bios; CARD8 BiosOutputMode; @@ -650,9 +635,6 @@ typedef struct { MGAPaletteInfo palinfo[256]; /* G400 hardware bug workaround */ FBLinearPtr LinearScratch; Bool softbooted; -#ifdef USEMGAHAL - Bool HALLoaded; -#endif OptionInfoPtr Options; /* Exa */ @@ -810,26 +792,6 @@ void MGAG200SESaveMode(ScrnInfoPtr, vgaRegPtr); void MGAG200SERestoreMode(ScrnInfoPtr, vgaRegPtr); void MGAG200SEHWProtect(ScrnInfoPtr, Bool); -#ifdef USEMGAHAL -/************ ESC Call Definition ***************/ -typedef struct { - char *function; - void (*funcptr)(ScrnInfoPtr pScrn, unsigned long *param, char *out, DisplayModePtr pMode); -} MGAEscFuncRec, *MGAEscFuncPtr; - -typedef struct { - char function[32]; - unsigned long parameters[32]; -} EscCmdStruct; - -extern LPMGAMODEINFO pMgaModeInfo[2]; -extern MGAMODEINFO TmpMgaModeInfo[2]; - -extern void MGAExecuteEscCmd(ScrnInfoPtr pScrn, char *cmdline , char *sResult, DisplayModePtr pMode); -void MGAFillDisplayModeStruct(DisplayModePtr pMode, LPMGAMODEINFO pModeInfo); -/************************************************/ -#endif - static __inline__ void MGA_MARK_SYNC(MGAPtr pMga, ScrnInfoPtr pScrn) { diff --git a/src/mga_dacG.c b/src/mga_dacG.c index fca1031..b489dea 100644 --- a/src/mga_dacG.c +++ b/src/mga_dacG.c @@ -1001,9 +1001,6 @@ MGAGInit(ScrnInfoPtr pScrn, DisplayModePtr mode) break; case PCI_CHIP_MGAG400: case PCI_CHIP_MGAG550: -#ifdef USEMGAHAL - MGA_HAL(break;); -#endif if (MGAISGx50(pMga)) break; @@ -1046,9 +1043,6 @@ MGAGInit(ScrnInfoPtr pScrn, DisplayModePtr mode) break; case PCI_CHIP_MGAG200_SE_A_PCI: case PCI_CHIP_MGAG200_SE_B_PCI: -#ifdef USEMGAHAL - MGA_HAL(break;); -#endif pReg->DacRegs[ MGA1064_VREF_CTL ] = 0x03; pReg->DacRegs[MGA1064_PIX_CLK_CTL] = MGA1064_PIX_CLK_CTL_SEL_PLL; @@ -1097,9 +1091,6 @@ MGAGInit(ScrnInfoPtr pScrn, DisplayModePtr mode) case PCI_CHIP_MGAG200: case PCI_CHIP_MGAG200_PCI: default: -#ifdef USEMGAHAL - MGA_HAL(break;); -#endif if(pMga->OverclockMem) { /* 143 Mhz */ pReg->DacRegs[ MGA1064_SYS_PLL_M ] = 0x06; @@ -1496,21 +1487,6 @@ MGA_NOT_HAL( MGAG200EHPIXPLLSET(pScrn, mgaReg); } ); /* MGA_NOT_HAL */ -#ifdef USEMGAHAL - /* - * Work around another bug in HALlib: it doesn't restore the - * DAC width register correctly. MATROX: hint, hint. - */ - MGA_HAL( - outMGAdac(MGA1064_MUL_CTL,mgaReg->DacRegs[0]); - outMGAdac(MGA1064_MISC_CTL,mgaReg->DacRegs[1]); - if (!MGAISGx50(pMga)) { - outMGAdac(MGA1064_PIX_PLLC_M,mgaReg->DacRegs[2]); - outMGAdac(MGA1064_PIX_PLLC_N,mgaReg->DacRegs[3]); - outMGAdac(MGA1064_PIX_PLLC_P,mgaReg->DacRegs[4]); - } - ); -#endif /* restore CRTCEXT regs */ for (i = 0; i < 6; i++) OUTREG16(MGAREG_CRTCEXT_INDEX, (mgaReg->ExtVga[i] << 8) | i); @@ -1650,24 +1626,6 @@ MGAGSave(ScrnInfoPtr pScrn, vgaRegPtr vgaReg, MGARegPtr mgaReg, * DAC width register correctly. */ -#ifdef USEMGAHAL - /* - * Work around another bug in HALlib: it doesn't restore the - * DAC width register correctly (s.o.). MATROX: hint, hint. - */ - MGA_HAL( - if (mgaReg->DacRegs == NULL) { - mgaReg->DacRegs = xnfcalloc(MGAISGx50(pMga) ? 2 : 5, 1); - } - mgaReg->DacRegs[0] = inMGAdac(MGA1064_MUL_CTL); - mgaReg->DacRegs[1] = inMGAdac(MGA1064_MISC_CTL); - if (!MGAISGx50(pMga)) { - mgaReg->DacRegs[2] = inMGAdac(MGA1064_PIX_PLLC_M); - mgaReg->DacRegs[3] = inMGAdac(MGA1064_PIX_PLLC_N); - mgaReg->DacRegs[4] = inMGAdac(MGA1064_PIX_PLLC_P); - } - ); -#endif MGA_NOT_HAL( /* * The port I/O code necessary to read in the extended registers. @@ -1793,12 +1751,6 @@ MGAGSetCursorPosition(ScrnInfoPtr pScrn, int x, int y) x += 64; y += 64; -#ifdef USEMGAHAL - MGA_HAL( - x += pMga->HALGranularityOffX; - y += pMga->HALGranularityOffY; - ); -#endif /* cursor update must never occurs during a retrace period (pp 4-160) */ while( INREG( MGAREG_Status ) & 0x08 ); diff --git a/src/mga_driver.c b/src/mga_driver.c index 58a1390..d770031 100644 --- a/src/mga_driver.c +++ b/src/mga_driver.c @@ -1509,10 +1509,6 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags) int flags24; MGAEntPtr pMgaEnt = NULL; Bool Default; -#ifdef USEMGAHAL - ULONG status; - CARD8 MiscCtlReg; -#endif /* * Note: This function is only called once at server startup, and @@ -1657,37 +1653,9 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags) pMga->is_G200EH = (pMga->Chipset == PCI_CHIP_MGAG200_EH_PCI); pMga->is_G200ER = (pMga->Chipset == PCI_CHIP_MGAG200_ER_PCI); -#ifdef USEMGAHAL - if (pMga->chip_attribs->HAL_chipset) { - Bool loadHal = TRUE; - - from = X_DEFAULT; - if (xf86FindOption(pMga->device->options, "NoHal")) { - loadHal = !xf86SetBoolOption(pMga->device->options, - "NoHal", !loadHal); - from = X_CONFIG; - } else if (xf86FindOption(pMga->device->options, "Hal")) { - loadHal = xf86SetBoolOption(pMga->device->options, - "Hal", loadHal); - from = X_CONFIG; - } - if (loadHal && xf86LoadSubModule(pScrn, "mga_hal")) { - xf86DrvMsg(pScrn->scrnIndex, from,"Matrox HAL module used\n"); - pMga->HALLoaded = TRUE; - } else { - xf86DrvMsg(pScrn->scrnIndex, from, "Matrox HAL module not loaded " - "- using builtin mode setup instead\n"); - pMga->HALLoaded = FALSE; - } - } -#endif - pMga->DualHeadEnabled = FALSE; if (xf86IsEntityShared(pScrn->entityList[0])) {/* dual-head mode requested*/ if ( -#ifdef USEMGAHAL - pMga->HALLoaded || -#endif !MGA_DH_NEEDS_HAL(pMga)) { pMga->DualHeadEnabled = TRUE; } else if (xf86IsPrimInitDone(pScrn->entityList[0])) { @@ -2088,30 +2056,6 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags) xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "\"Merged Framebuffer\" mode only supported on G450 and G550 boards.\n"); } else { -#ifdef USEMGAHAL - if(pMga->HALLoaded) - { - pMga->MergedFB = TRUE; - xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, - "Using \"Merged Framebuffer\" mode.\n"); - /* - * a few options that won't work well together - */ - if(pMga->HWCursor) /*Should we give the choice? */ - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - " -- Hardware Cursor disabled.\n"); - pMga->HWCursor = FALSE; - if(pMga->ShadowFB) - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - " -- Shadow Framebuffer disabled.\n"); - pMga->ShadowFB = FALSE; - if(pMga->FBDev) - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - " -- Framebuffer device disabled.\n"); - pMga->FBDev = FALSE; - } /* MGA_HAL */ - else -#endif { xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "HALLib not loaded! NOT using \"Merged Framebuffer\" mode.\n"); @@ -2404,10 +2348,6 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags) clockRanges->clockIndex = -1; /* programmable */ clockRanges->interlaceAllowed = TRUE; clockRanges->doubleScanAllowed = TRUE; -#ifdef USEMGAHAL - MGA_HAL(clockRanges->interlaceAllowed = FALSE); - MGA_HAL(clockRanges->doubleScanAllowed = FALSE); -#endif if (pMga->SecondCrtc == TRUE) clockRanges->interlaceAllowed = FALSE; @@ -2513,80 +2453,6 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags) MGAFreeRec(pScrn); return FALSE; } -#ifdef USEMGAHAL - MGA_HAL( - - if(pMga->SecondCrtc == FALSE) { - - pMga->pBoard = xalloc(sizeof(CLIENTDATA) + MGAGetBOARDHANDLESize()); - pMga->pClientStruct = xalloc(sizeof(CLIENTDATA)); - pMga->pClientStruct->pMga = (MGAPtr) pMga; - - MGAMapMem(pScrn); - /* - * For some reason the MGAOPM_DMA_BLIT bit needs to be set - * on G200 before opening the HALlib. I don't know why. - * MATROX: hint, hint. - */ - /*if (pMga->Chipset == PCI_CHIP_MGAG200 || - pMga->Chipset == PCI_CHIP_MGAG200_PCI) */{ - CARD32 opmode; - opmode = INREG(MGAREG_OPMODE); - OUTREG(MGAREG_OPMODE, MGAOPM_DMA_BLIT | opmode); - } - /* wrapping OpenLibrary to fix broken registers. MATROX: hint, hint. */ - MiscCtlReg = inMGAdac(MGA1064_MISC_CTL); - MGAOpenLibrary(pMga->pBoard,pMga->pClientStruct,sizeof(CLIENTDATA)); - outMGAdac(MGA1064_MISC_CTL,MiscCtlReg); - MGAUnmapMem(pScrn); - pMga->pMgaHwInfo = xalloc(sizeof(MGAHWINFO)); - MGAGetHardwareInfo(pMga->pBoard,pMga->pMgaHwInfo); - - /* copy the board handles */ - if (pMga->DualHeadEnabled) { - pMgaEnt->pClientStruct = pMga->pClientStruct; - pMgaEnt->pBoard = pMga->pBoard; - pMgaEnt->pMgaHwInfo = pMga->pMgaHwInfo; - } - - } else { /* Second CRTC && entity is shared */ - pMga->pBoard = pMgaEnt->pBoard; - pMga->pClientStruct = pMgaEnt->pClientStruct; - pMga->pMgaHwInfo = pMgaEnt->pMgaHwInfo; - - } - - MGAFillModeInfoStruct(pScrn,NULL); - /* Fields usually handled by MGAFillModeInfoStruct, but are unavailable - * because no mode is given - */ - pMga->pMgaModeInfo->ulDispWidth = pScrn->virtualX; - pMga->pMgaModeInfo->ulDispHeight = pScrn->virtualY; - - - if (ISDIGITAL1(pMga)) - xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "Digital screen detected on first head.\n"); - if (ISTV1(pMga)) - xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "TV detected on first head.\n"); - if (ISDIGITAL2(pMga)) - xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "Digital screen detected on second head.\n"); - if (ISTV2(pMga)) - xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "TV detected on second head.\n"); - - - if((status = MGAValidateMode(pMga->pBoard,pMga->pMgaModeInfo)) != 0) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "MGAValidateMode from HALlib found the mode to be invalid.\n" - "\tError: 0x%lx\n", status); - return FALSE; - } - pScrn->displayWidth = pMga->pMgaModeInfo->ulFBPitch; - ); /* MGA_HAL */ -#endif /* If the Device section explicitly set HasSDRAM, don't bother checking. */ @@ -2620,9 +2486,6 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags) * driver and if the driver doesn't provide code to set them. They * are not pre-initialised at all. */ -#ifdef USEMGAHAL - MGA_HAL(xf86SetCrtcForModes(pScrn, 0)); -#endif MGA_NOT_HAL(xf86SetCrtcForModes(pScrn, INTERLACE_HALVE_V)); /* Set the current mode to the first in the list */ @@ -2790,46 +2653,6 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags) }; -#ifdef USEMGAHAL - MGA_HAL( - /* Close the library after preinit */ - /* This needs to only happen after this board has completed preinit - * both times - */ - - if(pMga->DualHeadEnabled) { - /* Entity is shared make sure refcount == 2 */ - /* If ref count is 2 then reset it to 0 */ - if(pMgaEnt->refCount == 2) { - /* Both boards have done there initialization */ - MGACloseLibrary(pMga->pBoard); - - if (pMga->pBoard) - xfree(pMga->pBoard); - if (pMga->pClientStruct) - xfree(pMga->pClientStruct); - if (pMga->pMgaModeInfo) - xfree(pMga->pMgaModeInfo); - if (pMga->pMgaHwInfo) - xfree(pMga->pMgaHwInfo); - pMgaEnt->refCount = 0; - } - } else { - MGACloseLibrary(pMga->pBoard); - - if (pMga->pBoard) - xfree(pMga->pBoard); - if (pMga->pClientStruct) - xfree(pMga->pClientStruct); - if (pMga->pMgaModeInfo) - xfree(pMga->pMgaModeInfo); - if (pMga->pMgaHwInfo) - xfree(pMga->pMgaHwInfo); - } - - ); /* MGA_HAL */ -#endif - xf86SetPrimInitDone(pScrn->entityList[0]); return TRUE; @@ -2995,9 +2818,6 @@ MGASave(ScrnInfoPtr pScrn) MGARegPtr mgaReg = &pMga->SavedReg; if(pMga->SecondCrtc == TRUE) return; -#ifdef USEMGAHAL - MGA_HAL(if (pMga->pBoard != NULL) MGASaveVgaState(pMga->pBoard)); -#endif /* I need to save the registers for the second head also */ /* Save the register for 0x80 to 0xa0 */ @@ -3007,135 +2827,6 @@ MGASave(ScrnInfoPtr pScrn) (*pMga->Save)(pScrn, vgaReg, mgaReg, pMga->Primary); } -#ifdef USEMGAHAL -/* Convert DisplayModeRec parameters in MGAMODEINFO parameters. -* mode parameter optionnal. */ -void -MGAFillModeInfoStruct(ScrnInfoPtr pScrn, DisplayModePtr mode) -{ - const char *s; - MGAPtr pMga = MGAPTR(pScrn); - - Bool digital1 = FALSE; - Bool digital2 = FALSE; - Bool tv1 = FALSE; - Bool tv2 = FALSE; - Bool swap_head - = xf86ReturnOptValBool(pMga->Options, OPTION_SWAPPED_HEAD, FALSE); - - if(pMga->MergedFB && mode && mode->Private && (mode->PrivSize == 0)) { - mode = pMga->SecondCrtc ? - ((MergedDisplayModePtr)mode->Private)->Monitor2 - : ((MergedDisplayModePtr)mode->Private)->Monitor1; - } - - - if (pMga->pMgaHwInfo) - { - digital1 = ISDIGITAL1(pMga); - digital2 = ISDIGITAL2(pMga); - tv1 = ISTV1(pMga); - tv2 = ISTV2(pMga); - } - - /*FIXME: causes segfault elsewhere if not commented*/ - /*if(!pMga->pMgaModeInfo)*/ pMga->pMgaModeInfo = xalloc(sizeof(MGAMODEINFO)); - pMga->pMgaModeInfo->flOutput = 0; - pMga->pMgaModeInfo->ulDeskWidth = pScrn->virtualX; - pMga->pMgaModeInfo->ulDeskHeight = pScrn->virtualY; - pMga->pMgaModeInfo->ulFBPitch = 0; - pMga->pMgaModeInfo->ulBpp = pScrn->bitsPerPixel; - pMga->pMgaModeInfo->ulZoom = 1; - pMga->pMgaModeInfo->flSignalMode = 0x10; - - /* Set TV standard */ - if ((s = xf86GetOptValString(pMga->Options, OPTION_TVSTANDARD))) { - if (!xf86NameCmp(s, "PAL")) { - pMga->pMgaModeInfo->flSignalMode = 0x00; - pMga->pMgaModeInfo->ulRefreshRate = 50; - pMga->pMgaModeInfo->ulTVStandard = TV_PAL; - } else { - pMga->pMgaModeInfo->ulRefreshRate = 60; - pMga->pMgaModeInfo->ulTVStandard = TV_NTSC; - } - } else { - pMga->pMgaModeInfo->ulRefreshRate = 0; - pMga->pMgaModeInfo->ulTVStandard = TV_NTSC; - } - - /* Set Cable Type */ - if ((s = xf86GetOptValString(pMga->Options, OPTION_CABLETYPE))) { - if (!xf86NameCmp(s, "SCART_RGB")) { - pMga->pMgaModeInfo->ulCableType = TV_SCART_RGB; - } else if (!xf86NameCmp(s, "SCART_COMPOSITE")) { - pMga->pMgaModeInfo->ulCableType = TV_SCART_COMPOSITE; - } else if (!xf86NameCmp(s, "SCART_TYPE2")) { - pMga->pMgaModeInfo->ulCableType = TV_SCART_TYPE2; - } else { - pMga->pMgaModeInfo->ulCableType = TV_YC_COMPOSITE; - } - } else { - pMga->pMgaModeInfo->ulCableType = TV_YC_COMPOSITE; - } - - if(mode) { - pMga->pMgaModeInfo->ulHorizRate = 0; - pMga->pMgaModeInfo->ulDispWidth = mode->HDisplay; - pMga->pMgaModeInfo->ulDispHeight = mode->VDisplay; - pMga->pMgaModeInfo->ulPixClock = mode->Clock; - pMga->pMgaModeInfo->ulHFPorch = mode->HSyncStart - mode->HDisplay; - pMga->pMgaModeInfo->ulHSync = mode->HSyncEnd - mode->HSyncStart; - pMga->pMgaModeInfo->ulHBPorch = mode->HTotal - mode->HSyncEnd; - pMga->pMgaModeInfo->ulVFPorch = mode->VSyncStart - mode->VDisplay; - pMga->pMgaModeInfo->ulVSync = mode->VSyncEnd - mode->VSyncStart; - pMga->pMgaModeInfo->ulVBPorch = mode->VTotal - mode->VSyncEnd; - } - /* Use DstOrg directly */ - /* This is an offset in pixels not memory */ - pMga->pMgaModeInfo->ulDstOrg = pMga->DstOrg / (pScrn->bitsPerPixel / 8); - pMga->pMgaModeInfo->ulDisplayOrg = pMga->DstOrg / (pScrn->bitsPerPixel / 8); - pMga->pMgaModeInfo->ulPanXGran = 0; - pMga->pMgaModeInfo->ulPanYGran = 0; - - if(pMga->SecondCrtc == TRUE) { - pMga->pMgaModeInfo->flOutput = MGAMODEINFO_SECOND_CRTC | - MGAMODEINFO_FORCE_PITCH | - MGAMODEINFO_FORCE_DISPLAYORG; - if (digital2) { - pMga->pMgaModeInfo->flOutput |= MGAMODEINFO_DIGITAL2; - } else if (tv2) { - pMga->pMgaModeInfo->flOutput |= MGAMODEINFO_TV; - } else { - if (!swap_head) { - pMga->pMgaModeInfo->flOutput |= MGAMODEINFO_ANALOG2; - } else { - pMga->pMgaModeInfo->flOutput |= MGAMODEINFO_ANALOG1; - } - } - } else { - pMga->pMgaModeInfo->flOutput = MGAMODEINFO_FORCE_PITCH; - if (digital1) { - if ((pMga->Chipset == PCI_CHIP_MGAG200) || - (pMga->Chipset == PCI_CHIP_MGAG200_PCI)) { - pMga->pMgaModeInfo->flOutput |= MGAMODEINFO_FLATPANEL1; - pMga->pMgaModeInfo->flOutput |= MGAMODEINFO_DIGITAL2; - } else { - pMga->pMgaModeInfo->flOutput |= MGAMODEINFO_DIGITAL1; - } - } else if (tv1) { - pMga->pMgaModeInfo->flOutput |= MGAMODEINFO_TV; - } else { - if (!swap_head) { - pMga->pMgaModeInfo->flOutput |= MGAMODEINFO_ANALOG1; - } else { - pMga->pMgaModeInfo->flOutput |= MGAMODEINFO_ANALOG2; - } - } - } - pMga->pMgaModeInfo->ulFBPitch = pScrn->displayWidth; -} -#endif - /* * Initialise a new mode. This is currently still using the old * "initialise struct, restore/write struct to HW" model. That could @@ -3150,9 +2841,6 @@ MGAModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode) MGAPtr pMga = MGAPTR(pScrn); MGARegPtr mgaReg; -#ifdef USEMGAHAL - ULONG status; -#endif vgaHWUnlock(hwp); /* if(pMga->MergedFB && mode && mode->Private && (mode->PrivSize == 0)) { @@ -3175,56 +2863,6 @@ MGAModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode) } vgaReg = &hwp->ModeReg; mgaReg = &pMga->ModeReg; -#ifdef USEMGAHAL - MGA_HAL( - MGAFillModeInfoStruct(pScrn,mode); - - /* Validate the parameters */ - if ((status = MGAValidateMode(pMga->pBoard, pMga->pMgaModeInfo)) != 0) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "MGAValidateMode from HALlib found the mode to be invalid.\n" - "\tError: %lx\n", status); - return FALSE; - } - - /* - * Find mode for second head. - */ - if(pMga->MergedFB) { - - MGAFillModeInfoStruct(pMga->pScrn2,mode); - /* Validates the Video parameters */ - if ((status = MGAValidateVideoParameters(pMga->pBoard, MGAPTR(pMga->pScrn2)->pMgaModeInfo)) - != 0) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "MGAValidateVideoParameters from HALlib found the mode to be invalid.\n\tError: %lx\n", status); - return FALSE; - } - } - ); /*MGA_HAL */ - -#endif - -#ifdef USEMGAHAL -MGA_HAL( - - /*************************** ESC *****************************/ - TmpMgaModeInfo[0] = *pMga->pMgaModeInfo; - - if(pMga->SecondCrtc == TRUE) - pMgaModeInfo[1] = pMga->pMgaModeInfo; - else - pMgaModeInfo[0] = pMga->pMgaModeInfo; - - TmpMgaModeInfo[0].ulDispWidth = 0; - - if(!pMga->MergedFB) /* FIXME: Must deal with this once PowerDesk & MergedFB - compatibility will exist */ - MGAFillDisplayModeStruct(mode, pMga->pMgaModeInfo); - /*************************************************************/ - -); /* MGA_HAL */ -#endif #ifdef XF86DRI if (pMga->directRenderingEnabled) { @@ -3232,38 +2870,6 @@ MGA_HAL( } #endif -#ifdef USEMGAHAL - MGA_HAL( - /* Initialize the board */ - if(MGASetMode(pMga->pBoard,pMga->pMgaModeInfo) != 0) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "MGASetMode returned an error." - " Make sure to validate the mode before.\n"); - return FALSE; - } - if(pMga->MergedFB - && MGASetMode(pMga->pBoard,MGAPTR(pMga->pScrn2)->pMgaModeInfo) != 0) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "MGASetMode returned an error." - " Make sure to validate the mode before.\n"); - } - - ); /* MGA_HAL */ - - /* getting around bugs in the HAL lib. MATROX: hint, hint. */ - MGA_HAL( - if (pMga->chip_attribs->hwcursor_1064) { - if(pMga->SecondCrtc == FALSE && pMga->HWCursor == TRUE) { - outMGAdac(MGA1064_CURSOR_BASE_ADR_LOW, - pMga->FbCursorOffset >> 10); - outMGAdac(MGA1064_CURSOR_BASE_ADR_HI, - pMga->FbCursorOffset >> 18); - outMGAdac(MGA1064_CURSOR_CTL, 0x00); - } - } - ); /* MGA_HAL */ -#endif - MGA_NOT_HAL((*pMga->Restore)(pScrn, vgaReg, mgaReg, FALSE)); MGAStormSync(pScrn); @@ -3472,14 +3078,6 @@ MGARestore(ScrnInfoPtr pScrn) vgaHWProtect(pScrn, TRUE); } if (pMga->Primary) { -#ifdef USEMGAHAL - MGA_HAL( - if(pMga->pBoard != NULL) { - MGASetVgaMode(pMga->pBoard); - MGARestoreVgaState(pMga->pBoard); - } - ); /* MGA_HAL */ -#endif (*pMga->Restore)(pScrn, vgaReg, mgaReg, TRUE); } else { vgaHWRestore(pScrn, vgaReg, VGA_SR_MODE); @@ -3588,81 +3186,12 @@ MGAScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) pPriv = xf86GetEntityPrivate(pScrn->entityList[0], MGAEntityIndex); pMgaEnt = pPriv->ptr; pMgaEnt->refCount++; -#ifdef USEMGAHAL - MGA_HAL( - if(pMgaEnt->refCount == 1) { - CARD8 MiscCtlReg; - pMga->pBoard = xalloc(sizeof(CLIENTDATA) + MGAGetBOARDHANDLESize()); - pMga->pClientStruct = xalloc(sizeof(CLIENTDATA)); - pMga->pClientStruct->pMga = (MGAPtr) pMga; - - /* wrapping OpenLibrary to fix broken registers. MATROX: hint,hint.*/ - MiscCtlReg = inMGAdac(MGA1064_MISC_CTL); - MGAOpenLibrary(pMga->pBoard,pMga->pClientStruct,sizeof(CLIENTDATA)); - outMGAdac(MGA1064_MISC_CTL,MiscCtlReg); - pMga->pMgaHwInfo = xalloc(sizeof(MGAHWINFO)); - MGAGetHardwareInfo(pMga->pBoard,pMga->pMgaHwInfo); - - /* Detecting for type of display */ - if (pMga->pMgaHwInfo->ulCapsSecondOutput & MGAHWINFOCAPS_OUTPUT_TV) { - xf86DrvMsg(pScrn->scrnIndex, X_PROBED, "TV detected\n"); - } - if (pMga->pMgaHwInfo->ulCapsFirstOutput & - MGAHWINFOCAPS_OUTPUT_DIGITAL) { - xf86DrvMsg(pScrn->scrnIndex, X_PROBED, - "Digital Screen detected\n"); - } - if (pMga->pMgaHwInfo->ulCapsSecondOutput & - MGAHWINFOCAPS_OUTPUT_DIGITAL) { - xf86DrvMsg(pScrn->scrnIndex, X_PROBED, - "Digital Screen detected\n"); - } - - /* Now copy these to the entitystructure */ - pMgaEnt->pClientStruct = pMga->pClientStruct; - pMgaEnt->pBoard = pMga->pBoard; - pMgaEnt->pMgaHwInfo = pMga->pMgaHwInfo; - } else { /* Ref count is 2 */ - pMga->pClientStruct = pMgaEnt->pClientStruct; - pMga->pBoard = pMgaEnt->pBoard; - pMga->pMgaHwInfo = pMgaEnt->pMgaHwInfo; - } - ); /* MGA_HAL */ -#endif } else { -#ifdef USEMGAHAL - CARD8 MiscCtlReg; - - MGA_HAL( - pMga->pBoard = xalloc(sizeof(CLIENTDATA) + MGAGetBOARDHANDLESize()); - pMga->pClientStruct = xalloc(sizeof(CLIENTDATA)); - pMga->pClientStruct->pMga = (MGAPtr) pMga; - - MiscCtlReg = inMGAdac(MGA1064_MISC_CTL); - /* wrapping OpenLibrary to fix broken registers. MATROX: hint,hint.*/ - MGAOpenLibrary(pMga->pBoard,pMga->pClientStruct,sizeof(CLIENTDATA)); - outMGAdac(MGA1064_MISC_CTL,MiscCtlReg); - pMga->pMgaHwInfo = xalloc(sizeof(MGAHWINFO)); - MGAGetHardwareInfo(pMga->pBoard,pMga->pMgaHwInfo); - ); /* MGA_HAL */ -#endif } if (pMga->is_G200SE) { pScrn->videoRam = VRTemp; pMga->FbMapSize = FBTemp; } -#ifdef USEMGAHAL - MGA_HAL( - /* There is a problem in the HALlib: set soft reset bit */ - /* MATROX: hint, hint. */ - if (!pMga->Primary && !pMga->FBDev && - (SUBSYS_ID(pMga->PciInfo) == PCI_CARD_MILL_G200_SG)) { - OUTREG(MGAREG_Reset, 1); - usleep(200); - OUTREG(MGAREG_Reset, 0); - } - ); /* MGA_HAL */ -#endif /* Initialise the MMIO vgahw functions */ vgaHWSetMmioFuncs(hwp, pMga->IOBase, PORT_OFFSET); @@ -3969,66 +3498,8 @@ MGAScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) Bool MGASwitchMode(int scrnIndex, DisplayModePtr mode, int flags) { -#ifdef USEMGAHAL - char sCmdIn[256]; - char sCmdOut[256]; - FILE* fdIn; -# ifdef MATROX_WRITEBACK - FILE* fdOut; -# endif -#endif if (mode->Flags & 0x80000000) { -#ifdef USEMGAHAL - -# ifdef MATROX_WRITEBACK -# define MWB(x) { x; } -# define MWB_COND(x) x -# else -# define MWB(x) -# define MWB_COND(x) 1 -# endif - ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; - - MGA_HAL( - fdIn = fopen("/tmp/mgaDriverIn", "rt"); - MWB(fdOut = fopen("/tmp/mgaDriverOut", "wt")) - - if(fdIn && MWB_COND(fdOut)) - { - - fgets(sCmdIn, 255, fdIn); - - if(sCmdIn) - { - - MGAExecuteEscCmd(xf86Screens[scrnIndex], sCmdIn, sCmdOut, mode); - - /* Remove file and close file descriptor */ - remove("/tmp/mgaDriverIn"); - fclose(fdIn); - MWB( - /* Write output data to output file for - calling application */ - fputs(sCmdOut, fdOut); - fclose(fdOut); - ) - mode->Flags &= 0x7FFFFFFF; - return TRUE; - } - else - { - mode->Flags &= 0x7FFFFFFF; - return FALSE; - } - } - else - { - mode->Flags &= 0x7FFFFFFF; - return FALSE; - } - ) -#endif return FALSE; } else return MGAModeInit(xf86Screens[scrnIndex], mode); @@ -4040,28 +3511,6 @@ MGASwitchMode(int scrnIndex, DisplayModePtr mode, int flags) void MGAAdjustGranularity(ScrnInfoPtr pScrn, int* x, int* y) { -#ifdef USEMGAHAL - MGA_HAL( - MGAPtr pMga = MGAPTR(pScrn); - MGAPtr pMga2; - int xg = 1; - int yg = 1; - if(pMga->pMgaModeInfo && pMga->pMgaModeInfo->ulPanXGran && pMga->pMgaModeInfo->ulPanYGran) { - xg = pMga->pMgaModeInfo->ulPanXGran; - yg = pMga->pMgaModeInfo->ulPanYGran; - } - if(pMga->pScrn2 && (pMga2 = MGAPTR(pMga->pScrn2)) ) { - - if(pMga2->pMgaModeInfo && pMga2->pMgaModeInfo->ulPanXGran && pMga2->pMgaModeInfo->ulPanYGran) { - xg = max(xg,pMga2->pMgaModeInfo->ulPanXGran); - yg = max(yg,pMga2->pMgaModeInfo->ulPanYGran); - } - } - xg=16; /*ncoder: temporary */ - *x -= *x % xg; - *y -= *y % yg; - ); -#endif } @@ -4087,16 +3536,6 @@ MGAAdjustFrame(int scrnIndex, int x, int y, int flags) /* wanted to improve panning granularity problems without risking * compatibility issues. Existing code looked hardware dependent. */ -#ifdef USEMGAHAL - MGA_HAL( - pMga->HALGranularityOffX = x; - pMga->HALGranularityOffY = y; - MGAAdjustGranularity(pScrn,&x,&y); - pMga->HALGranularityOffX = pMga->HALGranularityOffX - x; - pMga->HALGranularityOffY = pMga->HALGranularityOffY - y; - HALSetDisplayStart(pMga->pBoard,x,y,0); - ); -#endif MGA_NOT_HAL( if(pMga->ShowCache && y && pScrn->vtSema) y += pScrn->virtualY - 1; @@ -4139,12 +3578,6 @@ MGAAdjustFrameCrtc2(int scrnIndex, int x, int y, int flags) pScrn = xf86Screens[scrnIndex]; pMga = MGAPTR(pScrn); pLayout = &pMga->CurrentLayout; -#ifdef USEMGAHAL - MGA_HAL( - MGAAdjustGranularity(pScrn,&x,&y); - HALSetDisplayStart(pMga->pBoard,x,y,1); - ); -#endif MGA_NOT_HAL( if(pMga->ShowCache && y && pScrn->vtSema) y += pScrn->virtualY - 1; @@ -4258,9 +3691,6 @@ MGALeaveVT(int scrnIndex, int flags) DRILock(pScreen, 0); } #endif -#ifdef USEMGAHAL - MGA_HAL( RESTORE_TEXTMODE_ON_DVI(pMga); ); -#endif } @@ -4280,9 +3710,6 @@ MGACloseScreen(int scrnIndex, ScreenPtr pScreen) MGAPtr pMga = MGAPTR(pScrn); MGAEntPtr pMgaEnt = NULL; -#ifdef USEMGAHAL - MGA_HAL( RESTORE_TEXTMODE_ON_DVI(pMga); ); -#endif if (pMga->MergedFB) MGACloseScreenMerged(scrnIndex, pScreen); @@ -4311,37 +3738,6 @@ MGACloseScreen(int scrnIndex, ScreenPtr pScreen) pMgaEnt->refCount--; } -#ifdef USEMGAHAL - MGA_HAL( - if(pMga->DualHeadEnabled) { - if(pMgaEnt->refCount == 0) { - /* Both boards have closed there screen */ - MGACloseLibrary(pMga->pBoard); - - if (pMga->pBoard) - xfree(pMga->pBoard); - if (pMga->pClientStruct) - xfree(pMga->pClientStruct); - if (pMga->pMgaModeInfo) - xfree(pMga->pMgaModeInfo); - if (pMga->pMgaHwInfo) - xfree(pMga->pMgaHwInfo); - } - } else { - MGACloseLibrary(pMga->pBoard); - - if (pMga->pBoard) - xfree(pMga->pBoard); - if (pMga->pClientStruct) - xfree(pMga->pClientStruct); - if (pMga->pMgaModeInfo) - xfree(pMga->pMgaModeInfo); - if (pMga->pMgaHwInfo) - xfree(pMga->pMgaHwInfo); - } - ); /* MGA_HAL */ -#endif - #ifdef USE_XAA if (pMga->AccelInfoRec) XAADestroyInfoRec(pMga->AccelInfoRec); diff --git a/src/mga_esc.c b/src/mga_esc.c index e811712..41b734a 100644 --- a/src/mga_esc.c +++ b/src/mga_esc.c @@ -10,782 +10,4 @@ #include "config.h" #endif -#ifdef USEMGAHAL - -/* All drivers should typically include these */ -#include "xf86.h" -#include "xf86_OSproc.h" - -/* All drivers need this */ - -#include "compiler.h" - -/* Drivers for PCI hardware need this */ -#include "xf86PciInfo.h" - -/* Drivers that need to access the PCI config space directly need this */ -#include "xf86Pci.h" - -/* All drivers initialising the SW cursor need this */ -#include "mipointer.h" - -/* All drivers implementing backing store need this */ -#include "mibstore.h" - -#include "micmap.h" - -#include "xf86DDC.h" -#include "vbe.h" - -#include "fb.h" -#include "dixstruct.h" - -#include "mga_reg.h" -#include "mga.h" -#include "mga_macros.h" - -/* ESC */ -LPMGAMODEINFO pMgaModeInfo[2] = {NULL}; -MGAMODEINFO TmpMgaModeInfo[2] = {{0}}; - -/* ESC Implementation */ -static void EscHLeft(ScrnInfoPtr pScrn, unsigned long *param, char *sResult, DisplayModePtr pMode); -static void EscHRight(ScrnInfoPtr pScrn, unsigned long *param, char *sResult, DisplayModePtr pMode); -static void EscVUp(ScrnInfoPtr pScrn, unsigned long *param, char *sResult, DisplayModePtr pMode); -static void EscVDown(ScrnInfoPtr pScrn, unsigned long *param, char *sResult, DisplayModePtr pMode); -static void EscHLarger(ScrnInfoPtr pScrn, unsigned long *param, char *sResult, DisplayModePtr pMode); -static void EscHSmaller(ScrnInfoPtr pScrn, unsigned long *param, char *sResult, DisplayModePtr pMode); -static void EscVTaller(ScrnInfoPtr pScrn, unsigned long *param, char *sResult, DisplayModePtr pMode); -static void EscVSmaller(ScrnInfoPtr pScrn, unsigned long *param, char *sResult, DisplayModePtr pMode); -static void EscRefresh(ScrnInfoPtr pScrn, unsigned long *param, char *sResult, DisplayModePtr pMode); -static void EscRestoreVidParm(ScrnInfoPtr pScrn, unsigned long *param, char *sResult, DisplayModePtr pMode); -static void EscRead(ScrnInfoPtr pScrn, unsigned long *param, char *sResult, DisplayModePtr pMode); -static void EscWrite(ScrnInfoPtr pScrn, unsigned long *param, char *sResult, DisplayModePtr pMode); -static void EscHal(ScrnInfoPtr pScrn, unsigned long *param, char *sResult, DisplayModePtr pMode); -static void EscTest(ScrnInfoPtr pScrn, unsigned long *param, char *sResult, DisplayModePtr pMode); -static void EscMerged(ScrnInfoPtr pScrn, unsigned long *param, char *sResult, DisplayModePtr pMode); - -static LPMGAMODEINFO GetModeInfoPtr(ULONG ulScreen); -static void GetVideoParameterStr(LPMGAMODEINFO pModeInfo, char *sResult); -static Bool convertNumber(unsigned long *pulNumber, char *sNumber); - - -static MGAEscFuncRec FunctionTable[] = { - {"hal", EscHal}, - {"test", EscTest}, - {"read", EscRead}, - {"write", EscWrite}, - {"left", EscHLeft}, - {"right", EscHRight}, - {"down", EscVDown}, - {"up", EscVUp}, - {"h+", EscHLarger}, - {"h-", EscHSmaller}, - {"v+", EscVTaller}, - {"v-", EscVSmaller}, - {"refresh", EscRefresh}, - {"undo", EscRestoreVidParm}, - {"merged", EscMerged}, - {NULL,NULL} -}; - - -void MGAFillDisplayModeStruct(DisplayModePtr pMode, LPMGAMODEINFO pModeInfo) -{ - pMode->Clock = pModeInfo->ulPixClock; - - pMode->HDisplay = pModeInfo->ulDispWidth; - pMode->HSyncStart = pModeInfo->ulDispWidth - + pModeInfo->ulHFPorch; - pMode->HSyncEnd = pModeInfo->ulDispWidth - + pModeInfo->ulHFPorch - + pModeInfo->ulHSync; - pMode->HTotal = pModeInfo->ulDispWidth - + pModeInfo->ulHFPorch - + pModeInfo->ulHSync - + pModeInfo->ulHBPorch; - - pMode->VDisplay = pModeInfo->ulDispHeight; - pMode->VSyncStart = pModeInfo->ulDispHeight - + pModeInfo->ulVFPorch; - pMode->VSyncEnd = pModeInfo->ulDispHeight - + pModeInfo->ulVFPorch - + pModeInfo->ulVSync; - pMode->VTotal = pModeInfo->ulDispHeight - + pModeInfo->ulVFPorch - + pModeInfo->ulVSync - + pModeInfo->ulVBPorch; - - pMode->VRefresh = pModeInfo->ulRefreshRate; -} - -static LPMGAMODEINFO GetModeInfoPtr(ULONG ulScreen) -{ - - if ( !TmpMgaModeInfo[ulScreen].ulDispWidth ) - { - TmpMgaModeInfo[ulScreen] = *pMgaModeInfo[ulScreen]; - } - - return &TmpMgaModeInfo[ulScreen]; -} - - -static void GetVideoParameterStr(LPMGAMODEINFO pModeInfo, char *sResult) -{ - sprintf(sResult, "%d %d %d %d %d %d %d %d %d %d %d", - pModeInfo->ulDispWidth, - pModeInfo->ulDispHeight, - pModeInfo->ulBpp, - pModeInfo->ulPixClock, - pModeInfo->ulHFPorch, - pModeInfo->ulHSync, - pModeInfo->ulHBPorch, - pModeInfo->ulVFPorch, - pModeInfo->ulVSync, - pModeInfo->ulVBPorch, - pModeInfo->flSignalMode); -} - - -static float GetVRefresh(LPMGAMODEINFO pModeInfo) -{ - ULONG ulHTotal; - ULONG ulVTotal; - - ulHTotal = - pModeInfo->ulDispWidth + - pModeInfo->ulHFPorch + - pModeInfo->ulHSync + - pModeInfo->ulHBPorch; - - ulVTotal = - pModeInfo->ulDispHeight + - pModeInfo->ulVFPorch + - pModeInfo->ulVSync + - pModeInfo->ulVBPorch; - - return ((float)pModeInfo->ulPixClock * 1000.0) / (ulHTotal * ulVTotal); -} - -static void EscHal(ScrnInfoPtr pScrn, unsigned long *param, char *sResult, DisplayModePtr pMode) -{ - MGAPtr pMGA = MGAPTR(pScrn); - - if(pMGA->HALLoaded) - strcpy(sResult, "YES"); - else - strcpy(sResult, "NO"); - -} - -static void EscTest(ScrnInfoPtr pScrn, unsigned long *param, char -*sResult, DisplayModePtr pMode) -{ - strcpy(sResult, "YES"); -} - -static void EscMerged(ScrnInfoPtr pScrn, unsigned long *param, char -*sResult, DisplayModePtr pMode) -{ - strcpy(sResult, "YES"); -} - -static void EscRead(ScrnInfoPtr pScrn, unsigned long *param, char *sResult, DisplayModePtr pMode) -{ - MGAPtr pMga = MGAPTR(pScrn); - ULONG ulSource, ulAddr, ulData; - UCHAR ucIndex; - - if ( (param[0] & 0xffff) < 2 ) - { - strcpy(sResult, "#error 1"); - return; - } - - - ulSource = param[1] >> 16; - ulAddr = param[1] & 0xffff; - - - switch( ulSource ) - { - case 0: - ulData = INREG(ulAddr); - sprintf(sResult, "MGA[%04X] = 0x%08X", ulAddr, ulData); - break; - case 1: - ucIndex = INREG8(0x3c00); - OUTREG8(0x3c00, (UCHAR)ulAddr); - ulData = (ULONG)INREG8(0x3c0a); - OUTREG8(0x3c00, ucIndex); - sprintf(sResult, "DAC[%02X] = 0x%02X", ulAddr, ulData); - break; - case 2: - ucIndex = INREG8(0x1fd4); - OUTREG8(0x1fd4, (UCHAR)ulAddr); - ulData = (ULONG)INREG8(0x1fd5); - OUTREG8(0x1fd4, ucIndex); - sprintf(sResult, "CRTC[%02X] = 0x%02X", ulAddr, ulData); - break; - case 3: - ucIndex = INREG8(0x1fde); - OUTREG8(0x1fde, (UCHAR)ulAddr); - ulData = (ULONG)INREG8(0x1fdf); - OUTREG8(0x1fde, ucIndex); - sprintf(sResult, "CRTCEXT[%02X] = 0x%02X", ulAddr, ulData); - break; - default: - strcpy(sResult, "ERROR# 2"); - break; - } -} - -static void EscWrite(ScrnInfoPtr pScrn, unsigned long *param, char *sResult, DisplayModePtr pMode) -{ - MGAPtr pMga = MGAPTR(pScrn); - ULONG ulSource, ulAddr, ulData; - UCHAR ucIndex; - - if ( (param[0] & 0xffff) < 3 ) - { - strcpy(sResult, "#error 1"); - return; - } - - ulSource = param[1] >> 16; - ulAddr = param[1] & 0xffff; - ulData = param[2]; - - - switch( ulSource ) - { - case 0: - OUTREG(ulAddr, ulData); - strcpy(sResult, "OK"); - break; - case 1: - ucIndex = INREG8(0x3c00); - OUTREG8(0x3c00, (UCHAR)ulAddr); - OUTREG8(0x3c0a, (UCHAR)ulData); - OUTREG8(0x3c00, ucIndex); - strcpy(sResult, "OK"); - break; - case 2: - ucIndex = INREG8(0x1fd4); - OUTREG8(0x1fd4, (UCHAR)ulAddr); - OUTREG8(0x1fd5, (UCHAR)ulData); - OUTREG8(0x1fd4, ucIndex); - strcpy(sResult, "OK"); - break; - case 3: - ucIndex = INREG8(0x1fde); - OUTREG8(0x1fde, (UCHAR)ulAddr); - OUTREG8(0x1fdf, (UCHAR)ulData); - OUTREG8(0x1fde, ucIndex); - strcpy(sResult, "OK"); - break; - default: - strcpy(sResult, "ERROR# 2"); - break; - } -} - -static void EscHLeft(ScrnInfoPtr pScrn, unsigned long *param, char *sResult, DisplayModePtr pMode) -{ - MGAPtr pMga = MGAPTR(pScrn); - LPMGAMODEINFO pModeInfo; - - pModeInfo = GetModeInfoPtr(param[0] >> 16); - - if ( !pMgaModeInfo ) - { - strcpy(sResult, "#error 1"); - return; - } - - - if (pModeInfo->ulHBPorch > (8 * param[1]) ) - { - pModeInfo->ulHBPorch -=8 * param[1]; - pModeInfo->ulHFPorch +=8 * param[1]; - MGASetMode(pMga->pBoard, pModeInfo); - } - - MGAFillDisplayModeStruct(pMode, pModeInfo); - - GetVideoParameterStr(pModeInfo, sResult); -} - - -static void EscHRight(ScrnInfoPtr pScrn, unsigned long *param, char *sResult, DisplayModePtr pMode) -{ - MGAPtr pMga = MGAPTR(pScrn); - LPMGAMODEINFO pModeInfo; - - pModeInfo = GetModeInfoPtr(param[0] >> 16); - - if ( !pMgaModeInfo ) - { - strcpy(sResult, "#error 1"); - return; - } - - if (pModeInfo->ulHFPorch > (8 * param[1]) ) - { - pModeInfo->ulHFPorch -=8 * param[1]; - pModeInfo->ulHBPorch +=8 * param[1]; - MGASetMode(pMga->pBoard, pModeInfo); - } - - MGAFillDisplayModeStruct(pMode, pModeInfo); - - GetVideoParameterStr(pModeInfo, sResult); -} - - - -static void EscVUp(ScrnInfoPtr pScrn, unsigned long *param, char *sResult, DisplayModePtr pMode) -{ - MGAPtr pMga = MGAPTR(pScrn); - LPMGAMODEINFO pModeInfo; - - pModeInfo = GetModeInfoPtr(param[0] >> 16); - - if ( !pMgaModeInfo ) - { - strcpy(sResult, "#error 1"); - return; - } - - if (pModeInfo->ulVBPorch > (param[1]) ) - { - pModeInfo->ulVBPorch -= param[1]; - pModeInfo->ulVFPorch += param[1]; - MGASetMode(pMga->pBoard, pModeInfo); - } - - MGAFillDisplayModeStruct(pMode, pModeInfo); - - GetVideoParameterStr(pModeInfo, sResult); -} - - -static void EscVDown(ScrnInfoPtr pScrn, unsigned long *param, char *sResult, DisplayModePtr pMode) -{ - MGAPtr pMga = MGAPTR(pScrn); - LPMGAMODEINFO pModeInfo; - - pModeInfo = GetModeInfoPtr(param[0] >> 16); - - if ( !pMgaModeInfo ) - { - strcpy(sResult, "#error 1"); - return; - } - - if (pModeInfo->ulVFPorch >= (param[1]) ) - { - pModeInfo->ulVFPorch -= param[1]; - pModeInfo->ulVBPorch += param[1]; - MGASetMode(pMga->pBoard, pModeInfo); - } - - MGAFillDisplayModeStruct(pMode, pModeInfo); - - GetVideoParameterStr(pModeInfo, sResult); -} - - -static void EscHLarger(ScrnInfoPtr pScrn, unsigned long *param, char *sResult, DisplayModePtr pMode) -{ - MGAPtr pMga = MGAPTR(pScrn); - LPMGAMODEINFO pModeInfo; - float fRefresh, fPixelClock; - ULONG ulStep; - - pModeInfo = GetModeInfoPtr(param[0] >> 16); - - if ( !pMgaModeInfo ) - { - strcpy(sResult, "#error 1"); - return; - } - - if ((param[0] & 0xffff) > 1) - { - - ulStep = param[1] * 8; - } - else - { - - ulStep = 8; - } - - fRefresh = GetVRefresh(pModeInfo); - fPixelClock = (float)pModeInfo->ulPixClock; - if (pModeInfo->ulHBPorch >= ulStep ) - { - pModeInfo->ulHBPorch -= ulStep; - } - else - { - pModeInfo->ulHBPorch = 0; - } - pModeInfo->ulPixClock = (ULONG)( (fRefresh * fPixelClock) / GetVRefresh(pModeInfo)); - MGASetMode(pMga->pBoard, pModeInfo); - - MGAFillDisplayModeStruct(pMode, pModeInfo); - - GetVideoParameterStr(pModeInfo, sResult); -} - - -static void EscHSmaller(ScrnInfoPtr pScrn, unsigned long *param, char *sResult, DisplayModePtr pMode) -{ - MGAPtr pMga = MGAPTR(pScrn); - LPMGAMODEINFO pModeInfo; - float fRefresh, fPixelClock; - ULONG ulStep; - - pModeInfo = GetModeInfoPtr(param[0] >> 16); - - if ( !pMgaModeInfo ) - { - strcpy(sResult, "#error 1"); - return; - } - - if ((param[0] & 0xffff) > 1) - { - - ulStep = param[1] * 8; - } - else - { - - ulStep = 8; - } - - - fRefresh = GetVRefresh(pModeInfo); - fPixelClock = (float)pModeInfo->ulPixClock; - pModeInfo->ulHBPorch += ulStep; - pModeInfo->ulPixClock = (ULONG)( (fRefresh * fPixelClock) / GetVRefresh(pModeInfo)); - - MGASetMode(pMga->pBoard, pModeInfo); - - MGAFillDisplayModeStruct(pMode, pModeInfo); - - GetVideoParameterStr(pModeInfo, sResult); -} - -static void EscVTaller(ScrnInfoPtr pScrn, unsigned long *param, char *sResult, DisplayModePtr pMode) -{ - MGAPtr pMga = MGAPTR(pScrn); - LPMGAMODEINFO pModeInfo; - float fRefresh, fPixelClock; - ULONG ulStep; - - pModeInfo = GetModeInfoPtr(param[0] >> 16); - - if ( !pMgaModeInfo ) - { - strcpy(sResult, "#error 1"); - return; - } - - if ((param[0] & 0xffff) > 1) - { - - ulStep = param[1]; - } - else - { - - ulStep = 1; - } - - fRefresh = GetVRefresh(pModeInfo); - fPixelClock = (float)pModeInfo->ulPixClock; - - if (pModeInfo->ulVBPorch >= ulStep ) - { - pModeInfo->ulVBPorch -= ulStep; - } - else - { - pModeInfo->ulVBPorch = 0; - } - - pModeInfo->ulPixClock = (ULONG)( (fRefresh * fPixelClock) / GetVRefresh(pModeInfo)); - MGASetMode(pMga->pBoard, pModeInfo); - - MGAFillDisplayModeStruct(pMode, pModeInfo); - - GetVideoParameterStr(pModeInfo, sResult); -} - -static void EscVSmaller(ScrnInfoPtr pScrn, unsigned long *param, char *sResult, DisplayModePtr pMode) -{ - MGAPtr pMga = MGAPTR(pScrn); - LPMGAMODEINFO pModeInfo; - float fRefresh, fPixelClock; - ULONG ulStep; - - pModeInfo = GetModeInfoPtr(param[0] >> 16); - - if ( !pMgaModeInfo ) - { - strcpy(sResult, "#error 1"); - return; - } - - if ((param[0] & 0xffff) > 1) - { - - ulStep = param[1]; - } - else - { - - ulStep = 1; - } - - - fRefresh = GetVRefresh(pModeInfo); - fPixelClock = (float)pModeInfo->ulPixClock; - pModeInfo->ulVFPorch += ulStep; - pModeInfo->ulPixClock = (ULONG)( (fRefresh * fPixelClock) / GetVRefresh(pModeInfo)); - MGASetMode(pMga->pBoard, pModeInfo); - - MGAFillDisplayModeStruct(pMode, pModeInfo); - - GetVideoParameterStr(pModeInfo, sResult); -} - - -static void EscRefresh(ScrnInfoPtr pScrn, unsigned long *param, char *sResult, DisplayModePtr pMode) -{ - MGAPtr pMga = MGAPTR(pScrn); - LPMGAMODEINFO pModeInfo; - float fRefresh, fPixelClock; - - pModeInfo = GetModeInfoPtr(param[0] >> 16); - - if ( !pMgaModeInfo ) - { - strcpy(sResult, "#error 1"); - return; - } - - if ((param[0] & 0xffff) < 2) - { - strcpy(sResult, "#error 1"); - return; - } - - fRefresh = GetVRefresh(pModeInfo); - - fPixelClock = (float)pModeInfo->ulPixClock; - pModeInfo->ulPixClock = (ULONG)( ((float)param[1] * fPixelClock) / fRefresh); - - pModeInfo->ulRefreshRate = param[1]; - - MGASetMode(pMga->pBoard, pModeInfo); - - MGAFillDisplayModeStruct(pMode, pModeInfo); - - GetVideoParameterStr(pModeInfo, sResult); -} - -static void EscRestoreVidParm(ScrnInfoPtr pScrn, unsigned long *param, char *sResult, DisplayModePtr pMode) -{ - MGAPtr pMga = MGAPTR(pScrn); - - TmpMgaModeInfo[param[0] >> 16].ulDispWidth = 0; - MGASetMode(pMga->pBoard, pMgaModeInfo[param[0] >> 16]); - - MGAFillDisplayModeStruct(pMode, pMgaModeInfo[param[0] >> 16]); - - GetVideoParameterStr(pMgaModeInfo[param[0] >> 16], sResult); -} - -static Bool convertNumber(unsigned long *pulNumber, char *sNumber) -{ - unsigned long i, ulDigit, shiftHex; - Bool bResult = TRUE; - - if (sNumber == NULL) - { - return FALSE; - } - - - /* Convert number */ - if ( (sNumber[0] == '0') && (sNumber[1] == 'x') ) - { - shiftHex = 0; - *pulNumber = 0; - - for (i = strlen(sNumber) - 1; i > 1; i--) - { - if (shiftHex > 28) - { - bResult = FALSE; - break; - } - - if ( !isxdigit(sNumber[i]) ) - { - bResult = FALSE; - break; - } - - ulDigit = toupper(sNumber[i]) - '0'; - if (ulDigit > 9) - { - ulDigit -= 7; - } - *pulNumber += ulDigit << shiftHex; - shiftHex += 4; - } - } - else - { - for (i = 0; i < strlen(sNumber); i++) - { - if ( !isdigit(sNumber[i]) ) - { - bResult = FALSE; - break; - } - } - *pulNumber = atoi(sNumber); - } - - return bResult; -} - -static Bool GetEscCommand(char *cmdline, EscCmdStruct *escCmd) -{ - unsigned long i, paramIndex, ulHI; - Bool bResult; - char *pParameter, *function; - - bResult = TRUE; /* success */ - - function = strtok(cmdline, " \t\n,"); - - - escCmd->parameters[0] = 0; - if (function) - { - /* Find Screen */ - if (function[1] == ':' ) - { - escCmd->parameters[0] = (unsigned long)(function[0] - '0') << 16; - strncpy(escCmd->function, function+2, 32); - } - else - { - strncpy(escCmd->function, function, 32); - } - - } - else - { - strcpy(escCmd->function, "#ERROR -1"); - escCmd->parameters[0] = 0; - return FALSE; - } - - paramIndex = 1; - while ( (pParameter = strtok(NULL, " \t\n,")) != NULL ) - { - if (paramIndex > 31) - { - /* 32 parameters supported */ - break; - } - - i = 0; - while(pParameter[i] && pParameter[i] != ':') - { - i++; - } - - if ( pParameter[i] ) - { - pParameter[i] = '\0'; - bResult = convertNumber(&escCmd->parameters[paramIndex], &pParameter[i+1]); - bResult |= convertNumber(&ulHI, pParameter); - escCmd->parameters[paramIndex] &= 0xffff; - escCmd->parameters[paramIndex] += ulHI << 16; - pParameter[i] = ':'; - } - else - { - bResult = convertNumber(&escCmd->parameters[paramIndex], pParameter); - } - - - if (!bResult) - { - break; - } - paramIndex++; - } - - escCmd->parameters[0] += paramIndex; - return bResult; - -} - -void MGAExecuteEscCmd(ScrnInfoPtr pScrn, char *cmdline , char *sResult, DisplayModePtr pMode) -{ - int i = 0; - int ulScreen = 0; - MGAPtr pMga = MGAPTR(pScrn); - EscCmdStruct EscCmd; - - if (pMga->SecondCrtc) - { - ulScreen = 1; - } - else - { - ulScreen = 0; - } - - - if (FunctionTable[0].function && GetEscCommand(cmdline, &EscCmd) ) - { - i = 0; - - while ( FunctionTable[i].function && strcmp(FunctionTable[i].function, EscCmd.function) ) - { - i++; - } - - if (FunctionTable[i].function) - { - EscCmd.parameters[0] &= 0xffff; - EscCmd.parameters[0] |= ulScreen << 16; - - FunctionTable[i].funcptr(pScrn, EscCmd.parameters, sResult, pMode); - } - else - { - strcpy(sResult, "error# -1"); - } - } - else - { - strcpy(sResult, "error# -1"); - } -} -#else int mga_foo; -#endif diff --git a/src/mga_macros.h b/src/mga_macros.h index bffd063..130651d 100644 --- a/src/mga_macros.h +++ b/src/mga_macros.h @@ -74,18 +74,7 @@ while(INREG(MGAREG_DWGSYNC) != MGA_SYNC_XTAG) ; \ #define CHECK_DMA_QUIESCENT(pMGA, pScrn) #endif -#ifdef USEMGAHAL -#define MGA_HAL(x) { \ - MGAPtr pMga = MGAPTR(pScrn); \ - if (pMga->HALLoaded && pMga->chip_attribs->HAL_chipset) { x; } \ -} -#define MGA_NOT_HAL(x) { \ - MGAPtr pMga = MGAPTR(pScrn); \ - if (!pMga->HALLoaded || !pMga->chip_attribs->HAL_chipset) { x; } \ -} -#else #define MGA_NOT_HAL(x) { x; } -#endif #define MGAISGx50(x) ((x)->is_Gx50) diff --git a/src/mga_merge.c b/src/mga_merge.c index 1fd0572..2affe3b 100644 --- a/src/mga_merge.c +++ b/src/mga_merge.c @@ -236,9 +236,6 @@ MGAPreInitMergedFB(ScrnInfoPtr pScrn1, int flags) int i; char* s; ClockRangePtr clockRanges; -#ifdef USEMGAHAL - ULONG status; -#endif MgaScrn2Rel Monitor2Pos; xf86DrvMsg(pScrn1->scrnIndex, X_INFO, "==== Start of second screen initialization ====\n"); @@ -252,9 +249,6 @@ MGAPreInitMergedFB(ScrnInfoPtr pScrn1, int flags) } pMga = MGAPTR(pScrn); -#ifdef USEMGAHAL - pMga->pMgaModeInfo = NULL; /*will be allocated later if NULL*/ -#endif pMga1 = MGAPTR(pScrn1); pMga1->pScrn2 = pScrn; @@ -456,10 +450,6 @@ MGAPreInitMergedFB(ScrnInfoPtr pScrn1, int flags) clockRanges->clockIndex = -1; /* programmable */ clockRanges->interlaceAllowed = TRUE; clockRanges->doubleScanAllowed = TRUE; -#ifdef USEMGAHAL - MGA_HAL(clockRanges->interlaceAllowed = FALSE); - MGA_HAL(clockRanges->doubleScanAllowed = FALSE); -#endif clockRanges->interlaceAllowed = FALSE; /*no interlace on CRTC2 */ clockRanges->ClockMulFactor = 1; @@ -562,30 +552,6 @@ MGAPreInitMergedFB(ScrnInfoPtr pScrn1, int flags) MGAFreeRec(pScrn); return FALSE; } -#ifdef USEMGAHAL - MGA_HAL( - - pMga->pBoard = pMga1->pBoard; - pMga->pClientStruct = pMga1->pClientStruct; - pMga->pMgaHwInfo = pMga1->pMgaHwInfo; - - - MGAFillModeInfoStruct(pScrn,NULL); - /* Fields usually handled by MGAFillModeInfoStruct, but are unavailable - * because no mode is given - */ - pMga->pMgaModeInfo->ulDispWidth = pScrn->virtualX; - pMga->pMgaModeInfo->ulDispHeight = pScrn->virtualY; - - if((status = MGAValidateMode(pMga->pBoard,pMga->pMgaModeInfo)) != 0) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "MGAValidateMode from HALlib found the mode to be invalid.\n" - "\tError: 0x%lx\n", status); - return FALSE; - } - pScrn->displayWidth = pMga->pMgaModeInfo->ulFBPitch; - ); /* MGA_HAL */ -#endif /* * Set the CRTC parameters for all of the modes based on the type @@ -595,9 +561,6 @@ MGAPreInitMergedFB(ScrnInfoPtr pScrn1, int flags) * driver and if the driver doesn't provide code to set them. They * are not pre-initialised at all. */ -#ifdef USEMGAHAL - MGA_HAL(xf86SetCrtcForModes(pScrn, 0)); -#endif MGA_NOT_HAL(xf86SetCrtcForModes(pScrn, INTERLACE_HALVE_V)); /* Set the current mode to the first in the list */ |