Subversion Repositories shark

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
54 pj 1
 
2
/* SVGAlib, Copyright 1993 Harm Hanemaayer */
3
/* VGAlib version 1.2 - (c) 1993 Tommy Frandsen */
4
/* partially copyrighted (C) 1993 by Hartmut Schirmer */
5
 
6
/* Internal definitions. */
7
 
8
#ifndef _LIBVGA_H
9
#define _LIBVGA_H
10
 
11
#include <string.h>
12
 
13
#include <stdint.h>
14
//typedef unsigned int CARD32;
15
//typedef unsigned short CARD16;
16
//typedef unsigned char CARD8;
17
 
18
/* --------------------- Macro definitions shared by library modules */
19
 
20
/* VGA index register ports */
21
#define CRT_IC  0x3D4           /* CRT Controller Index - color emulation */
22
#define CRT_IM  0x3B4           /* CRT Controller Index - mono emulation */
23
#define ATT_IW  0x3C0           /* Attribute Controller Index & Data Write Register */
24
#define GRA_I   0x3CE           /* Graphics Controller Index */
25
#define SEQ_I   0x3C4           /* Sequencer Index */
26
#define PEL_IW  0x3C8           /* PEL Write Index */
27
#define PEL_IR  0x3C7           /* PEL Read Index */
28
 
29
/* VGA data register ports */
30
#define CRT_DC  0x3D5           /* CRT Controller Data Register - color emulation */
31
#define CRT_DM  0x3B5           /* CRT Controller Data Register - mono emulation */
32
#define ATT_R   0x3C1           /* Attribute Controller Data Read Register */
33
#define GRA_D   0x3CF           /* Graphics Controller Data Register */
34
#define SEQ_D   0x3C5           /* Sequencer Data Register */
35
#define MIS_R   0x3CC           /* Misc Output Read Register */
36
#define MIS_W   0x3C2           /* Misc Output Write Register */
37
#define IS1_RC  0x3DA           /* Input Status Register 1 - color emulation */
38
#define IS1_RM  0x3BA           /* Input Status Register 1 - mono emulation */
39
#define PEL_D   0x3C9           /* PEL Data Register */
40
#define PEL_MSK 0x3C6           /* PEL mask register */
41
 
42
/* 8514/MACH regs we need outside of the mach32 driver.. */
43
#define PEL8514_D       0x2ED
44
#define PEL8514_IW      0x2EC
45
#define PEL8514_IR      0x2EB
46
#define PEL8514_MSK     0x2EA
47
 
48
/* EGA-specific registers */
49
 
50
#define GRA_E0  0x3CC           /* Graphics enable processor 0 */
51
#define GRA_E1  0x3CA           /* Graphics enable processor 1 */
52
 
53
/* standard VGA indexes max counts */
54
#define CRT_C   24              /* 24 CRT Controller Registers */
55
#define ATT_C   21              /* 21 Attribute Controller Registers */
56
#define GRA_C   9               /* 9  Graphics Controller Registers */
57
#define SEQ_C   5               /* 5  Sequencer Registers */
58
#define MIS_C   1               /* 1  Misc Output Register */
59
 
60
/* VGA registers saving indexes */
61
#define CRT     0               /* CRT Controller Registers start */
62
#define ATT     (CRT+CRT_C)     /* Attribute Controller Registers start */
63
#define GRA     (ATT+ATT_C)     /* Graphics Controller Registers start */
64
#define SEQ     (GRA+GRA_C)     /* Sequencer Registers */
65
#define MIS     (SEQ+SEQ_C)     /* General Registers */
66
#define EXT     (MIS+MIS_C)     /* SVGA Extended Registers */
67
 
68
/* Shorthands for chipset (driver) specific calls */
69
#define chipset_saveregs __svgalib_driverspecs->saveregs
70
#define chipset_setregs __svgalib_driverspecs->setregs
71
#define chipset_unlock __svgalib_driverspecs->unlock
72
#define chipset_test __svgalib_driverspecs->test
73
#define chipset_setpage __svgalib_driverspecs->__svgalib_setpage
74
#define chipset_setmode __svgalib_driverspecs->setmode
75
#define chipset_modeavailable __svgalib_driverspecs->modeavailable
76
#define chipset_getmodeinfo __svgalib_driverspecs->getmodeinfo
77
#define chipset_cursor __svgalib_driverspecs->cursor
78
 
