1 /*
2  * ark
3  */
4 
5 #ifndef _ARK_H
6 #define _ARK_H
7 
8 #include "xf86.h"
9 #include "xf86Pci.h"
10 #ifdef HAVE_XAA_H
11 #include "xaa.h"
12 #endif
13 #include "vgaHW.h"
14 
15 #include "compat-api.h"
16 #define PCI_VENDOR_ARK			0xEDD8
17 #define PCI_CHIP_1000PV			0xA091
18 #define PCI_CHIP_2000PV			0xA099
19 #define PCI_CHIP_2000MT			0xA0A1
20 #define PCI_CHIP_2000MI			0xA0A9
21 
22 typedef struct _ARKRegRec {
23 	unsigned char		sr10, sr11, sr12, sr13, sr14,
24 				sr15, sr16, sr17, sr18, sr20,
25 				sr21, sr22, sr23, sr24, sr25,
26 				sr26, sr27, sr28, sr29, sr2a,
27 				sr2b;
28 	unsigned char		sr1c, sr1d;
29 	unsigned char		cr40, cr41, cr42, cr44, cr46;
30 	unsigned char		dac_command;
31 	unsigned char		stg_17xx[3];
32 	unsigned char		gendac[6];
33 } ARKRegRec, *ARKRegPtr;
34 
35 
36 typedef struct _ARKRec {
37 #ifndef XSERVER_LIBPCIACCESS
38 	pciVideoPtr		PciInfo;
39 	PCITAG			PciTag;
40 #else
41 	struct pci_device       *PciInfo;
42 #endif
43 	EntityInfoPtr		pEnt;
44 	CARD32			IOAddress;
45 	pointer			FBBase;
46 	pointer			MMIOBase;
47 	unsigned long		videoRam;
48 	OptionInfoPtr		Options;
49 	unsigned int		Flags;
50 	Bool			NoAccel;
51 	CARD32			Bus;
52 #ifdef HAVE_XAA_H
53 	XAAInfoRecPtr		pXAA;
54 #endif
55 	int			Chipset, ChipRev;
56 	int			clock_mult;
57 	int			dac_width;
58 	int			multiplex_threshold;
59 	int			ramdac;
60 	ARKRegRec		SavedRegs;	/* original mode */
61 	ARKRegRec		ModeRegs;	/* current mode */
62 	Bool			(*CloseScreen)(CLOSE_SCREEN_ARGS_DECL);
63 } ARKRec, *ARKPtr;
64 
65 
66 #define ARKPTR(p)	((ARKPtr)((p)->driverPrivate))
67 
68 
69 #define DRIVER_NAME	"ark"
70 #define DRIVER_VERSION	PACKAGE_VERSION
71 #define VERSION_MAJOR	PACKAGE_VERSION_MAJOR
72 #define VERSION_MINOR	PACKAGE_VERSION_MINOR
73 #define PATCHLEVEL	PACKAGE_VERSION_PATCHLEVEL
74 #define ARK_VERSION	((VERSION_MAJOR << 24) | \
75 			 (VERSION_MINOR << 16) | \
76 			  PATCHLEVEL)
77 
78 #define	ZOOMDAC		0x404
79 #define ATT490		0x101
80 
81 Bool ARKAccelInit(ScreenPtr pScreen);
82 
83 #define rdinx(port, ind)	(outb((port), (ind)), inb((port) + 1))
84 #define wrinx(port, ind, val)						\
85     do {								\
86 	outb((port), (ind));  outb((port) + 1, (val));			\
87     } while(0)
88 #define modinx(port, ind, mask, bits)					\
89     do {								\
90 	unsigned char tmp;						\
91 	tmp = (rdinx((port), (ind)) & ~(mask)) | ((bits) & (mask));	\
92 	wrinx((port), (ind), tmp);					\
93     } while(0)
94 
95 #endif /* _ARK_H */
96