Lines Matching refs:pApm

53 static void	ApmUnlock(ApmPtr pApm);
54 static void ApmLock(ApmPtr pApm);
200 ApmUnlock(ApmPtr pApm)
202 if (pApm->Chipset >= AT3D)
205 wrinx(pApm->xport, 0x10, 0x12);
210 ApmLock(ApmPtr pApm)
212 if (pApm->Chipset >= AT3D)
213 ApmWriteSeq(0x10, pApm->savedSR10 ? 0 : 0x12);
215 wrinx(pApm->xport, 0x10, pApm->savedSR10 ? 0 : 0x12);
386 pApm = APMPTR(pScrn);
389 pEnt = pApm->pEnt = xf86GetEntityInfo(pScrn->entityList[0]);
391 pApm->PciInfo = xf86GetPciInfoForEntity(pEnt->index);
393 pApm->PciTag = pciTag(pApm->PciInfo->bus, pApm->PciInfo->device,
394 pApm->PciInfo->func);
398 pApm->PciInfo = NULL;
400 pApm->PciTag = 0;
428 pApm->iobase = PIOOFFSET;
429 pApm->xport = PIOOFFSET + 0x3C4;
493 if (!(pApm->Options = malloc(sizeof(ApmOptions))))
495 memcpy(pApm->Options, ApmOptions, sizeof(ApmOptions));
496 xf86ProcessOptions(pScrn->scrnIndex, pScrn->options, pApm->Options);
498 pApm->scrnIndex = pScrn->scrnIndex;
505 pApm->hwCursor = FALSE;
506 if (xf86GetOptValBool(pApm->Options, OPTION_HW_CURSOR, &pApm->hwCursor))
508 if (xf86ReturnOptValBool(pApm->Options, OPTION_SW_CURSOR, FALSE)) {
510 pApm->hwCursor = FALSE;
513 pApm->hwCursor ? "HW" : "SW");
516 pApm->NoAccel = TRUE;
517 if (xf86ReturnOptValBool(pApm->Options, OPTION_NOACCEL, FALSE)) {
519 pApm->NoAccel = TRUE;
521 if (pApm->NoAccel)
523 if (xf86GetOptValFreq(pApm->Options, OPTION_SET_MCLK, OPTUNITS_MHZ, &real)) {
525 pApm->MemClk = (int)(real * 1000.0);
527 if (xf86ReturnOptValBool(pApm->Options, OPTION_SHADOW_FB, FALSE)) {
528 pApm->ShadowFB = TRUE;
529 pApm->NoAccel = TRUE;
533 if (xf86ReturnOptValBool(pApm->Options, OPTION_PCI_RETRY, FALSE)) {
534 if (xf86ReturnOptValBool(pApm->Options, OPTION_PCI_BURST, FALSE)) {
535 pApm->UsePCIRetry = TRUE;
541 pApm->DPMSMask[DPMSModeOn] = DPMSModeOn;
542 pApm->DPMSMask[DPMSModeStandby] = DPMSModeStandby;
543 pApm->DPMSMask[DPMSModeSuspend] = DPMSModeSuspend;
544 pApm->DPMSMask[DPMSModeOff] = DPMSModeOff;
545 if ((s = xf86GetOptValString(pApm->Options, OPTION_REMAP_DPMS_ON))) {
547 pApm->DPMSMask[DPMSModeOn] = DPMSModeOn;
549 pApm->DPMSMask[DPMSModeOn] = DPMSModeStandby;
551 pApm->DPMSMask[DPMSModeOn] = DPMSModeSuspend;
553 pApm->DPMSMask[DPMSModeOn] = DPMSModeOff;
555 pApm->DPMSMask[DPMSModeOn] = strtol(s, NULL, 0);
556 if (pApm->DPMSMask[DPMSModeOn] > (sizeof pApm->DPMSMask)-1)
557 pApm->DPMSMask[DPMSModeOn] = (sizeof pApm->DPMSMask) - 1;
560 if ((s = xf86GetOptValString(pApm->Options, OPTION_REMAP_DPMS_STANDBY))) {
562 pApm->DPMSMask[DPMSModeStandby] = DPMSModeOn;
564 pApm->DPMSMask[DPMSModeStandby] = DPMSModeStandby;
566 pApm->DPMSMask[DPMSModeStandby] = DPMSModeSuspend;
568 pApm->DPMSMask[DPMSModeStandby] = DPMSModeOff;
570 pApm->DPMSMask[DPMSModeStandby] = strtol(s, NULL, 0);
571 if (pApm->DPMSMask[DPMSModeStandby] > (sizeof pApm->DPMSMask)-1)
572 pApm->DPMSMask[DPMSModeStandby] = (sizeof pApm->DPMSMask) - 1;
575 if ((s = xf86GetOptValString(pApm->Options, OPTION_REMAP_DPMS_SUSPEND))) {
577 pApm->DPMSMask[DPMSModeSuspend] = DPMSModeOn;
579 pApm->DPMSMask[DPMSModeSuspend] = DPMSModeStandby;
581 pApm->DPMSMask[DPMSModeSuspend] = DPMSModeSuspend;
583 pApm->DPMSMask[DPMSModeSuspend] = DPMSModeOff;
585 pApm->DPMSMask[DPMSModeSuspend] = strtol(s, NULL, 0);
586 if (pApm->DPMSMask[DPMSModeSuspend] > (sizeof pApm->DPMSMask)-1)
587 pApm->DPMSMask[DPMSModeSuspend] = (sizeof pApm->DPMSMask) - 1;
590 if ((s = xf86GetOptValString(pApm->Options, OPTION_REMAP_DPMS_OFF))) {
592 pApm->DPMSMask[DPMSModeOff] = DPMSModeOn;
594 pApm->DPMSMask[DPMSModeOff] = DPMSModeStandby;
596 pApm->DPMSMask[DPMSModeOff] = DPMSModeSuspend;
598 pApm->DPMSMask[DPMSModeOff] = DPMSModeOff;
600 pApm->DPMSMask[DPMSModeOff] = strtol(s, NULL, 0);
601 if (pApm->DPMSMask[DPMSModeOff] > (sizeof pApm->DPMSMask)-1)
602 pApm->DPMSMask[DPMSModeOff] = (sizeof pApm->DPMSMask) - 1;
612 pApm->Chipset = xf86StringToToken(ApmChipsets, pScrn->chipset);
615 pApm->Chipset = pEnt->device->chipID;
616 pScrn->chipset = (char *)xf86TokenToString(ApmChipsets, pApm->Chipset);
620 pApm->Chipset);
623 if (pApm->PciInfo)
624 pApm->Chipset = PCI_DEV_DEVICE_ID(pApm->PciInfo);
626 pApm->Chipset = pEnt->chipset;
627 pScrn->chipset = (char *)xf86TokenToString(ApmChipsets, pApm->Chipset);
629 if (pScrn->bitsPerPixel == 24 && pApm->Chipset < AT24) {
636 pApm->ChipRev = pEnt->device->chipRev;
638 pApm->ChipRev);
639 } else if (pApm->PciInfo) {
640 pApm->ChipRev = PCI_DEV_REVISION(pApm->PciInfo);
649 "ChipID 0x%04X is not recognised\n", pApm->Chipset);
652 if (pApm->Chipset < 0) {
661 pApm->LinAddress = pEnt->device->MemBase;
663 } else if (pApm->PciInfo) {
664 pApm->LinAddress = PCI_REGION_BASE(pApm->PciInfo, 0, REGION_MEM) & 0xFF800000;
671 pApm->LinAddress = 0x80000000;
675 (unsigned long)pApm->LinAddress);
679 pApm->I2C = TRUE;
683 if (pApm->Chipset >= AT3D)
684 pApm->LinMapSize = 16 * 1024 * 1024;
686 pApm->LinMapSize = 6 * 1024 * 1024;
687 pApm->FbMapSize = 4 * 1024 * 1024;
702 if (pApm->VGAMap)
710 } else if (pApm->Chipset >= AT3D) {
717 pApm->PciTag, pApm->LinAddress,
718 pApm->LinMapSize);
722 int err = pci_device_map_range(pApm->PciInfo,
723 pApm->LinAddress,
724 pApm->LinMapSize,
733 /*save = pciReadLong(pApm->PciTag, PCI_CMD_STAT_REG);
734 pciWriteLong(pApm->PciTag, PCI_CMD_STAT_REG, save | PCI_CMD_MEM_ENABLE);*/
745 pApm->savedSR10 = LinMap[0xFFF3C5];
747 pApm->xbase = LinMap[0xFFF3C5];
749 pApm->xbase |= LinMap[0xFFF3C5] << 8;
754 /*pciWriteLong(pApm->PciTag, PCI_CMD_STAT_REG, save);*/
756 xf86UnMapVidMem(pScrn->scrnIndex, (pointer)LinMap, pApm->LinMapSize);
758 pci_device_unmap_range(pApm->PciInfo, (pointer)LinMap, pApm->LinMapSize);
765 save = pciReadLong(pApm->PciTag, PCI_CMD_STAT_REG);
766 pciWriteLong(pApm->PciTag, PCI_CMD_STAT_REG, save | PCI_CMD_IO_ENABLE);*/
767 pApm->savedSR10 = rdinx(pApm->xport, 0x10);
768 wrinx(pApm->xport, 0x10, 0x12);
769 pScrn->videoRam = rdinx(pApm->xport, 0x20) * 64;
770 pApm->xbase = rdinx(pApm->xport, 0x1F) << 8;
771 pApm->xbase |= rdinx(pApm->xport, 0x1E);
772 pApm->xbase += pApm->iobase;
773 wrinx(pApm->xport, 0x10, pApm->savedSR10 ? 0 : 0x12);
774 /*pciWriteLong(pApm->PciTag, PCI_CMD_STAT_REG, save);*/
777 if (pApm->Chipset < AT3D && pScrn->videoRam >= 4096)
789 if (pApm->I2C) {
794 MonInfo = xf86DoEDID_DDC2(XF86_SCRN_ARG(pScrn),pApm->I2CPtr);
815 pApm->MinClock = 23125;
817 pApm->MinClock / 1000);
843 pApm->MaxClock = pEnt->device->dacSpeeds[0];
845 pApm->MaxClock = speed;
848 switch(pApm->Chipset)
860 pApm->MaxClock = 160000;
863 pApm->MaxClock = 144000;
866 pApm->MaxClock = 75000; /* Hmm. */
869 pApm->MaxClock = 94500;
880 pApm->MaxClock = 175500;
883 pApm->MaxClock = 144000;
886 pApm->MaxClock = 94000; /* Changed from 75000 by GreniƩ */
889 pApm->MaxClock = 94500;
900 pApm->MaxClock = 135000;
903 pApm->MaxClock = 75000;
906 pApm->MaxClock = 60000;
913 pApm->MaxClock = 135000;
918 pApm->MaxClock / 1000);
926 clockRanges->minClock = pApm->MinClock;
927 clockRanges->maxClock = pApm->MaxClock;
933 if (pApm->NoAccel) {
944 pApm->FbMapSize,
956 pApm->FbMapSize,
1001 if (!pApm->NoAccel) {
1005 pApm->NoAccel = TRUE;
1006 pApm->ShadowFB = TRUE;
1009 pApm->NoAccel = TRUE;
1010 pApm->ShadowFB = TRUE;
1015 if (pApm->hwCursor) {
1023 if (pApm->ShadowFB) {
1030 pApm->CurrentLayout.displayWidth = pScrn->virtualX;
1031 pApm->CurrentLayout.displayHeight = pScrn->virtualY;
1032 pApm->CurrentLayout.bitsPerPixel = pScrn->bitsPerPixel;
1033 pApm->CurrentLayout.bytesPerScanline= (pApm->CurrentLayout.displayWidth * pApm->CurrentLayout.bitsPerPixel) >> 3;
1034 pApm->CurrentLayout.depth = pScrn->depth;
1035 pApm->CurrentLayout.Scanlines = 2 * (pScrn->videoRam << 10) / pApm->CurrentLayout.bytesPerScanline;
1037 pApm->CurrentLayout.mask32 = 3;
1039 pApm->CurrentLayout.mask32 = 32 / pScrn->bitsPerPixel - 1;
1055 pApm->LinMap = xf86MapPciMem(pScrn->scrnIndex, VIDMEM_FRAMEBUFFER,
1056 pApm->PciTag,
1057 (unsigned long)pApm->LinAddress,
1058 pApm->LinMapSize);
1061 void** result = (void**)&pApm->LinMap;
1062 int err = pci_device_map_range(pApm->PciInfo,
1063 pApm->LinAddress,
1064 pApm->LinMapSize,
1075 if (pApm->LinMap == NULL)
1078 if (pApm->Chipset >= AT3D) {
1079 pApm->FbBase = (void *)(((char *)pApm->LinMap) + 0x800000);
1080 pApm->VGAMap = ((char *)pApm->LinMap) + 0xFFF000;
1081 pApm->MemMap = ((char *)pApm->LinMap) + 0xFFEC00;
1082 pApm->BltMap = (void *)(((char *)pApm->LinMap) + 0x3F8000);
1085 pApm->FbBase = (void *)pApm->LinMap;
1086 pApm->VGAMap = NULL;
1088 pApm->MemMap = ((char *)pApm->LinMap) + 0x5FF800;
1089 pApm->BltMap = (void *)(((char *)pApm->LinMap) + 0x5F8000);
1092 pApm->MemMap = ((char *)pApm->LinMap) + 0x3FF800;
1093 pApm->BltMap = (void *)(((char *)pApm->LinMap) + 0x3F8000);
1100 pApm->c9 = RDXB(0xC9);
1101 if (pApm->Chipset >= AT3D) {
1102 pApm->d9 = RDXB(0xD9);
1103 pApm->db = RDXB(0xDB);
1106 WRXB(0xDB, (pApm->db & 0xF4) | 0x0A);
1107 WRXB(0xD9, (pApm->d9 & 0xCF) | 0x20);
1109 vgaHWSetMmioFuncs(hwp, (CARD8 *)pApm->LinMap, 0xFFF000);
1111 if (pApm->Chipset >= AP6422)
1112 WRXB(0xC9, pApm->c9 | 0x10);
1117 pApm->MiscOut = hwp->readMiscOut(hwp);
1135 hwp->writeMiscOut(hwp, pApm->MiscOut);
1136 if (pApm->LinMap) {
1137 if (pApm->Chipset >= AT3D) {
1138 WRXB(0xD9, pApm->d9);
1139 WRXB(0xDB, pApm->db);
1141 WRXB(0xC9, pApm->c9);
1143 xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pApm->LinMap, pApm->LinMapSize);
1145 pci_device_unmap_range(pApm->PciInfo, (pointer)pApm->LinMap, pApm->LinMapSize);
1147 pApm->LinMap = NULL;
1149 else if (pApm->FbBase)
1151 xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pApm->LinMap, 0x10000);
1153 pci_device_unmap_range(pApm->PciInfo, (pointer)pApm->LinMap, 0x10000);
1166 ApmRegPtr ApmReg = &pApm->SavedReg;
1169 if (pApm->VGAMap) {
1177 if (pApm->FontInfo || (pApm->FontInfo = malloc(TEXT_AMOUNT))) {
1184 memcpy(pApm->FontInfo, pApm->FbBase, TEXT_AMOUNT);
1225 ApmReg->SEQ[0x1B] = rdinx(pApm->xport, 0x1B);
1226 ApmReg->SEQ[0x1C] = rdinx(pApm->xport, 0x1C);
1234 ApmReg->CRT[0x19] = rdinx(pApm->iobase + 0x3D4, 0x19);
1235 ApmReg->CRT[0x1A] = rdinx(pApm->iobase + 0x3D4, 0x1A);
1236 ApmReg->CRT[0x1B] = rdinx(pApm->iobase + 0x3D4, 0x1B);
1237 ApmReg->CRT[0x1C] = rdinx(pApm->iobase + 0x3D4, 0x1C);
1238 ApmReg->CRT[0x1D] = rdinx(pApm->iobase + 0x3D4, 0x1D);
1239 ApmReg->CRT[0x1E] = rdinx(pApm->iobase + 0x3D4, 0x1E);
1255 comp_lmn(ApmPtr pApm, long clock)
1267 if (pApm->Chipset >= AT3D)
1345 if (pApm->Chipset >= AT24)
1368 xf86DrvMsg(pApm->scrnIndex, X_PROBED,
1385 ApmRegPtr ApmReg = &pApm->ModeReg;
1399 hwp->writeMiscOut(hwp, pApm->MiscOut | 0x0F);
1406 memcpy(ApmReg, &pApm->SavedReg, sizeof pApm->SavedReg);
1416 offset = (pApm->CurrentLayout.displayWidth *
1417 pApm->CurrentLayout.bitsPerPixel / 8) >> 3;
1424 switch(pApm->CurrentLayout.bitsPerPixel)
1433 if (pApm->CurrentLayout.depth == 15)
1445 FatalError("Unsupported bit depth %d\n", pApm->CurrentLayout.depth);
1493 ApmReg->EX[XREC] = comp_lmn(pApm, mode->Clock);
1500 if (pApm->CurrentLayout.bitsPerPixel > 8)
1505 if (pApm->MemClk)
1506 ApmReg->EX[XRE8] = comp_lmn(pApm, pApm->MemClk);
1507 else if (pApm->Chipset >= AT3D)
1517 if (pApm->Chipset >= AT3D) {
1544 ApmUnlock(pApm);
1546 if (pApm->VGAMap) {
1550 if (!(vgaReg->Attribute[0x10] & 1) && pApm->FontInfo) {
1552 memcpy(pApm->FbBase, pApm->FontInfo, TEXT_AMOUNT);
1601 wrinx(pApm->xport, 0x1B, ApmReg->SEQ[0x1B]);
1602 wrinx(pApm->xport, 0x1C, ApmReg->SEQ[0x1C]);
1610 wrinx(pApm->iobase + 0x3D4, 0x19, ApmReg->CRT[0x19]);
1611 wrinx(pApm->iobase + 0x3D4, 0x1A, ApmReg->CRT[0x1A]);
1612 wrinx(pApm->iobase + 0x3D4, 0x1B, ApmReg->CRT[0x1B]);
1613 wrinx(pApm->iobase + 0x3D4, 0x1C, ApmReg->CRT[0x1C]);
1614 wrinx(pApm->iobase + 0x3D4, 0x1D, ApmReg->CRT[0x1D]);
1615 wrinx(pApm->iobase + 0x3D4, 0x1E, ApmReg->CRT[0x1E]);
1645 Bpp = pApm->CurrentLayout.bitsPerPixel >> 3;
1646 FBPitch = pApm->CurrentLayout.bytesPerScanline;
1651 src = pApm->ShadowPtr + (pbox->y1 * pApm->ShadowPitch) +
1653 dst = (unsigned char *)pApm->FbBase + (pbox->y1 * FBPitch) + (pbox->x1 * Bpp);
1658 src += pApm->ShadowPitch;
1678 pApm->pScreen = pScreen;
1685 pApm->OffscreenReserved = 0;
1692 pApm->CurrentLayout.pMode = pScrn->currentMode;
1711 if (pApm->CurrentLayout.bitsPerPixel > 8) {
1727 if(pApm->ShadowFB) {
1728 pApm->ShadowPitch =
1730 pApm->ShadowPtr = malloc(pApm->ShadowPitch * pScrn->virtualY);
1731 FbBase = pApm->ShadowPtr;
1733 pApm->ShadowPtr = NULL;
1734 FbBase = pApm->FbBase;
1738 ApmHWCursorReserveSpace(pApm);
1739 ApmAccelReserveSpace(pApm);
1785 if (!pApm->ShadowFB) { /* hardware cursor needs to wrap this layer */
1795 if (!pApm->NoAccel) {
1807 if (pApm->hwCursor) {
1828 if (pApm->ShadowFB)
1837 pApm->CloseScreen = pScreen->CloseScreen;
1840 pScrn->memPhysBase = pApm->LinAddress;
1841 pScrn->fbOffset = (((char *)pApm->FbBase) - ((char *)pApm->LinMap));
1871 if (pApm->VGAMap) {
1886 outb(pApm->iobase + 0x3C8, index);
1888 outb(pApm->iobase + 0x3C9, colors[index].red);
1889 outb(pApm->iobase + 0x3C9, colors[index].green);
1890 outb(pApm->iobase + 0x3C9, colors[index].blue);
1915 if (pApm->CurrentLayout.bitsPerPixel == 24)
1917 Base = ((y * pApm->CurrentLayout.displayWidth + x) * (pApm->CurrentLayout.bitsPerPixel / 8)) >> 2;
1921 if (pApm->VGAMap) {
1932 outw(pApm->iobase + 0x3D4, (Base & 0x00FF00) | 0x0C);
1933 outw(pApm->iobase + 0x3D4, ((Base & 0x00FF) << 8) | 0x0D);
1939 modinx(pApm->iobase + 0x3D4, 0x1C, 0x0F, (Base & 0x0F0000) >> 16);
1958 if (pApm->Chipset >= AT3D) {
1960 WRXB(0xDB, (pApm->db & 0xF4) | 0x0A | pApm->Rush);
1961 WRXB(0xD9, (pApm->d9 & 0xCF) | 0x20);
1963 if (pApm->Chipset >= AP6422)
1964 WRXB(0xC9, pApm->c9 | 0x10);
1970 hwp->writeMiscOut(hwp, pApm->MiscOut | 0x0F);
1987 ApmRestore(pScrn, &hwp->SavedReg, &pApm->SavedReg);
1991 (*hwp->writeMiscOut)(hwp, pApm->MiscOut);
1993 ApmLock(pApm);
1994 if (pApm->Chipset >= AT3D) {
1995 WRXB(0xD9, pApm->d9);
1996 WRXB(0xDB, pApm->db);
1998 WRXB(0xC9, pApm->c9);
2020 ApmRestore(pScrn, &hwp->SavedReg, &pApm->SavedReg);
2025 if(pApm->AccelInfoRec)
2026 XAADestroyInfoRec(pApm->AccelInfoRec);
2027 if(pApm->DGAXAAInfo)
2028 XAADestroyInfoRec(pApm->DGAXAAInfo);
2029 pApm->AccelInfoRec = NULL;
2031 if(pApm->CursorInfoRec)
2032 xf86DestroyCursorInfoRec(pApm->CursorInfoRec);
2033 pApm->CursorInfoRec = NULL;
2034 free(pApm->DGAModes);
2035 free(pApm->adaptor);
2044 pScreen->CloseScreen = pApm->CloseScreen;
2084 if (PowerManagementMode < sizeof pApm->DPMSMask &&
2086 PowerManagementMode = pApm->DPMSMask[PowerManagementMode];