1 #ifndef _MGA_MACROS_H_ 2 #define _MGA_MACROS_H_ 3 4 #ifdef XSERVER_LIBPCIACCESS 5 #define MGA_IO_ADDRESS(p) (p)->PciInfo->regions[(p)->io_bar].base_addr 6 #define VENDOR_ID(p) (p)->vendor_id 7 #define DEVICE_ID(p) (p)->device_id 8 #define SUBSYS_ID(p) (p)->subdevice_id 9 #define CHIP_REVISION(p) (p)->revision 10 #else 11 #define MGA_IO_ADDRESS(p) (p)->IOAddress 12 #define VENDOR_ID(p) (p)->vendor 13 #define DEVICE_ID(p) (p)->chipType 14 #define SUBSYS_ID(p) (p)->subsysCard 15 #define CHIP_REVISION(p) (p)->chipRev 16 #endif 17 18 #define RGBEQUAL(c) (!((((c) >> 8) ^ (c)) & 0xffff)) 19 20 #ifdef MGADRI 21 #define MGA_SYNC_XTAG 0x275f4200 22 23 #define MGABUSYWAIT() do { \ 24 OUTREG(MGAREG_DWGSYNC, MGA_SYNC_XTAG); \ 25 while(INREG(MGAREG_DWGSYNC) != MGA_SYNC_XTAG) ; \ 26 }while(0); 27 28 #endif 29 30 #define MGAISBUSY() (INREG8(MGAREG_Status + 2) & 0x01) 31 32 #define WAITFIFO(cnt) \ 33 if(!pMga->UsePCIRetry) {\ 34 register int n = cnt; \ 35 if(n > pMga->FifoSize) n = pMga->FifoSize; \ 36 while(pMga->fifoCount < (n))\ 37 pMga->fifoCount = INREG8(MGAREG_FIFOSTATUS);\ 38 pMga->fifoCount -= n;\ 39 } 40 41 #define XYADDRESS(x,y) \ 42 ((y) * pMga->CurrentLayout.displayWidth + (x) + pMga->YDstOrg) 43 44 #define MAKEDMAINDEX(index) ((((index) >> 2) & 0x7f) | (((index) >> 6) & 0x80)) 45 46 #define DMAINDICES(one,two,three,four) \ 47 ( MAKEDMAINDEX(one) | \ 48 (MAKEDMAINDEX(two) << 8) | \ 49 (MAKEDMAINDEX(three) << 16) | \ 50 (MAKEDMAINDEX(four) << 24) ) 51 52 #define SET_PLANEMASK_REPLICATED(mask, rep_mask, bpp) \ 53 do { \ 54 if( (bpp != 24) \ 55 && !(pMga->AccelFlags & MGA_NO_PLANEMASK) \ 56 && ((mask) != pMga->PlaneMask)) { \ 57 pMga->PlaneMask = (mask); \ 58 OUTREG(MGAREG_PLNWT,(rep_mask)); \ 59 } \ 60 } while( 0 ) 61 62 #define DISABLE_CLIP() { \ 63 pMga->AccelFlags &= ~CLIPPER_ON; \ 64 WAITFIFO(1); \ 65 OUTREG(MGAREG_CXBNDRY, 0xFFFF0000); } 66 67 #ifdef MGADRI 68 #define CHECK_DMA_QUIESCENT(pMGA, pScrn) { \ 69 if (!pMGA->haveQuiescense) { \ 70 pMGA->GetQuiescence( pScrn ); \ 71 } \ 72 } 73 #else 74 #define CHECK_DMA_QUIESCENT(pMGA, pScrn) 75 #endif 76 77 #define MGA_NOT_HAL(x) { x; } 78 79 #define MGAISGx50(x) ((x)->is_Gx50) 80 81 #define MGA_DH_NEEDS_HAL(x) (((x)->Chipset == PCI_CHIP_MGAG400) && \ 82 ((x)->ChipRev < 0x80)) 83 84 #endif /* _MGA_MACROS_H_ */ 85