1/* 2 * Copyright 1992-2003 by Alan Hourihane, North Wales, UK. 3 * 4 * Permission to use, copy, modify, distribute, and sell this software and its 5 * documentation for any purpose is hereby granted without fee, provided that 6 * the above copyright notice appear in all copies and that both that 7 * copyright notice and this permission notice appear in supporting 8 * documentation, and that the name of Alan Hourihane not be used in 9 * advertising or publicity pertaining to distribution of the software without 10 * specific, written prior permission. Alan Hourihane makes no representations 11 * about the suitability of this software for any purpose. It is provided 12 * "as is" without express or implied warranty. 13 * 14 * ALAN HOURIHANE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 15 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO 16 * EVENT SHALL ALAN HOURIHANE BE LIABLE FOR ANY SPECIAL, INDIRECT OR 17 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 18 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 19 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 20 * PERFORMANCE OF THIS SOFTWARE. 21 * 22 * Author: Alan Hourihane, alanh@fairlite.demon.co.uk 23 */ 24 25#ifdef HAVE_CONFIG_H 26#include "config.h" 27#endif 28 29/* All drivers should typically include these */ 30#include "xf86.h" 31#include "xf86_OSproc.h" 32 33/* Drivers that need to access the PCI config space directly need this */ 34#include "xf86Pci.h" 35 36#include "compiler.h" 37#include "trident.h" 38#include "trident_regs.h" 39 40int TVGA8900SetRead(ScreenPtr pScreen, int bank) 41{ 42 ScrnInfoPtr pScrn; 43 TRIDENTPtr pTrident; 44 pScrn = xf86ScreenToScrn(pScreen); 45 pTrident = TRIDENTPTR(pScrn); 46 OUTW(0x3c4, 0xC000 | (((bank & 0x3f) ^ 0x02)<<8)|0x0E); 47 return 0; 48} 49int TGUISetRead(ScreenPtr pScreen, int bank) 50{ 51 ScrnInfoPtr pScrn; 52 TRIDENTPtr pTrident; 53 pScrn = xf86ScreenToScrn(pScreen); 54 pTrident = TRIDENTPTR(pScrn); 55 OUTB(0x3d9, bank & 0xff); 56 return 0; 57} 58int TVGA8900SetWrite(ScreenPtr pScreen, int bank) 59{ 60 ScrnInfoPtr pScrn; 61 TRIDENTPtr pTrident; 62 pScrn = xf86ScreenToScrn(pScreen); 63 pTrident = TRIDENTPTR(pScrn); 64 OUTW(0x3c4, 0xC000 | (((bank & 0x3f) ^ 0x02)<<8)|0x0E); 65 return 0; 66} 67int TGUISetWrite(ScreenPtr pScreen, int bank) 68{ 69 ScrnInfoPtr pScrn; 70 TRIDENTPtr pTrident; 71 pScrn = xf86ScreenToScrn(pScreen); 72 pTrident = TRIDENTPTR(pScrn); 73 OUTB(0x3d8, bank & 0xff); 74 return 0; 75} 76int TVGA8900SetReadWrite(ScreenPtr pScreen, int bank) 77{ 78 ScrnInfoPtr pScrn; 79 TRIDENTPtr pTrident; 80 pScrn = xf86ScreenToScrn(pScreen); 81 pTrident = TRIDENTPTR(pScrn); 82 OUTW(0x3c4, 0xC000 | (((bank & 0x3f) ^ 0x02)<<8)|0x0E); 83 return 0; 84} 85int TGUISetReadWrite(ScreenPtr pScreen, int bank) 86{ 87 ScrnInfoPtr pScrn; 88 TRIDENTPtr pTrident; 89 pScrn = xf86ScreenToScrn(pScreen); 90 pTrident = TRIDENTPTR(pScrn); 91 OUTB(0x3d8, bank & 0xff); 92 OUTB(0x3d9, bank & 0xff); 93 return 0; 94} 95