1 /* 2 * VIDIX Direct Hardware Access (DHA). 3 * Copyright (C) 2002 Nick Kurshev 4 * 5 * 1996/10/27 - Robin Cutshaw (robin@xfree86.org) 6 * XFree86 3.3.3 implementation 7 * 1999 - Øyvind Aabling. 8 * Modified for GATOS/win/gfxdump. 9 * 10 * 2002 - library implementation by Nick Kurshev 11 * - dhahelper and some changes by Alex Beregszaszi 12 * 13 * supported OSes: SVR4, UnixWare, SCO, Solaris, 14 * FreeBSD, NetBSD, 386BSD, BSDI BSD/386, 15 * Linux, Mach/386, ISC 16 * DOS (WATCOM 9.5 compiler), Win9x (with mapdev.vxd) 17 * original location: www.linuxvideo.org/gatos 18 * 19 * This file is part of MPlayer. 20 * 21 * MPlayer is free software; you can redistribute it and/or modify 22 * it under the terms of the GNU General Public License as published by 23 * the Free Software Foundation; either version 2 of the License, or 24 * (at your option) any later version. 25 * 26 * MPlayer is distributed in the hope that it will be useful, 27 * but WITHOUT ANY WARRANTY; without even the implied warranty of 28 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 29 * GNU General Public License for more details. 30 * 31 * You should have received a copy of the GNU General Public License along 32 * with MPlayer; if not, write to the Free Software Foundation, Inc., 33 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 34 */ 35 36 #ifndef MPLAYER_DHA_H 37 #define MPLAYER_DHA_H 38 39 #ifndef DEV_SVGA 40 #define DEV_SVGA "/dev/svga" 41 #endif 42 43 #define MAX_DEV_PER_VENDOR_CFG1 64 44 #define MAX_PCI_DEVICES_PER_BUS 32 45 #define MAX_PCI_DEVICES 256 46 #define PCI_MULTIFUNC_DEV 0x80 47 #define PCI_COMMAND_IO 0x1 /* Enable response to I/O space */ 48 49 typedef struct pciinfo_s 50 { 51 int bus,card,func; /* PCI/AGP bus:card:func */ 52 unsigned short command; /* Device control register */ 53 unsigned short vendor,device; /* Card vendor+device ID */ 54 unsigned base0,base1,base2,baserom; /* Memory and I/O base addresses */ 55 // unsigned base0_limit, base1_limit, base2_limit, baserom_limit; 56 }pciinfo_t; 57 58 /* needed for mga_vid */ 59 int pci_config_read(unsigned char bus, unsigned char dev, unsigned char func, 60 unsigned char cmd, int len, unsigned long *val); 61 /* Fill array pci_list which must have size MAX_PCI_DEVICES 62 and return 0 if sucessful */ 63 int pci_scan(pciinfo_t *pci_list,unsigned *num_card); 64 65 66 /* Enables/disables accessing to IO space from application side. 67 Should return 0 if o'k or errno on error. */ 68 int enable_app_io(void); 69 int disable_app_io(void); 70 71 unsigned char INPORT8(unsigned idx); 72 unsigned short INPORT16(unsigned idx); 73 unsigned INPORT32(unsigned idx); 74 #define INPORT(idx) INPORT32(idx) 75 void OUTPORT8(unsigned idx, unsigned char val); 76 void OUTPORT16(unsigned idx, unsigned short val); 77 void OUTPORT32(unsigned idx, unsigned val); 78 #define OUTPORT(idx,val) OUTPORT32(idx,val) 79 80 void * map_phys_mem(unsigned long base, unsigned long size); 81 void unmap_phys_mem(void *ptr, unsigned long size); 82 83 /* These are the region types */ 84 #define MTRR_TYPE_UNCACHABLE 0 85 #define MTRR_TYPE_WRCOMB 1 86 #define MTRR_TYPE_WRTHROUGH 4 87 #define MTRR_TYPE_WRPROT 5 88 #define MTRR_TYPE_WRBACK 6 89 int mtrr_set_type(unsigned base, unsigned size, int type); 90 91 #endif /* MPLAYER_DHA_H */ 92