Subversion Repositories planix.SVN

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
typedef struct Cursor Cursor;
2
typedef struct Cursorinfo Cursorinfo;
3
struct Cursorinfo {
4
	Cursor;
5
	Lock;
6
};
7
 
8
/* devmouse.c */
9
extern void mousetrack(int, int, int, int);
10
extern Point mousexy(void);
11
 
12
extern void mouseaccelerate(int);
13
extern int m3mouseputc(Queue*, int);
14
extern int m5mouseputc(Queue*, int);
15
extern int mouseputc(Queue*, int);
16
 
17
extern Cursorinfo cursor;
18
extern Cursor arrow;
19
 
20
/*
21
 * Generic VGA registers.
22
 */
23
enum {
24
	MiscW		= 0x03C2,	/* Miscellaneous Output (W) */
25
	MiscR		= 0x03CC,	/* Miscellaneous Output (R) */
26
	Status0		= 0x03C2,	/* Input status 0 (R) */
27
	Status1		= 0x03DA,	/* Input Status 1 (R) */
28
	FeatureR	= 0x03CA,	/* Feature Control (R) */
29
	FeatureW	= 0x03DA,	/* Feature Control (W) */
30
 
31
	Seqx		= 0x03C4,	/* Sequencer Index, Data at Seqx+1 */
32
	Crtx		= 0x03D4,	/* CRT Controller Index, Data at Crtx+1 */
33
	Grx		= 0x03CE,	/* Graphics Controller Index, Data at Grx+1 */
34
	Attrx		= 0x03C0,	/* Attribute Controller Index and Data */
35
 
36
	PaddrW		= 0x03C8,	/* Palette Address Register, write */
37
	Pdata		= 0x03C9,	/* Palette Data Register */
38
	Pixmask		= 0x03C6,	/* Pixel Mask Register */
39
	PaddrR		= 0x03C7,	/* Palette Address Register, read */
40
	Pstatus		= 0x03C7,	/* DAC Status (RO) */
41
 
42
	Pcolours	= 256,		/* Palette */
43
	Pred		= 0,
44
	Pgreen		= 1,
45
	Pblue		= 2,
46
 
47
	Pblack		= 0x00,
48
	Pwhite		= 0xFF,
49
};
50
 
51
#define VGAMEM()	0xA0000
52
#define vgai(port)		inb(port)
53
#define vgao(port, data)	outb(port, data)
54
 
55
extern int vgaxi(long, uchar);
56
extern int vgaxo(long, uchar, uchar);
57
 
58
/*
59
 */
60
typedef struct VGAdev VGAdev;
61
typedef struct VGAcur VGAcur;
62
typedef struct VGAscr VGAscr;
63
 
64
struct VGAdev {
65
	char*	name;
66
 
67
	void	(*enable)(VGAscr*);
68
	void	(*disable)(VGAscr*);
69
	void	(*page)(VGAscr*, int);
70
	void	(*linear)(VGAscr*, int, int);
71
	void	(*drawinit)(VGAscr*);
72
	int	(*fill)(VGAscr*, Rectangle, ulong);
73
	void	(*ovlctl)(VGAscr*, Chan*, void*, int);
74
	int	(*ovlwrite)(VGAscr*, void*, int, vlong);
75
	void (*flush)(VGAscr*, Rectangle);
76
};
77
 
78
struct VGAcur {
79
	char*	name;
80
 
81
	void	(*enable)(VGAscr*);
82
	void	(*disable)(VGAscr*);
83
	void	(*load)(VGAscr*, Cursor*);
84
	int	(*move)(VGAscr*, Point);
85
 
86
	int	doespanning;
87
};
88
 
89
/*
90
 */
91
struct VGAscr {
92
	Lock	devlock;
93
	VGAdev*	dev;
94
	Pcidev*	pci;
95
 
96
	VGAcur*	cur;
97
	ulong	storage;
98
	Cursor;
99
 
100
	int	useflush;
101
 
102
	ulong	paddr;		/* frame buffer */
103
	void*	vaddr;
104
	int		apsize;
105
 
106
	ulong	io;				/* device specific registers */
107
	ulong	*mmio;
108
 
109
	ulong	colormap[Pcolours][3];
110
	int	palettedepth;
111
 
112
	Memimage* gscreen;
113
	Memdata* gscreendata;
114
	Memsubfont* memdefont;
115
 
116
	int	(*fill)(VGAscr*, Rectangle, ulong);
117
	int	(*scroll)(VGAscr*, Rectangle, Rectangle);
118
	void	(*blank)(VGAscr*, int);
119
	ulong	id;	/* internal identifier for driver use */
120
	int isblank;
121
	int overlayinit;
122
};
123
 
124
extern VGAscr vgascreen[];
125
 
126
enum {
127
	Backgnd		= 0,	/* black */
128
};
129
 
130
/* mouse.c */
131
extern void mousectl(Cmdbuf*);
132
extern void mouseresize(void);
133
 
134
/* screen.c */
135
extern int		hwaccel;	/* use hw acceleration; default on */
136
extern int		hwblank;	/* use hw blanking; default on */
137
extern int		panning;	/* use virtual screen panning; default off */
138
extern void addvgaseg(char*, ulong, ulong);
139
extern uchar* attachscreen(Rectangle*, ulong*, int*, int*, int*);
140
extern void	flushmemscreen(Rectangle);
141
extern int	cursoron(int);
142
extern void	cursoroff(int);
143
extern void	setcursor(Cursor*);
144
extern int	screensize(int, int, int, ulong);
145
extern int	screenaperture(int, int);
146
extern Rectangle physgscreenr;	/* actual monitor size */
147
extern void	blankscreen(int);
148
 
149
extern VGAcur swcursor;
150
extern void swcursorinit(void);
151
extern void swcursorhide(void);
152
extern void swcursoravoid(Rectangle);
153
extern void swcursorunhide(void);
154
 
155
/* devdraw.c */
156
extern void	deletescreenimage(void);
157
extern void	resetscreenimage(void);
158
extern int		drawhasclients(void);
159
extern ulong	blanktime;
160
extern void	setscreenimageclipr(Rectangle);
161
extern void	drawflush(void);
162
extern int drawidletime(void);
163
extern QLock	drawlock;
164
 
165
/* vga.c */
166
extern void	vgascreenwin(VGAscr*);
167
extern void	vgaimageinit(ulong);
168
extern void	vgalinearpciid(VGAscr*, int, int);
169
extern void	vgalinearpci(VGAscr*);
170
extern void	vgalinearaddr(VGAscr*, ulong, int);
171
 
172
extern void	drawblankscreen(int);
173
extern void	vgablank(VGAscr*, int);
174
 
175
extern Lock	vgascreenlock;
176
 
177
#define ishwimage(i)	(vgascreen[0].gscreendata && (i)->data->bdata == vgascreen[0].gscreendata->bdata)