79
/* Shorthands for internal variables and functions */
80
#define CI      __svgalib_cur_info
81
#define SM      __svgalib_sparse_mem
82
#define GM      __svgalib_graph_mem
83
#define CM      __svgalib_cur_mode
84
#define VMEM    __svgalib_videomemoryused
85
#define DREP    __svgalib_driver_report
86
#define CRITICAL __svgalib_critical
87
#define COL     __svgalib_cur_color
88
#define CHIPSET __svgalib_chipset
89
#define SCREENON __svgalib_screenon
90
#define MODEX   __svgalib_modeX
91
#define MODEFLAGS __svgalib_modeflags
92
#define infotable __svgalib_infotable
93
 
94
#define SVGADRV          2
95
#define STDVGADRV        1
96
#define STDVGAMODE(mode) (chipset_modeavailable(mode) == STDVGADRV)
97
#define SVGAMODE(mode)   (chipset_modeavailable(mode) == SVGADRV)
98
 
99
#define GRAPH_BASE 0xA0000
100
#define FONT_BASE  0xA0000
101
#define GRAPH_SIZE 0x10000
102
#define FONT_SIZE  (0x2000 * 4) /* 2.0.x kernel can use 2 512 char. fonts */
103
#define GPLANE16   G640x350x16
104
 
105
/* graphics mode information */
106
struct info {
107
    int xdim;
108
    int ydim;
109
    int colors;
110
    int xbytes;
111
    int bytesperpixel;
112
};
113
 
114
/* --------------------- Variable definitions shared by library modules */
115
 
116
#define BANKED_POINTER __svgalib_banked_pointer
117
#define LINEAR_POINTER __svgalib_linear_pointer
118
#define MMIO_POINTER __svgalib_mmio_pointer
119
 
120
extern int __svgalib_CRT_I;             /* current CRT index register address */
121
extern int __svgalib_CRT_D;             /* current CRT data register address */
122
extern int __svgalib_IS1_R;             /* current input status register address */
123
extern uint8_t * BANKED_POINTER, * LINEAR_POINTER;
124
extern uint8_t *MMIO_POINTER;
125
extern uint8_t *SPARSE_MMIO;
126
extern unsigned long __svgalib_banked_mem_base, __svgalib_banked_mem_size;
127
extern unsigned long __svgalib_mmio_base, __svgalib_mmio_size;
128
extern unsigned long __svgalib_linear_mem_base, __svgalib_linear_mem_size;
129
extern unsigned long __svgalib_mmio_base, __svgalib_mmio_size;
130
extern struct info CI;          /* current video parameters */
131
extern int COL;                 /* current color            */
132
extern int CM;                  /* current video mode       */
133
extern struct info infotable[];
134
extern int SCREENON;            /* screen visible if != 0 */
135
extern unsigned long __svgalib_graph_base;
136
extern unsigned char *GM;       /* graphics memory frame */
137
extern int MODEX;               /* TRUE after vga_setmodeX() */
138
extern int MODEFLAGS;           /* copy of flags of current modeinfo->flags */
139
 
140
extern int __svgalib_mem_fd;
141
extern int __svgalib_tty_fd;
142
extern int __svgalib_nosigint;
143
extern int __svgalib_mouse_fd;
144
extern int __svgalib_kbd_fd;
145
extern int __svgalib_runinbackground;
146
extern int __svgalib_vgacolormode;
147
 
148
extern unsigned char __svgalib_novga;
149
extern unsigned char __svgalib_textprog;
150
extern unsigned char __svgalib_secondary;
151
extern unsigned char __svgalib_emulatepage;
152
extern unsigned char __svgalib_novccontrol;
153
extern unsigned char __svgalib_m_ignore_dx;
154
extern unsigned char __svgalib_m_ignore_dy;
155
extern unsigned char __svgalib_m_ignore_dz;
156
 
157
extern char *__joystick_devicenames[4];
158
 
159
extern int __svgalib_cursor_status;
160
 
161
/* --------------------- Function definitions shared by library modules */
162
 
163
extern int (*__svgalib_inmisc)(void);
164
extern void (*__svgalib_outmisc)(int);
165
extern int (*__svgalib_incrtc)(int);
166
extern void (*__svgalib_outcrtc)(int,int);
167
extern int (*__svgalib_inseq)(int);
168
extern void (*__svgalib_outseq)(int,int);
169
extern int  (*__svgalib_ingra)(int);
170
extern void (*__svgalib_outgra)(int,int);
171
extern int  (*__svgalib_inatt)(int);
172
extern void (*__svgalib_outatt)(int,int);
173
extern void (*__svgalib_attscreen)(int);
174
extern void (*__svgalib_inpal)(int,int*,int*,int*);
175
extern void (*__svgalib_outpal)(int,int,int,int);
176
extern int (*__svgalib_inis1)(void);
177
 
