summaryrefslogtreecommitdiff
path: root/driver/xf86-video-cirrus/src/cir.h
blob: 78c1301cb7fa126665486d0df09071624fef18f0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
/* (c) Itai Nahshon */

#ifndef CIR_H
#define CIR_H

#include "xf86Cursor.h"
#ifdef HAVE_XAA_H
#include "xaa.h"
#endif
#ifdef USE_EXA
#include "exa.h"
#endif
#include "xf86i2c.h"
#include <string.h>
#include <stdlib.h>

#include "compat-api.h"
#include "cir_pcirename.h"

/* Card-specific driver information */
#define CIRPTR(p) ((CirPtr)((p)->driverPrivate))
struct lgRec;
struct alpRec;

typedef struct {
	ScrnInfoPtr		pScrn;
	CARD32			properties;
	pciVideoPtr		PciInfo;
	PCITAG			PciTag;
	unsigned long		PIOReg;
    union {
	struct lgRec		*lg;
	struct alpRec		*alp;
    } chip;
	EntityInfoPtr		pEnt;
	int			Chipset;
	int			ChipRev;
	int			Rounding;
	int			BppShift;
	Bool			HasFBitBlt;
	CARD32			IOAddress;
	CARD32			FbAddress;
	void *			IOBase;
	void *			FbBase;
	long			FbMapSize;
	long			IoMapSize;
	int			MinClock;
	int			MaxClock;
	Bool			NoAccel;
	Bool			HWCursor;
	Bool			UseMMIO;
	Bool			UseEXA;
#ifdef HAVE_XAA_H
	XAAInfoRecPtr		AccelInfoRec;
#endif
#ifdef USE_EXA
	ExaDriverPtr		ExaDriver;
#endif
	xf86CursorInfoPtr	CursorInfoRec;
	int			DGAnumModes;
	DGAModePtr		DGAModes;
	Bool			DGAactive;
	Bool			(*DGAModeInit)(ScrnInfoPtr, DisplayModePtr);
	int			DGAViewportStatus;
	I2CBusPtr		I2CPtr1;
	I2CBusPtr		I2CPtr2;
	CloseScreenProcPtr	CloseScreen;

	Bool			CursorIsSkewed;
	Bool			shadowFB;
	int			rotate;
	int			ShadowPitch;
	unsigned char *		ShadowPtr;
	void			(*PointerMoved)(SCRN_ARG_TYPE arg, int x, int y);
	int			pitch;

	unsigned char **	ScanlineColorExpandBuffers;
	void			(*InitAccel)(ScrnInfoPtr);
	int			offscreen_size;
	int			offscreen_offset;
	OptionInfoPtr		Options;
} CirRec, *CirPtr;

/* CirrusClk.c */
extern Bool
CirrusFindClock(int *rfreq, int max_clock, int *num_out, int *den_out);

/* cir_driver.c */
extern SymTabRec CIRChipsets[];
extern PciChipsets CIRPciChipsets[];

extern Bool CirMapMem(CirPtr pCir, int scrnIndex);
extern Bool CirUnmapMem(CirPtr pCir, int scrnIndex);
extern void cirProbeDDC(ScrnInfoPtr pScrn, int index);

/* cir_dga.c */
extern Bool CirDGAInit(ScreenPtr pScreen);

/* in cir_shadow.c */
void cirPointerMoved(SCRN_ARG_TYPE arg, int x, int y);
void cirRefreshArea(ScrnInfoPtr pScrn, int num, BoxPtr pbox);
void cirRefreshArea8(ScrnInfoPtr pScrn, int num, BoxPtr pbox);
void cirRefreshArea16(ScrnInfoPtr pScrn, int num, BoxPtr pbox);
void cirRefreshArea24(ScrnInfoPtr pScrn, int num, BoxPtr pbox);
void cirRefreshArea32(ScrnInfoPtr pScrn, int num, BoxPtr pbox);

/* properties */
#define HWCUR64 0x1
#define ACCEL_AUTOSTART 0x2

#endif /* CIR_H */