Lines Matching defs:pMga
703 MGAPtr pMga;
751 pMga = MGAPTR(pScrn);
752 pMga->chip_attribs = & attribs[ match_data ];
753 pMga->PciInfo = dev;
760 if (pMga->chip_attribs->dual_head_possible) {
870 MGAPtr pMga;
893 pMga = MGAPTR(pScrn);
978 pMga->chip_attribs = & attribs[attrib_no];
980 if (pMga->chip_attribs->dual_head_possible) {
1022 MGAPtr pMga = MGAPTR(pScrn);
1024 pMga->FbMapSize = 8192 * 1024;
1063 MGAPtr pMga = MGAPTR(pScrn);
1064 int ProbeSize = pMga->chip_attribs->probe_size;
1065 int ProbeSizeOffset = pMga->chip_attribs->probe_offset;
1075 if (pMga->Primary) { /* can only trust this for primary cards */
1077 pci_device_cfg_read_u32(pMga->PciInfo, & biosInfo,
1080 biosInfo = pciReadLong(pMga->PciTag, PCI_OPTION_REG);
1085 switch(pMga->Chipset) {
1129 if (pMga->FbAddress) {
1134 pMga->FbMapSize = ProbeSize * 1024;
1139 base = pMga->FbBase;
1141 if (pMga->is_G200SE)
1142 pMga->reg_1e24 = INREG(0x1e24); /* stash the model for later */
1143 if (pMga->reg_1e24 >= 0x01) {
1147 pMga->FbMapSize = ProbeSize * 1024;
1151 base = pMga->FbBase;
1154 if (pMga->is_G200SE) {
1164 if (pMga->is_G200WB) {
1168 pci_device_cfg_read_u32(pMga->PciInfo, &Option,
1170 MaxMapSize = pMga->PciInfo->regions[0].size;
1172 Option = pciReadLong(pMga->PciTag, PCI_OPTION_REG);
1173 MaxMapSize = 1UL << pMga->PciInfo->size[0];
1189 pMga->FbMapSize = ProbeSize * 1024;
1193 base = pMga->FbBase;
1203 if (pMga->is_G200SE || pMga->is_G200EV || pMga->is_G200WB || pMga->is_G200EH) {
1272 if (pMga->is_G200SE) {
1295 MGAPtr pMga;
1300 pMga = MGAPTR(pScrn);
1304 if (pMga->ddc1Read || pMga->i2cInit) {
1307 pMga->ddc1Read = NULL;
1308 pMga->DDC_Bus1 = NULL;
1309 pMga->DDC_Bus2 = NULL;
1317 if (pMga->i2cInit) {
1320 pMga->i2cInit = NULL;
1321 pMga->DDC_Bus1 = NULL;
1322 pMga->DDC_Bus2 = NULL;
1331 vgaHWSetMmioFuncs(hwp, pMga->IOBase, PORT_OFFSET);
1335 if (pMga->Primary) {
1341 if (pMga->DDC1SetSpeed == vgaHWddc1SetSpeedWeak()) {
1342 pMga->DDC1SetSpeed = NULL;
1353 if (pMga->is_G200ER) {
1359 if (pMga->i2cInit) {
1360 pMga->i2cInit(pScrn);
1364 if (pMga->SecondCrtc && pMga->DDC_Bus2) {
1365 MonInfo = xf86DoEDID_DDC2(XF86_SCRN_ARG(pScrn), pMga->DDC_Bus2);
1369 if (pMga->DDC_Bus1) {
1370 MonInfo = xf86DoEDID_DDC2(XF86_SCRN_ARG(pScrn), pMga->DDC_Bus1);
1375 if (pMga->ddc1Read && pMga->DDC1SetSpeed) {
1377 pMga->DDC1SetSpeed,
1378 pMga->ddc1Read ) ;
1384 pVbe = VBEInit(NULL, pMga->pEnt->index);
1399 if (pMga->is_G200ER) {
1408 if (xf86IsPrimaryPci(pMga->PciInfo) && !pMga->FBDev) {
1432 MGAPtr pMga = MGAPTR(pScrn);
1434 if (!pMga->Maven) return FALSE;
1443 if (!pMga->Maven_Bus->I2CStart(pMga->Maven_Bus, pMga->Maven->ByteTimeout)) return FALSE;
1444 if (!pMga->Maven_Bus->I2CPutByte(pMga->Maven, MAVEN_READ)) return FALSE;
1445 if (!pMga->Maven_Bus->I2CPutByte(pMga->Maven, reg)) return FALSE;
1446 pMga->Maven_Bus->I2CStop(pMga->Maven);
1447 if (!pMga->Maven_Bus->I2CGetByte(pMga->Maven, val, 0)) return FALSE;
1448 pMga->Maven_Bus->I2CStop(pMga->Maven);
1457 MGAPtr pMga;
1486 pMga = MGAPTR(pScrn);
1489 pMga->haveQuiescense = 1;
1492 pMga->pEnt = xf86GetEntityInfo(pScrn->entityList[0]);
1493 if (pMga->pEnt->location.type != BUS_PCI)
1500 pMga->entityPrivate = pMgaEnt;
1503 /* Set pMga->device to the relevant Device section */
1504 pMga->device = xf86GetDevFromEntity(pScrn->entityList[0],
1508 MGAProbeDDC(pScrn, pMga->pEnt->index);
1524 pMga->PciInfo = xf86GetPciInfoForEntity(pMga->pEnt->index);
1525 pMga->PciTag = pciTag(pMga->PciInfo->bus, pMga->PciInfo->device,
1526 pMga->PciInfo->func);
1529 pMga->Primary = xf86IsPrimaryPci(pMga->PciInfo);
1532 xf86SetOperatingState(resVgaIo, pMga->pEnt->index, ResUnusedOpr);
1533 xf86SetOperatingState(resVgaMem, pMga->pEnt->index, ResDisableOpr);
1543 if (pMga->device->chipset && *pMga->device->chipset) {
1544 pScrn->chipset = pMga->device->chipset;
1545 pMga->Chipset = xf86StringToToken(MGAChipsets, pScrn->chipset);
1547 } else if (pMga->device->chipID >= 0) {
1548 pMga->Chipset = pMga->device->chipID;
1549 pScrn->chipset = (char *)xf86TokenToString(MGAChipsets, pMga->Chipset);
1552 pMga->Chipset);
1555 pMga->Chipset = DEVICE_ID(pMga->PciInfo);
1556 pScrn->chipset = (char *)xf86TokenToString(MGAChipsets, pMga->Chipset);
1559 if (pMga->device->chipRev >= 0) {
1560 pMga->ChipRev = pMga->device->chipRev;
1562 pMga->ChipRev);
1564 pMga->ChipRev = CHIP_REVISION(pMga->PciInfo);
1573 "ChipID 0x%04X is not recognised\n", pMga->Chipset);
1576 if (pMga->Chipset < 0) {
1583 if (pMga->Chipset == PCI_CHIP_MGAG400) {
1584 if (pMga->ChipRev >= 0x80)
1592 pMga->is_Gx50 = ((pMga->Chipset == PCI_CHIP_MGAG400) && (pMga->ChipRev >= 0x80))
1593 || (pMga->Chipset == PCI_CHIP_MGAG550);
1594 pMga->is_G200SE = (pMga->Chipset == PCI_CHIP_MGAG200_SE_A_PCI)
1595 || (pMga->Chipset == PCI_CHIP_MGAG200_SE_B_PCI);
1596 pMga->is_G200EV = (pMga->Chipset == PCI_CHIP_MGAG200_EV_PCI);
1597 pMga->is_G200WB = (pMga->Chipset == PCI_CHIP_MGAG200_WINBOND_PCI)
1598 || (pMga->Chipset == PCI_CHIP_MGAG200_EW3_PCI);
1599 pMga->is_G200EH = (pMga->Chipset == PCI_CHIP_MGAG200_EH_PCI)
1600 || (pMga->Chipset == PCI_CHIP_MGAG200_EH3_PCI);
1601 pMga->is_G200ER = (pMga->Chipset == PCI_CHIP_MGAG200_ER_PCI);
1603 pMga->DualHeadEnabled = FALSE;
1606 !MGA_DH_NEEDS_HAL(pMga)) {
1607 pMga->DualHeadEnabled = TRUE;
1620 switch (pMga->Chipset) {
1628 pMga->HWCursor = FALSE;
1635 pMga->HWCursor = TRUE;
1643 if (xf86GetOptValBool(pMga->Options, OPTION_HW_CURSOR, &pMga->HWCursor))
1647 if (xf86ReturnOptValBool(pMga->Options, OPTION_SW_CURSOR, FALSE)) {
1649 pMga->HWCursor = FALSE;
1652 pMga->SecondCrtc = FALSE;
1666 } else if (pMga->DualHeadEnabled) {
1668 pMga->SecondCrtc = TRUE;
1669 pMga->HWCursor = FALSE;
1690 pMga->HWCursor ? "HW" : "SW");
1693 if (pMga->DualHeadEnabled) {
1695 pMga->GetQuiescence = MGAGetQuiescenceShared;
1699 pMga->GetQuiescence = MGAGetQuiescence;
1703 if (!(pMga->Options = malloc(sizeof(MGAOptions))))
1705 memcpy(pMga->Options, MGAOptions, sizeof(MGAOptions));
1714 switch (pMga->chip_attribs->BARs) {
1716 pMga->framebuffer_bar = 1;
1717 pMga->io_bar = 0;
1718 pMga->iload_bar = -1;
1721 if (pMga->ChipRev < 3) {
1722 pMga->framebuffer_bar = 1;
1723 pMga->io_bar = 0;
1724 pMga->iload_bar = 2;
1729 pMga->framebuffer_bar = 0;
1730 pMga->io_bar = 1;
1731 pMga->iload_bar = 2;
1736 pMga->FbAddress = pMga->PciInfo->regions[pMga->framebuffer_bar].base_addr;
1738 pMga->FbAddress = pMga->PciInfo->memBase[pMga->framebuffer_bar] & 0xff800000;
1742 (unsigned long)pMga->FbAddress);
1746 (unsigned long) pMga->PciInfo->regions[pMga->io_bar].base_addr);
1748 pMga->IOAddress = pMga->PciInfo->memBase[pMga->io_bar] & 0xffffc000;
1751 (unsigned long)pMga->IOAddress);
1754 if (pMga->iload_bar != -1) {
1758 (unsigned long) pMga->PciInfo->regions[pMga->iload_bar].base_addr);
1760 if (pMga->PciInfo->memBase[2] != 0) {
1761 pMga->ILOADAddress = pMga->PciInfo->memBase[2] & 0xffffc000;
1764 (unsigned long)pMga->ILOADAddress);
1776 if (pMga->PciInfo->biosBase != 0) {
1777 pMga->BiosAddress = pMga->PciInfo->biosBase & 0xffff0000;
1778 pMga->BiosFrom = X_PROBED;
1779 } else if (pMga->Primary) {
1780 pMga->BiosAddress = 0xc0000;
1781 pMga->BiosFrom = X_DEFAULT;
1783 if (pMga->BiosAddress) {
1784 xf86DrvMsg(pScrn->scrnIndex, pMga->BiosFrom, "BIOS at 0x%lX\n",
1785 (unsigned long)pMga->BiosAddress);
1790 if (xf86RegisterResources(pMga->pEnt->index, NULL, ResExclusive)) {
1807 if (pMga->SecondCrtc)
1810 if (xf86ReturnOptValBool(pMga->Options, OPTION_FBDEV, FALSE)) {
1811 pMga->FBDev = TRUE;
1817 if (!fbdevHWInit(pScrn, pMga->PciInfo, NULL))
1826 if (pMga->device->videoRam != 0) {
1827 pScrn->videoRam = pMga->device->videoRam;
1829 } else if (pMga->FBDev) {
1835 if (pMga->is_G200SE && pScrn->videoRam < 2048)
1849 if (pMga->Chipset != PCI_CHIP_MGAG200_SE_A_PCI)
1885 xf86ProcessOptions(pScrn->scrnIndex, pScrn->options, pMga->Options);
1887 if (pMga->is_G200SE) {
1892 pci_device_cfg_read_u32(pMga->PciInfo, & temp, 0xDC);
1894 CARD32 temp = pciReadLong(pMga->PciTag, 0xDC);
1903 if (pMga->is_G200WB && xf86ReturnOptValBool(pMga->Options, OPTION_KVM, TRUE)) {
1904 pMga->KVM = TRUE;
1909 pMga->softbooted = FALSE;
1910 Default = (pMga->chip_attribs->dual_head_possible
1911 && !pMga->Primary && !pMga->SecondCrtc);
1913 if (xf86ReturnOptValBool(pMga->Options, OPTION_INT10, Default) &&
1918 pInt = xf86InitInt10(pMga->pEnt->index);
1919 if (pInt) pMga->softbooted = TRUE;
1930 pMga->agpMode = MGA_DEFAULT_AGP_MODE;
1932 if (xf86GetOptValInteger(pMga->Options,
1933 OPTION_AGP_MODE, &(pMga->agpMode))) {
1934 if (pMga->agpMode < 1) {
1935 pMga->agpMode = 1;
1937 if (pMga->agpMode > MGA_MAX_AGP_MODE) {
1938 pMga->agpMode = MGA_MAX_AGP_MODE;
1942 if (xf86GetOptValInteger(pMga->Options,
1943 OPTION_AGP_SIZE, &(pMga->agpSize))) {
1946 pMga->agpSize);
1950 pMga->agpMode);
1952 if (xf86ReturnOptValBool(pMga->Options, OPTION_OLDDMA, FALSE)) {
1953 pMga->useOldDmaInit = TRUE;
1956 if (xf86ReturnOptValBool(pMga->Options, OPTION_PCIDMA, FALSE)) {
1957 pMga->forcePciDma = TRUE;
1961 if (xf86ReturnOptValBool(pMga->Options, OPTION_NOACCEL, FALSE)) {
1962 pMga->NoAccel = TRUE;
1967 const char *s = xf86GetOptValString(pMga->Options, OPTION_ACCELMETHOD);
1969 pMga->NoAccel = FALSE;
1970 pMga->Exa = FALSE;
1973 pMga->Exa = TRUE;
1976 pMga->Exa = TRUE;
1981 pMga->Exa ? "EXA" : "XAA");
1983 if (xf86ReturnOptValBool(pMga->Options, OPTION_PCI_RETRY, FALSE)) {
1984 pMga->UsePCIRetry = TRUE;
1987 if (xf86ReturnOptValBool(pMga->Options, OPTION_SYNC_ON_GREEN, FALSE)) {
1988 pMga->SyncOnGreen = TRUE;
1991 if (xf86ReturnOptValBool(pMga->Options, OPTION_SHOWCACHE, FALSE)) {
1992 pMga->ShowCache = TRUE;
1995 if (xf86ReturnOptValBool(pMga->Options, OPTION_MGA_SDRAM, FALSE)) {
1996 pMga->HasSDRAM = TRUE;
1999 if (xf86GetOptValFreq(pMga->Options, OPTION_SET_MCLK, OPTUNITS_MHZ, &real)) {
2000 pMga->MemClk = (int)(real * 1000.0);
2003 if(xf86GetOptValInteger(pMga->Options, OPTION_VIDEO_KEY, &(pMga->videoKey))) {
2005 pMga->videoKey);
2007 pMga->videoKey = (1 << pScrn->offset.red) |
2011 if (xf86ReturnOptValBool(pMga->Options, OPTION_SHADOW_FB, FALSE)) {
2012 pMga->ShadowFB = TRUE;
2013 pMga->NoAccel = TRUE;
2017 if (xf86ReturnOptValBool(pMga->Options, OPTION_OVERCLOCK_MEM, FALSE)) {
2018 pMga->OverclockMem = TRUE;
2021 if (xf86ReturnOptValBool(pMga->Options, OPTION_TEXTURED_VIDEO, FALSE)) {
2022 pMga->TexturedVideo = TRUE;
2024 if (xf86ReturnOptValBool(pMga->Options, OPTION_MERGEDFB, FALSE)) {
2025 if(!MGAISGx50(pMga)) {
2035 if (pMga->FBDev) {
2042 pMga->Rotate = 0;
2043 if ((s = xf86GetOptValString(pMga->Options, OPTION_ROTATE))) {
2044 if(!pMga->MergedFB) {
2046 pMga->ShadowFB = TRUE;
2047 pMga->NoAccel = TRUE;
2048 pMga->HWCursor = FALSE;
2049 pMga->Rotate = 1;
2054 pMga->ShadowFB = TRUE;
2055 pMga->NoAccel = TRUE;
2056 pMga->HWCursor = FALSE;
2057 pMga->Rotate = -1;
2073 if (!pMga->NoAccel) {
2075 if (pMga->Exa) {
2079 pMga->ShadowFB = TRUE;
2080 pMga->NoAccel = TRUE;
2088 pMga->ShadowFB = TRUE;
2089 pMga->NoAccel = TRUE;
2097 switch (pMga->Chipset) {
2130 * and pMga->BiosAddress = 0x0. The disable switch is needed to
2134 if ((pMga->BiosAddress == 0) && !xf86IsPrimaryPci(pMga->PciInfo))
2135 xf86DrvMsg(pScrn->scrnIndex, pMga->BiosFrom,
2146 if (!pMga->SecondCrtc)
2147 pMga->SecondOutput = FALSE;
2149 pMga->SecondOutput = TRUE;
2151 if (pMga->Chipset == PCI_CHIP_MGAG550) {
2152 if (!pMga->SecondCrtc) {
2153 pMga->SecondOutput = (pMga->BiosOutputMode & 0x1) ? TRUE : FALSE;
2155 pMga->SecondOutput = (pMga->BiosOutputMode & 0x1) ? FALSE : TRUE;
2161 pMga->HwBpp = pScrn->bitsPerPixel;
2166 if ( (!pMga->Primary && !pMga->FBDev) )
2175 if (pMga->DualHeadEnabled) {
2178 if(pMga->SecondCrtc == FALSE) {
2182 xf86GetOptValBool(pMga->Options, OPTION_CRTC2HALF, &UseHalf);
2186 xf86GetOptValInteger(pMga->Options, OPTION_CRTC2RAM, &adjust)) {
2199 pMgaEnt->masterFbAddress = pMga->FbAddress;
2200 pMga->FbMapSize =
2202 pMgaEnt->slaveFbAddress = pMga->FbAddress +
2205 pMga->realSrcOrg = pMga->SrcOrg = 0;
2206 pMga->DstOrg = 0;
2208 pMga->FbAddress = pMgaEnt->slaveFbAddress;
2209 pMga->FbMapSize = pMgaEnt->slaveFbMapSize;
2211 pMga->DstOrg = pMga->realSrcOrg =
2213 pMga->SrcOrg = 0; /* This is not stored in hw format!! */
2218 pMga->FbMapSize = pScrn->videoRam * 1024;
2219 switch(pMga->Chipset) {
2232 pMga->SrcOrg = 0;
2233 pMga->DstOrg = 0;
2243 pMga->BppShifts[0] = 0;
2244 pMga->BppShifts[1] = 1;
2245 pMga->BppShifts[2] = 0;
2246 pMga->BppShifts[3] = 2;
2252 (*pMga->PreInit)(pScrn);
2260 if (!pScrn->monitor->DDC && pMga->is_G200SE) {
2292 pMga->MinClock = 17750;
2293 if (pMga->is_G200WB){
2294 pMga->MinClock = 18750;
2297 pMga->MinClock / 1000);
2302 if (pMga->device->dacSpeeds[0]) {
2307 speed = pMga->device->dacSpeeds[DAC_BPP8];
2310 speed = pMga->device->dacSpeeds[DAC_BPP16];
2313 speed = pMga->device->dacSpeeds[DAC_BPP24];
2316 speed = pMga->device->dacSpeeds[DAC_BPP32];
2320 pMga->MaxClock = pMga->device->dacSpeeds[0];
2322 pMga->MaxClock = speed;
2325 pMga->MaxClock = pMga->Dac.maxPixelClock;
2326 from = pMga->Dac.ClockFrom;
2328 if(pMga->SecondCrtc == TRUE) {
2330 if ((pMga->ChipRev >= 0x80) || (pMga->Chipset == PCI_CHIP_MGAG550)) {
2332 pMga->MaxClock = 234000;
2334 pMga->MaxClock = 135000;
2338 pMga->MaxClock / 1000);
2345 clockRanges->minClock = pMga->MinClock;
2346 clockRanges->maxClock = pMga->MaxClock;
2350 if (pMga->SecondCrtc == TRUE)
2357 if (pMga->Dac.SetMemClk) {
2358 if (pMga->MemClk == 0) {
2359 pMga->MemClk = pMga->Dac.MemoryClock;
2360 from = pMga->Dac.MemClkFrom;
2364 pMga->MemClk / 1000.0);
2383 switch(pMga->Chipset) {
2385 if (!pMga->NoAccel) {
2394 if (!pMga->NoAccel) {
2427 pMga->Roundings[(pScrn->bitsPerPixel >> 3) - 1] *
2431 pMga->FbMapSize,
2437 if (i < 1 && pMga->FBDev) {
2459 if (!pMga->HasSDRAM) {
2460 if ((pMga->softbooted || pMga->Primary)
2461 && pMga->chip_attribs->probe_for_sdram) {
2465 pci_device_cfg_read_u32(pMga->PciInfo, & option_reg,
2468 option_reg = pciReadLong(pMga->PciTag, PCI_OPTION_REG);
2470 pMga->HasSDRAM = ((option_reg & (1 << 14)) == 0);
2473 pMga->HasSDRAM = pMga->chip_attribs->has_sdram;
2476 if (pMga->HasSDRAM) {
2509 pMga->YDstOrg = 0;
2510 if (pMga->chip_attribs->fb_4mb_quirk &&
2517 if (pMga->Interleave) {
2523 pMga->YDstOrg = offset / bytesPerPixel;
2536 (pMga->YDstOrg % ydstorg_modulo) != 0) {
2538 pMga->YDstOrg = offset / bytesPerPixel;
2544 pMga->YDstOrg);
2545 if(pMga->DualHeadEnabled) {
2546 if(pMga->SecondCrtc == FALSE) {
2547 pMga->FbUsableSize = pMgaEnt->masterFbMapSize;
2549 if( pMga->HWCursor && pMga->Dac.CursorOffscreenMemSize ) {
2552 pMga->FbUsableSize - pMga->Dac.CursorOffscreenMemSize ) {
2553 pMga->FbUsableSize -= pMga->Dac.CursorOffscreenMemSize;
2554 pMga->FbCursorOffset =
2556 pMga->Dac.CursorOffscreenMemSize;
2558 pMga->HWCursor = FALSE;
2565 pMga->FbUsableSize = pMgaEnt->slaveFbMapSize;
2566 pMga->HWCursor = FALSE;
2569 pMga->FbUsableSize = pMga->FbMapSize - pMga->YDstOrg * bytesPerPixel;
2571 if( pMga->HWCursor && pMga->Dac.CursorOffscreenMemSize ) {
2574 pMga->FbUsableSize - pMga->Dac.CursorOffscreenMemSize ) {
2575 pMga->FbUsableSize -= pMga->Dac.CursorOffscreenMemSize;
2576 pMga->FbCursorOffset =
2577 pMga->FbMapSize - pMga->Dac.CursorOffscreenMemSize;
2579 pMga->HWCursor = FALSE;
2599 if (pMga->HWCursor) {
2607 if (pMga->ShadowFB) {
2616 if (xf86ReturnOptValBool(pMga->Options, OPTION_DRI, FALSE)) {
2620 pMga->CurrentLayout.bitsPerPixel = pScrn->bitsPerPixel;
2621 pMga->CurrentLayout.depth = pScrn->depth;
2622 pMga->CurrentLayout.displayWidth = pScrn->displayWidth;
2623 pMga->CurrentLayout.weight.red = pScrn->weight.red;
2624 pMga->CurrentLayout.weight.green = pScrn->weight.green;
2625 pMga->CurrentLayout.weight.blue = pScrn->weight.blue;
2626 pMga->CurrentLayout.mode = pScrn->currentMode;
2630 if(pMga->MergedFB) {
2648 MGAPtr pMga = MGAPTR(pScrn);
2650 struct pci_device *const dev = pMga->PciInfo;
2656 if (!pMga->FBDev) {
2658 pciaddr_t fbaddr = pMga->FbAddress;
2659 pciaddr_t fbsize = pMga->FbMapSize;
2664 (void **)&pMga->FbBase);
2677 (long long)(uintptr_t)pMga->FbBase);
2679 if(pMga->entityPrivate == NULL || pMga->entityPrivate->mappedIOUsage == 0) {
2680 region = &dev->regions[pMga->io_bar];
2684 &pMga->IOBase);
2689 pMga->io_bar, strerror(err), err);
2693 if(pMga->entityPrivate != NULL)
2694 pMga->entityPrivate->mappedIOBase = pMga->IOBase;
2697 pMga->IOBase = pMga->entityPrivate->mappedIOBase;
2699 if(pMga->entityPrivate != NULL)
2700 pMga->entityPrivate->mappedIOUsage ++;
2708 pMga->IOBase = xf86MapPciMem(pScrn->scrnIndex,
2710 pMga->PciTag, pMga->IOAddress, 0x4000);
2711 if (pMga->IOBase == NULL)
2714 if (pMga->is_G200ER)
2716 pMga->FbBase = xf86MapPciMem(pScrn->scrnIndex, VIDMEM_FRAMEBUFFER,
2717 pMga->PciTag, pMga->FbAddress,
2718 pMga->FbMapSize);
2722 pMga->FbBase = xf86MapPciMem(pScrn->scrnIndex, VIDMEM_FRAMEBUFFER,
2723 pMga->PciTag, pMga->FbAddress,
2724 pMga->FbMapSize);
2726 if (pMga->FbBase == NULL)
2731 pMga->FbBase = fbdevHWMapVidmem(pScrn);
2732 if (pMga->FbBase == NULL) {
2738 pMga->IOBase = fbdevHWMapMMIO(pScrn);
2739 if (pMga->IOBase == NULL) {
2746 pMga->FbStart = pMga->FbBase + pMga->YDstOrg * (pScrn->bitsPerPixel / 8);
2748 pMga->ILOADBase = NULL;
2749 if (pMga->iload_bar != -1) {
2751 region = &dev->regions[pMga->iload_bar];
2753 if(pMga->entityPrivate == NULL || pMga->entityPrivate->mappedILOADUsage == 0) {
2757 (void *) &pMga->ILOADBase);
2765 if(pMga->entityPrivate != NULL)
2766 pMga->entityPrivate->mappedILOADBase = pMga->ILOADBase;
2769 pMga->ILOADBase = pMga->entityPrivate->mappedILOADBase;
2771 if(pMga->entityPrivate != NULL)
2772 pMga->entityPrivate->mappedILOADUsage ++;
2774 pMga->ILOADBase = xf86MapPciMem(pScrn->scrnIndex,
2777 pMga->PciTag, pMga->ILOADAddress,
2794 MGAPtr pMga = MGAPTR(pScrn);
2796 struct pci_device * const dev = pMga->PciInfo;
2800 if (!pMga->FBDev) {
2802 if(pMga->entityPrivate != NULL)
2803 pMga->entityPrivate->mappedIOUsage--;
2805 if(pMga->entityPrivate == NULL || pMga->entityPrivate->mappedIOUsage == 0) {
2806 pci_device_unmap_range(dev, pMga->IOBase,
2807 dev->regions[pMga->io_bar].size);
2809 if(pMga->entityPrivate != NULL)
2810 pMga->entityPrivate->mappedIOBase = NULL;
2813 xf86DrvMsg(pScrn->scrnIndex, X_INFO, "UNMAPPING framebuffer 0x%08llX, 0x%llX.\n", (long long)(uintptr_t)pMga->FbBase, (long long)pMga->FbMapSize);
2814 pci_device_unmap_range(dev, pMga->FbBase,
2815 pMga->FbMapSize);
2817 xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pMga->IOBase, 0x4000);
2818 xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pMga->FbBase, pMga->FbMapSize);
2826 if ((pMga->iload_bar != -1) && (pMga->ILOADBase != NULL)) {
2828 if(pMga->entityPrivate != NULL)
2829 pMga->entityPrivate->mappedILOADUsage--;
2831 if(pMga->entityPrivate == NULL || pMga->entityPrivate->mappedILOADUsage == 0) {
2832 pci_device_unmap_range(dev, pMga->ILOADBase,
2833 dev->regions[pMga->iload_bar].size);
2835 if(pMga->entityPrivate != NULL)
2836 pMga->entityPrivate->mappedILOADBase = NULL;
2840 xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pMga->ILOADBase, 0x800000);
2844 pMga->IOBase = NULL;
2845 pMga->FbBase = NULL;
2846 pMga->FbStart = NULL;
2847 pMga->ILOADBase = NULL;
2861 MGAPtr pMga = MGAPTR(pScrn);
2862 MGARegPtr mgaReg = &pMga->SavedReg;
2864 if(pMga->SecondCrtc == TRUE) return;
2871 (*pMga->Save)(pScrn, vgaReg, mgaReg, pMga->Primary);
2885 MGAPtr pMga = MGAPTR(pScrn);
2890 /* if(pMga->MergedFB && mode && mode->Private && (mode->PrivSize == 0)) {
2899 if (!(*pMga->ModeInit)(pScrn, mode))
2903 if (pMga->is_G200SE) {
2909 mgaReg = &pMga->ModeReg;
2912 if (pMga->directRenderingEnabled) {
2917 MGA_NOT_HAL((*pMga->Restore)(pScrn, vgaReg, mgaReg, FALSE));
2922 if (pMga->is_G200SE) {
2929 if (pMga->is_G200ER)
2955 if (pMga->is_G200SE)
2957 if (pMga->reg_1e24 >= 0x02)
2981 if (pMga->reg_1e24 >= 0x04)
3010 if (pMga->reg_1e24 >= 0x01)
3024 pMga->CurrentLayout.mode = mode;
3026 if(pMga->MergedFB && mode->Private && (mode->PrivSize == 0)) {
3027 pMga->M1currentMode = (DisplayModePtr)mode->Private;
3031 if (pMga->directRenderingEnabled)
3043 MGAPtr pMga = MGAPTR(pScrn);
3045 if (MGAISGx50(pMga)) {
3047 if (pMga->SecondOutput
3048 && (xf86IsEntityShared(pScrn->entityList[0]) || pMga->SecondCrtc)
3049 && !pMga->MergedFB) {
3096 MGAPtr pMga = MGAPTR(pScrn);
3097 MGARegPtr mgaReg = &pMga->SavedReg;
3108 if((!xf86IsEntityShared(pScrn->entityList[0]) && !pMga->SecondCrtc)
3109 || pMga->SecondCrtc || pMga->MergedFB) {
3110 /* if(pMga->MergedFB) {
3111 if(pMga->pScrn2)
3112 MGARestoreSecondCrtc(pMga->pScrn2);
3116 if(pMga->SecondCrtc) return;
3120 if (pMga->is_G200SE) {
3125 if (pMga->Primary) {
3126 (*pMga->Restore)(pScrn, vgaReg, mgaReg, TRUE);
3131 if (pMga->is_G200SE) {
3143 MGAPtr pMga = MGAPTR(pScrn);
3145 if (pMga->NoAccel) {
3147 bzero(pMga->FbStart,
3152 pMga->RestoreAccelState(pScrn);
3153 pMga->SetupForSolidFill(pScrn, 0, GXcopy, 0xFFFFFFFF);
3154 pMga->SubsequentSolidFillRect(pScrn, pScrn->virtualX, 0,
3172 MGAPtr pMga;
3183 pMga = MGAPTR(pScrn);
3184 MGAdac = &pMga->Dac;
3186 if (pMga->is_G200SE)
3189 FBTemp = pMga->FbMapSize;
3190 if (pMga->reg_1e24 >= 0x01)
3198 pMga->FbMapSize = pScrn->videoRam * 1024;
3210 if (!pMga->MergedFB) {
3211 if (pMga->SecondCrtc) {
3226 if ((pMga->Chipset == PCI_CHIP_MGAG100)
3227 || (pMga->Chipset == PCI_CHIP_MGAG100_PCI))
3230 if (pMga->DualHeadEnabled) {
3237 if (pMga->is_G200SE) {
3239 pMga->FbMapSize = FBTemp;
3243 vgaHWSetMmioFuncs(hwp, pMga->IOBase, PORT_OFFSET);
3247 if (!pMga->FBDev) {
3248 if (pMga->Primary) {
3264 pci_device_cfg_write_bits(pMga->PciInfo, 0x00000100, 0x00000000,
3267 pciSetBitsLong(pMga->PciTag, PCI_OPTION_REG, 0x100, 0x000);
3272 if (!pMga->SecondCrtc && pMga->HWCursor
3273 && pMga->chip_attribs->hwcursor_1064) {
3274 outMGAdac(MGA1064_CURSOR_BASE_ADR_LOW, pMga->FbCursorOffset >> 10);
3275 outMGAdac(MGA1064_CURSOR_BASE_ADR_HI, pMga->FbCursorOffset >> 18);
3307 if (pMga->SecondCrtc) {
3336 if(pMga->Rotate) {
3341 if(pMga->ShadowFB) {
3342 pMga->ShadowPitch = BitmapBytePad(pScrn->bitsPerPixel * width);
3343 pMga->ShadowPtr = malloc(pMga->ShadowPitch * height);
3344 displayWidth = pMga->ShadowPitch / (pScrn->bitsPerPixel >> 3);
3345 FBStart = pMga->ShadowPtr;
3347 pMga->ShadowPtr = NULL;
3348 FBStart = pMga->FbStart;
3357 if (pMga->is_G200SE) {
3360 pMga->directRenderingEnabled = FALSE;
3361 } else if (!xf86ReturnOptValBool(pMga->Options, OPTION_DRI, TRUE)) {
3362 } else if ( pMga->NoAccel ) {
3365 pMga->directRenderingEnabled = FALSE;
3367 else if ( pMga->TexturedVideo == TRUE ) {
3370 pMga->directRenderingEnabled = FALSE;
3372 else if (pMga->SecondCrtc == TRUE) {
3375 pMga->directRenderingEnabled = FALSE;
3377 else if ((pMga->FbMapSize /
3384 pMga->directRenderingEnabled = FALSE;
3387 pMga->directRenderingEnabled = MGADRIScreenInit(pScreen);
3418 pMga->BlockHandler = pScreen->BlockHandler;
3421 if(!pMga->ShadowFB) /* hardware cursor needs to wrap this layer */
3424 if (!pMga->NoAccel) {
3426 if (pMga->Exa)
3442 if (pMga->HWCursor) {
3447 if(pMga->MergedFB) {
3451 if (!pMga->PointerMoved)
3452 pMga->PointerMoved = pScrn->PointerMoved;
3463 if (!pMga->SecondCrtc)
3468 pMga->FBDev ? fbdevHWLoadPaletteWeak() : MGAdac->LoadPalette,
3472 if(pMga->ShadowFB) {
3475 if(pMga->Rotate) {
3476 if (!pMga->PointerMoved) {
3477 pMga->PointerMoved = pScrn->PointerMoved;
3494 pScrn->memPhysBase = pMga->FbAddress;
3495 pScrn->fbOffset = pMga->YDstOrg * (pScrn->bitsPerPixel / 8);
3500 if (pMga->directRenderingEnabled) {
3504 pMga->directRenderingEnabled = MGADRIFinishScreenInit(pScreen);
3506 if (pMga->directRenderingEnabled) {
3511 if (pMga->DualHeadEnabled && pMga->SecondCrtc == FALSE)
3512 pMgaEnt->directRenderingEnabled = pMga->directRenderingEnabled;
3513 pMga->haveQuiescense = 1;
3517 pMga->CloseScreen = pScreen->CloseScreen;
3526 if (!pMga->MergedFB && pMga->SecondCrtc) {
3567 MGAPtr pMga;
3569 pMga = MGAPTR(pScrn);
3570 pLayout = &pMga->CurrentLayout;
3576 if(pMga->ShowCache && y && pScrn->vtSema)
3579 Base = (y * pLayout->displayWidth + x + pMga->YDstOrg) >>
3580 (3 - pMga->BppShifts[(pLayout->bitsPerPixel >> 3) - 1]);
3583 if (pMga->Chipset == PCI_CHIP_MGAG400
3584 || pMga->Chipset == PCI_CHIP_MGAG550)
3618 MGAPtr pMga;
3620 pMga = MGAPTR(pScrn);
3621 pLayout = &pMga->CurrentLayout;
3623 if(pMga->ShowCache && y && pScrn->vtSema)
3632 Base += pMga->DstOrg;
3650 MGAPtr pMga;
3652 pMga = MGAPTR(pScrn);
3655 if (pMga->directRenderingEnabled) {
3656 if (pMga->irq) {
3658 OUTREG(MGAREG_IEN, pMga->reg_ien);
3669 if (pMga->SecondCrtc) {
3682 MGAPtr pMga;
3684 pMga = MGAPTR(pScrn);
3685 if (pMga->directRenderingEnabled) {
3720 MGAPtr pMga = MGAPTR(pScrn);
3728 if (pMga->directRenderingEnabled) {
3749 MGAPtr pMga = MGAPTR(pScrn);
3753 if (pMga->MergedFB)
3756 if (pMga->is_G200SE)
3759 FBTemp = pMga->FbMapSize;
3760 if (pMga->reg_1e24 >= 0x01)
3768 pMga->FbMapSize = pScrn->videoRam * 1024;
3772 if (pMga->FBDev) {
3783 if (pMga->is_G200SE)
3786 pMga->FbMapSize = FBTemp;
3790 if (pMga->directRenderingEnabled) {
3792 pMga->directRenderingEnabled=FALSE;
3796 if (pMga->DualHeadEnabled) {
3804 if (pMga->AccelInfoRec)
3805 XAADestroyInfoRec(pMga->AccelInfoRec);
3808 if (pMga->ExaDriver) {
3810 free(pMga->ExaDriver);
3813 if (pMga->CursorInfoRec)
3814 xf86DestroyCursorInfoRec(pMga->CursorInfoRec);
3815 free(pMga->ShadowPtr);
3816 free(pMga->DGAModes);
3817 free(pMga->adaptor);
3818 free(pMga->portPrivate);
3819 free(pMga->ScratchBuffer);
3825 if(pMga->BlockHandler)
3826 pScreen->BlockHandler = pMga->BlockHandler;
3828 pScreen->CloseScreen = pMga->CloseScreen;
3882 MGAPtr pMga = MGAPTR(pScrn);
3884 if (pMga->Chipset == PCI_CHIP_MGAG200_SE_A_PCI) {
3885 if (pMga->reg_1e24 == 0x01) {
3892 } else if (pMga->reg_1e24 == 0x02) {
3904 } else if (pMga->is_G200WB){
3907 if (pMga->Chipset != PCI_CHIP_MGAG200_EW3_PCI)
3909 if (pMga->KVM && mode->HDisplay > 1280)
3911 if (pMga->KVM && mode->VDisplay > 1024)
3916 } else if (pMga->is_G200EV
3919 } else if (pMga->is_G200EH && (pMga->Chipset != PCI_CHIP_MGAG200_EH3_PCI)
3922 } else if (pMga->is_G200ER
3939 if (pMga->SecondCrtc) {
3941 if (pMga->allowedWidth == 0)
3942 pMga->allowedWidth = pScrn->virtualX;
3943 if (mode->HDisplay != pMga->allowedWidth)
3986 MGAPtr pMga = MGAPTR(pScrn);
4030 MGAPtr pMga = MGAPTR(pScrn);
4039 if (pMga->Maven) {
4051 xf86I2CWriteByte(pMga->Maven, MGAMAV_MONEN, 0xb2);
4053 xf86I2CWriteByte(pMga->Maven, MGAMAV_MONSET, 0x20);
4055 xf86I2CWriteByte(pMga->Maven, MGAMAV_OUTMODE, 0x03);
4057 xf86I2CWriteByte(pMga->Maven, MGAMAV_STABLE, 0x22);
4059 xf86I2CWriteByte(pMga->Maven, MGAMAV_TEST, 0x00);
4069 if (pMga->Maven) {
4073 /* xf86I2CWriteByte(pMga->Maven, MGAMAV_STABLE, 0x6a); */
4074 /* xf86I2CWriteByte(pMga->Maven, MGAMAV_TEST, 0x03); */
4075 /* xf86I2CWriteByte(pMga->Maven, MGAMAV_TEST, 0x10); */
4076 xf86I2CWriteByte(pMga->Maven, MGAMAV_OUTMODE, 0x80);
4088 MGAPtr pMga = MGAPTR(pScrn);
4090 if(pMga->PaletteLoadCallback)
4091 (*pMga->PaletteLoadCallback)(pScrn);
4093 pScreen->BlockHandler = pMga->BlockHandler;
4097 if(pMga->VideoTimerCallback) {
4099 (*pMga->VideoTimerCallback)(pScrn, currentTime.milliseconds);
4102 if(pMga->RenderCallback)
4103 (*pMga->RenderCallback)(pScrn);
4216 MGAPtr pMga = MGAPTR(pScrn);