Lines Matching defs:pAST

60 bInitCMDQInfo(ScrnInfoPtr pScrn, ASTRecPtr pAST)
66 if (!pAST->MMIO2D) {
67 pAST->CMDQInfo.ulCMDQType = VM_CMD_QUEUE;
72 pAST->pCMDQPtr = xf86AllocateOffscreenLinear (pScreen, pAST->CMDQInfo.ulCMDQSize, 8, NULL, NULL, NULL);
74 if (pAST->pCMDQPtr) break;
76 pAST->CMDQInfo.ulCMDQSize >>= 1;
78 } while (pAST->CMDQInfo.ulCMDQSize >= MIN_CMDQ_SIZE);
80 if (pAST->pCMDQPtr)
82 xf86DrvMsg(pScrn->scrnIndex, X_INFO,"Allocate CMDQ size is %ld kbyte \n", (unsigned long) (pAST->CMDQInfo.ulCMDQSize/1024));
84 pAST->CMDQInfo.ulCMDQOffsetAddr = pAST->pCMDQPtr->offset*((pScrn->bitsPerPixel + 1) / 8);
85 pAST->CMDQInfo.pjCMDQVirtualAddr = pAST->FBVirtualAddr + pAST->CMDQInfo.ulCMDQOffsetAddr;
87 pAST->CMDQInfo.ulCurCMDQueueLen = pAST->CMDQInfo.ulCMDQSize - CMD_QUEUE_GUARD_BAND;
88 pAST->CMDQInfo.ulCMDQMask = pAST->CMDQInfo.ulCMDQSize - 1 ;
94 pAST->MMIO2D = TRUE; /* set to MMIO mode if CMDQ allocate failed */
100 if (pAST->MMIO2D) {
101 pAST->CMDQInfo.ulCMDQType = VM_CMD_MMIO;
108 bEnableCMDQ(ScrnInfoPtr pScrn, ASTRecPtr pAST)
112 vASTWaitEngIdle(pScrn, pAST);
115 if (pAST->DBGSelect)
117 *(ULONG *) (pAST->MMIOVirtualAddr + 0x804C) = (ULONG) (pAST->DBGSelect);
121 switch (pAST->CMDQInfo.ulCMDQType)
124 ulVMCmdQBasePort = (pAST->CMDQInfo.ulCMDQOffsetAddr - 0) >> 3;
130 switch (pAST->CMDQInfo.ulCMDQSize)
153 *(ULONG *) (pAST->CMDQInfo.pjCmdQBasePort) = ulVMCmdQBasePort;
154 pAST->CMDQInfo.ulWritePointer = *(ULONG *) (pAST->CMDQInfo.pjWritePort) << 3;
162 *(ULONG *) (pAST->CMDQInfo.pjCmdQBasePort) = ulVMCmdQBasePort;
174 bEnableCMDQ2300(ScrnInfoPtr pScrn, ASTRecPtr pAST)
178 vASTWaitEngIdle(pScrn, pAST);
181 if (pAST->DBGSelect)
183 *(ULONG *) (pAST->MMIOVirtualAddr + 0x804C) = (ULONG) (pAST->DBGSelect);
187 switch (pAST->CMDQInfo.ulCMDQType)
193 switch (pAST->CMDQInfo.ulCMDQSize)
215 *(ULONG *) (pAST->MMIOVirtualAddr + 0x8060) = ulNewModeData;
218 ulVMCmdQBasePort = (pAST->CMDQInfo.ulCMDQOffsetAddr - 0) >> 3;
219 *(ULONG *) (pAST->CMDQInfo.pjCmdQBasePort) = ulVMCmdQBasePort;
220 pAST->CMDQInfo.ulWritePointer = *(ULONG *) (pAST->CMDQInfo.pjWritePort) << 3;
226 *(ULONG *) (pAST->MMIOVirtualAddr + 0x8060) = ulNewModeData;
239 bASTEnable2D(ScrnInfoPtr pScrn, ASTRecPtr pAST)
244 if ( (pAST->jChipType == AST2300) || (pAST->jChipType == AST2400) || (pAST->jChipType == AST2500) )
247 switch (pAST->jChipType)
256 *(ULONG *) (pAST->MMIOVirtualAddr + 0xF004) = 0x1e6e0000;
257 *(ULONG *) (pAST->MMIOVirtualAddr + 0xF000) = 0x1;
259 ulData = *(ULONG *) (pAST->MMIOVirtualAddr + 0x1200c);
260 *(ULONG *) (pAST->MMIOVirtualAddr + 0x1200c) = (ulData & 0xFFFFFFFD);
268 if (!bInitCMDQInfo(pScrn, pAST))
270 vASTDisable2D(pScrn, pAST);
274 if (!pfnEnableCMDQ(pScrn, pAST))
276 vASTDisable2D(pScrn, pAST);
284 vASTDisable2D(ScrnInfoPtr pScrn, ASTRecPtr pAST)
287 vASTWaitEngIdle(pScrn, pAST);
288 vASTWaitEngIdle(pScrn, pAST);
291 if (pAST->jChipType != AST1180)
293 if (pAST->SavedReg.REGA4 & 0x01) /* 2D enabled */
296 *(ULONG *) (pAST->MMIOVirtualAddr + 0x8044) = pAST->SavedReg.ENG8044;
307 vASTWaitEngIdle(ScrnInfoPtr pScrn, ASTRecPtr pAST)
313 if (pAST->jChipType != AST1180)
325 if (*(ULONG *) (pAST->CMDQInfo.pjCmdQBasePort) & 0x02000000) /* MMIO Mode */
330 ulEngState = (*(volatile ULONG *)(pAST->CMDQInfo.pjEngStatePort)) & 0xFFFC0000;
331 ulEngState2 = (*(volatile ULONG *)(pAST->CMDQInfo.pjEngStatePort)) & 0xFFFC0000;
332 ulEngState2 = (*(volatile ULONG *)(pAST->CMDQInfo.pjEngStatePort)) & 0xFFFC0000;
333 ulEngState2 = (*(volatile ULONG *)(pAST->CMDQInfo.pjEngStatePort)) & 0xFFFC0000;
334 ulEngState2 = (*(volatile ULONG *)(pAST->CMDQInfo.pjEngStatePort)) & 0xFFFC0000;
335 ulEngState2 = (*(volatile ULONG *)(pAST->CMDQInfo.pjEngStatePort)) & 0xFFFC0000;
344 static __inline ULONG ulGetCMDQLength(ASTRecPtr pAST, ULONG ulWritePointer, ULONG ulCMDQMask)
349 ulReadPointer = *((volatile ULONG *)(pAST->CMDQInfo.pjReadPort));
350 ulReadPointer2 = *((volatile ULONG *)(pAST->CMDQInfo.pjReadPort));
351 ulReadPointer2 = *((volatile ULONG *)(pAST->CMDQInfo.pjReadPort));
352 ulReadPointer2 = *((volatile ULONG *)(pAST->CMDQInfo.pjReadPort));
353 ulReadPointer2 = *((volatile ULONG *)(pAST->CMDQInfo.pjReadPort));
354 ulReadPointer2 = *((volatile ULONG *)(pAST->CMDQInfo.pjReadPort));
361 ASTRecPtr pAST, ULONG ulDataLen)
366 ulWritePointer = pAST->CMDQInfo.ulWritePointer;
367 ulContinueCMDQLen = pAST->CMDQInfo.ulCMDQSize - ulWritePointer;
368 ulCMDQMask = pAST->CMDQInfo.ulCMDQMask;
373 if (pAST->CMDQInfo.ulCurCMDQueueLen >= ulDataLen)
382 ulCurCMDQLen = ulGetCMDQLength(pAST, ulWritePointer, ulCMDQMask);
385 pAST->CMDQInfo.ulCurCMDQueueLen = ulCurCMDQLen;
389 pjBuffer = pAST->CMDQInfo.pjCMDQVirtualAddr + ulWritePointer;
390 pAST->CMDQInfo.ulCurCMDQueueLen -= ulDataLen;
391 pAST->CMDQInfo.ulWritePointer = (ulWritePointer + ulDataLen) & ulCMDQMask;
398 if (pAST->CMDQInfo.ulCurCMDQueueLen >= ulContinueCMDQLen)
407 ulCurCMDQLen = ulGetCMDQLength(pAST, ulWritePointer, ulCMDQMask);
410 pAST->CMDQInfo.ulCurCMDQueueLen = ulCurCMDQLen;
414 pjBuffer = pAST->CMDQInfo.pjCMDQVirtualAddr + ulWritePointer;
421 pAST->CMDQInfo.ulCurCMDQueueLen -= ulContinueCMDQLen;
422 pAST->CMDQInfo.ulWritePointer = ulWritePointer = 0;
425 if (pAST->CMDQInfo.ulCurCMDQueueLen >= ulDataLen)
434 ulCurCMDQLen = ulGetCMDQLength(pAST, ulWritePointer, ulCMDQMask);
437 pAST->CMDQInfo.ulCurCMDQueueLen = ulCurCMDQLen;
441 pAST->CMDQInfo.ulCurCMDQueueLen -= ulDataLen;
442 pjBuffer = pAST->CMDQInfo.pjCMDQVirtualAddr + ulWritePointer;
443 pAST->CMDQInfo.ulWritePointer = (ulWritePointer + ulDataLen) & ulCMDQMask;