2 * VIDIX Direct Hardware Access (DHA).
3 * Copyright (C) 2002 Nick Kurshev
5 * This file is part of MPlayer.
7 * MPlayer is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
12 * MPlayer is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with MPlayer; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 * 1996/10/27 - Robin Cutshaw (robin@xfree86.org)
22 * XFree86 3.3.3 implementation
23 * 1999 - Øyvind Aabling.
24 * Modified for GATOS/win/gfxdump.
26 * 2002 - library implementation by Nick Kurshev
27 * - dhahelper and some changes by Alex Beregszaszi
29 * Supported O/S's: SVR4, UnixWare, SCO, Solaris,
30 * FreeBSD, NetBSD, 386BSD, BSDI BSD/386,
31 * Linux, Mach/386, ISC
32 * DOS (WATCOM 9.5 compiler), Win9x (with mapdev.vxd)
33 * Original location: www.linuxvideo.org/gatos
43 #define MAX_DEV_PER_VENDOR_CFG1 64
44 #define MAX_PCI_DEVICES_PER_BUS 32
45 #define MAX_PCI_DEVICES 64
46 #define PCI_MULTIFUNC_DEV 0x80
47 #define PCI_COMMAND_IO 0x1 /* Enable response to I/O space */
49 typedef struct pciinfo_s
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;
58 /* needed for mga_vid */
59 extern 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 extern int pci_scan(pciinfo_t
*pci_list
,unsigned *num_card
);
66 /* Enables/disables accessing to IO space from application side.
67 Should return 0 if o'k or errno on error. */
68 extern int enable_app_io( void );
69 extern int disable_app_io( void );
71 extern unsigned char INPORT8(unsigned idx
);
72 extern unsigned short INPORT16(unsigned idx
);
73 extern unsigned INPORT32(unsigned idx
);
74 #define INPORT(idx) INPORT32(idx)
75 extern void OUTPORT8(unsigned idx
,unsigned char val
);
76 extern void OUTPORT16(unsigned idx
,unsigned short val
);
77 extern void OUTPORT32(unsigned idx
,unsigned val
);
78 #define OUTPORT(idx,val) OUTPORT32(idx,val)
80 extern void * map_phys_mem(unsigned long base
, unsigned long size
);
81 extern void unmap_phys_mem(void *ptr
, unsigned long size
);
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 extern int mtrr_set_type(unsigned base
,unsigned size
,int type
);