ark.h revision 3e51e026
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
22typedef 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
36typedef 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
81Bool 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