FreeBSD/Linux Kernel Cross Reference
sys/pc/screen.h
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)
Cache object: 5e05fc268e9e039db57f8b7a203d8e20
|