178
extern int __svgalib_setregs(const unsigned char *regs);
179
extern int __svgalib_saveregs(unsigned char *regs);
180
extern void __svgalib_dumpregs(const unsigned char regs[], int n);
181
extern void __svgalib_get_perm(void);
182
extern int __svgalib_getchipset(int set_chipset);
183
extern int __svgalib_name2number(char *modename);
184
extern void __svgalib_delay(void);
185
extern int __svgalib_addmode(int xdim, int ydim, int cols, int xbytes, int bytespp);
186
extern void __svgalib_waitvtactive(void);
187
extern void __svgalib_open_devconsole(void);
188
extern void (*__svgalib_mouse_eventhandler) (int, int, int, int, int, int, int);
189
extern void (*__svgalib_keyboard_eventhandler) (int, int);
190
extern void __joystick_flip_vc(int acquire);
191
extern char *__svgalib_TextProg_argv[16]; /* should be enough */
192
extern char *__svgalib_TextProg;
193
extern int __svgalib_VESA_savebitmap;
194
extern int __svgalib_VESA_textmode;
195
extern unsigned char __svgalib_vesatext;
196
extern int __svgalib_mapkeyname(const char *keyname);
197
extern void __svgalib_mouse_update_keymap(void);
198
extern int __svgalib_vgacolor(void);
199
extern void __svgalib_cursor_restore(void);
200
extern void map_mmio(void);
201
extern void map_mem(void);
202
extern void map_linear(unsigned long, unsigned long);
203
extern void unmap_linear(unsigned long);
204
extern void __svgalib_emul_setpage(int);
205
 
206
#if 0 
207
/* remove this part ? */
208
extern void __svgalib_releasevt_signal(int n);
209
extern void __svgalib_acquirevt_signal(int n);
210
#endif
211
 
212
#define gr_readb(off)           (((volatile uint8_t *)GM)[(off)])
213
#define gr_readw(off)           (*(volatile uint16_t*)((GM)+(off)))
214
#define gr_readl(off)           (*(volatile uint32_t*)((GM)+(off)))
215
#define gr_writeb(v,off)        (GM[(off)] = (v))
216
#define gr_writew(v,off)        (*(uint16_t*)((GM)+(off)) = (v))
217
#define gr_writel(v,off)        (*(uint32_t*)((GM)+(off)) = (v))
218
 
219
extern void port_out(int value, int port);
220
extern void port_outw(int value, int port);
221
extern void port_outl(int value, int port);
222
extern void port_rep_outb(unsigned char* string, int length, int port);
223
 
224
extern int port_in(int port);
225
extern int port_inw(int port);
226
extern int port_inl(int port);
227
 
228
/* Note that the arguments of outb/w are reversed compared with the */
229
/* kernel sources. The XFree86 drivers also use this format. */
230
#undef inb
231
#undef inw
232
#undef inl
233
#undef outb
234
#undef outw
235
#undef outl
236
 
237
#define inb port_in
238
#define inw port_inw
239
#define inl port_inl
240
#define outb(port, value) port_out(value, port)
241
#define outw(port, value) port_outw(value, port)
242
#define outl(port, value) port_outl(value, port)
243
 
244
/* Background things */
245
 
246
extern unsigned char *__svgalib_give_graph_red(void);
247
extern unsigned char *__svgalib_give_graph_green(void);
248
extern unsigned char *__svgalib_give_graph_blue(void);
249
 
250
#define zero_sa_mask(maskptr) memset(maskptr, 0, sizeof(sigset_t))
251
 
252
#if 1
253
 
254
#define SVGALIB_ACQUIRE_SIG SIGUSR2
255
#define SVGALIB_RELEASE_SIG SIGUSR1
256
 
257
#else
258
 
259
#define SVGALIB_ACQUIRE_SIG SIGUNUSED
260
#define SVGALIB_RELEASE_SIG SIGPROF
261
 
262
#endif
263
 
264
//#define DEBUG_TRACE
265
 
266
#ifdef DEBUG_TRACE
267
#define DTP(x) fprintf x
268
#else
269
#define DTP(x)
270
#endif
271
 
272
#ifdef DEBUG
273
#define DPRINTF(args...) fprintf(stderr, args)
274
#else
275
#define DPRINTF(...)
276
#endif
277
 
278
#endif /* _LIBVGA_H */
279