1b9325ec5Stsutsui
2b9325ec5Stsutsui/* $Xorg: sun.h,v 1.3 2000/08/17 19:48:29 cpqbld Exp $ */
3b9325ec5Stsutsui
4b9325ec5Stsutsui/*-
5b9325ec5Stsutsui * Copyright (c) 1987 by the Regents of the University of California
6b9325ec5Stsutsui *
7b9325ec5Stsutsui * Permission to use, copy, modify, and distribute this
8b9325ec5Stsutsui * software and its documentation for any purpose and without
9b9325ec5Stsutsui * fee is hereby granted, provided that the above copyright
10b9325ec5Stsutsui * notice appear in all copies.  The University of California
11b9325ec5Stsutsui * makes no representations about the suitability of this
12b9325ec5Stsutsui * software for any purpose.  It is provided "as is" without
13b9325ec5Stsutsui * express or implied warranty.
14b9325ec5Stsutsui */
15b9325ec5Stsutsui
16b9325ec5Stsutsui/* $XFree86: xc/programs/Xserver/hw/sun/sun.h,v 3.13 2003/11/17 22:20:36 dawes Exp $ */
17b9325ec5Stsutsui
18b9325ec5Stsutsui#ifndef _SUN_H_
19b9325ec5Stsutsui#define _SUN_H_
20b9325ec5Stsutsui
21b9325ec5Stsutsui/* X headers */
22b9325ec5Stsutsui#include <X11/Xos.h>
23b9325ec5Stsutsui#undef index /* don't mangle silly Sun structure member names */
24b9325ec5Stsutsui#include <X11/X.h>
25b9325ec5Stsutsui#include <X11/Xproto.h>
26b9325ec5Stsutsui
27b9325ec5Stsutsui/* general system headers */
28b9325ec5Stsutsui#ifndef NOSTDHDRS
29b9325ec5Stsutsui# include <stdlib.h>
30b9325ec5Stsutsui#else
31b9325ec5Stsutsui# include <malloc.h>
32b9325ec5Stsutsuiextern char *getenv();
33b9325ec5Stsutsui#endif
34b9325ec5Stsutsui
35b9325ec5Stsutsui/* system headers common to both SunOS and Solaris */
36b9325ec5Stsutsui#include <sys/param.h>
37b9325ec5Stsutsui#include <sys/file.h>
38b9325ec5Stsutsui#include <sys/filio.h>
39b9325ec5Stsutsui#include <sys/ioctl.h>
40b9325ec5Stsutsui#include <sys/resource.h>
41b9325ec5Stsutsui
42b9325ec5Stsutsui#ifdef SVR4
43b9325ec5Stsutsui# ifdef X_POSIX_C_SOURCE
44b9325ec5Stsutsui#  define _POSIX_C_SOURCE X_POSIX_C_SOURCE
45b9325ec5Stsutsui#  include <signal.h>
46b9325ec5Stsutsui#  undef _POSIX_C_SOURCE
47b9325ec5Stsutsui# else
48b9325ec5Stsutsui#  define _POSIX_SOURCE
49b9325ec5Stsutsui#  include <signal.h>
50b9325ec5Stsutsui#  undef _POSIX_SOURCE
51b9325ec5Stsutsui# endif
52b9325ec5Stsutsui#endif
53b9325ec5Stsutsui
54b9325ec5Stsutsui#include <fcntl.h>
55b9325ec5Stsutsui
56b9325ec5Stsutsui#ifndef __bsdi__
57b9325ec5Stsutsui# ifndef CSRG_BASED
58b9325ec5Stsutsui#  ifndef i386
59b9325ec5Stsutsui#   include <poll.h>
60b9325ec5Stsutsui#  else
61b9325ec5Stsutsui#   include <sys/poll.h>
62b9325ec5Stsutsui#  endif
63b9325ec5Stsutsui# endif
64b9325ec5Stsutsui#else
65b9325ec5Stsutsui# include <unistd.h>
66b9325ec5Stsutsui#endif
67b9325ec5Stsutsui
68b9325ec5Stsutsui#include <errno.h>
69b9325ec5Stsutsui#include <memory.h>
70b9325ec5Stsutsui#include <signal.h>
71b9325ec5Stsutsui
72b9325ec5Stsutsui
73b9325ec5Stsutsui/*
74b9325ec5Stsutsui * Sun specific headers Sun moved in Solaris, and are different for NetBSD.
75b9325ec5Stsutsui *
76b9325ec5Stsutsui * Even if only needed by one source file, I have put them here
77b9325ec5Stsutsui * to simplify finding them...
78b9325ec5Stsutsui */
79b9325ec5Stsutsui#ifdef SVR4
80b9325ec5Stsutsui# include <sys/fbio.h>
81b9325ec5Stsutsui# include <sys/kbd.h>
82b9325ec5Stsutsui# include <sys/kbio.h>
83b9325ec5Stsutsui# include <sys/msio.h>
84b9325ec5Stsutsui# include <sys/vuid_event.h>
85b9325ec5Stsutsui# include <sys/memreg.h>
86b9325ec5Stsutsui# include <stropts.h>
87b9325ec5Stsutsui# define usleep(usec) poll((struct pollfd *) 0, (size_t) 0, usec / 1000)
88b9325ec5Stsutsui#else
89b9325ec5Stsutsui# ifndef CSRG_BASED
90b9325ec5Stsutsui#  include <sun/fbio.h>
91b9325ec5Stsutsui#  include <sundev/kbd.h>
92b9325ec5Stsutsui#  include <sundev/kbio.h>
93b9325ec5Stsutsui#  include <sundev/msio.h>
94b9325ec5Stsutsui#  include <sundev/vuid_event.h>
95b9325ec5Stsutsui#  include <pixrect/pixrect.h>
96b9325ec5Stsutsui#  include <pixrect/memreg.h>
97b9325ec5Stsutsuiextern int ioctl();
98b9325ec5Stsutsuiextern int getrlimit();
99b9325ec5Stsutsuiextern int setrlimit();
100b9325ec5Stsutsuiextern int getpagesize();
101b9325ec5Stsutsui# else
102b9325ec5Stsutsui#  if defined(CSRG_BASED) && !defined(__bsdi__) && !defined(__NetBSD__)
103b9325ec5Stsutsui#   include <machine/fbio.h>
104b9325ec5Stsutsui#   include <machine/kbd.h>
105b9325ec5Stsutsui#   include <machine/kbio.h>
106b9325ec5Stsutsui#   include <machine/vuid_event.h>
107b9325ec5Stsutsui#  endif
108b9325ec5Stsutsui#  ifdef __bsdi__
109b9325ec5Stsutsui#   include <sys/fbio.h>
110b9325ec5Stsutsui#   include </sys/sparc/dev/kbd.h>
111b9325ec5Stsutsui#   include </sys/sparc/dev/kbio.h>
112b9325ec5Stsutsui#   include </sys/sparc/dev/vuid_event.h>
113b9325ec5Stsutsui#  endif
114b9325ec5Stsutsui#  ifdef __NetBSD__
115b9325ec5Stsutsui#   include <dev/sun/fbio.h>
116b9325ec5Stsutsui#   include <machine/kbd.h>
117b9325ec5Stsutsui#   include <dev/sun/kbio.h>	   /* also <sparc/kbio.h> -wsr */
118b9325ec5Stsutsui#   include <dev/sun/vuid_event.h> /* also <sparc/vud_event.h> -wsr */
119b9325ec5Stsutsui#  endif
120b9325ec5Stsutsui# endif
121b9325ec5Stsutsui#endif
122b9325ec5Stsutsui
123b9325ec5Stsutsui/*
124b9325ec5Stsutsui * Sun doesn't see fit to add the TCX to <sys/fbio.h>
125b9325ec5Stsutsui */
126b9325ec5Stsutsui#ifndef SVR4
127b9325ec5Stsutsui/* On SunOS 4.1.x the TCX pretends to be a CG3 */
128b9325ec5Stsutsui#define XFBTYPE_LASTPLUSONE	FBTYPE_LASTPLUSONE
129b9325ec5Stsutsui#else
130b9325ec5Stsutsui#define XFBTYPE_TCX		21
131b9325ec5Stsutsui#define XFBTYPE_LASTPLUSONE	22
132b9325ec5Stsutsui#endif
133b9325ec5Stsutsui
134b9325ec5Stsutsui#include <sys/time.h>
135b9325ec5Stsutsui
136b9325ec5Stsutsui/*
137b9325ec5Stsutsui * Server specific headers
138b9325ec5Stsutsui */
139b9325ec5Stsutsui#include "misc.h"
140b9325ec5Stsutsui#undef abs /* don't munge function prototypes in headers, sigh */
141b9325ec5Stsutsui#include "scrnintstr.h"
142b9325ec5Stsutsui#ifdef NEED_EVENTS
143b9325ec5Stsutsui# include "inputstr.h"
144b9325ec5Stsutsui#endif
145b9325ec5Stsutsui#include "input.h"
146b9325ec5Stsutsui#include "colormapst.h"
147b9325ec5Stsutsui#include "colormap.h"
148b9325ec5Stsutsui#include "cursorstr.h"
149b9325ec5Stsutsui#include "cursor.h"
150b9325ec5Stsutsui#include "dixstruct.h"
151b9325ec5Stsutsui#include "dix.h"
152b9325ec5Stsutsui#include "opaque.h"
153b9325ec5Stsutsui#include "resource.h"
154b9325ec5Stsutsui#include "servermd.h"
155b9325ec5Stsutsui#include "windowstr.h"
156b9325ec5Stsutsui#include "mipointer.h"
157b9325ec5Stsutsui
158b9325ec5Stsutsui/*
159b9325ec5Stsutsui * ddx specific headers
160b9325ec5Stsutsui */
161b9325ec5Stsutsui#ifndef PSZ
162b9325ec5Stsutsui#define PSZ 8
163b9325ec5Stsutsui#endif
164b9325ec5Stsutsui
165b9325ec5Stsutsuiextern int monitorResolution;
166b9325ec5Stsutsui
167b9325ec5Stsutsui
168b9325ec5Stsutsui/* Frame buffer devices */
169b9325ec5Stsutsui#ifdef SVR4
170b9325ec5Stsutsui# define CGTWO0DEV	"/dev/fbs/cgtwo0"
171b9325ec5Stsutsui# define CGTWO1DEV	"/dev/fbs/cgtwo1"
172b9325ec5Stsutsui# define CGTWO2DEV	"/dev/fbs/cgtwo2"
173b9325ec5Stsutsui# define CGTWO3DEV	"/dev/fbs/cgtwo3"
174b9325ec5Stsutsui# define CGTHREE0DEV	"/dev/fbs/cgthree0"
175b9325ec5Stsutsui# define CGTHREE1DEV	"/dev/fbs/cgthree1"
176b9325ec5Stsutsui# define CGTHREE2DEV	"/dev/fbs/cgthree2"
177b9325ec5Stsutsui# define CGTHREE3DEV	"/dev/fbs/cgthree3"
178b9325ec5Stsutsui# define CGFOUR0DEV	"/dev/fbs/cgfour0"
179b9325ec5Stsutsui# define CGSIX0DEV	"/dev/fbs/cgsix0"
180b9325ec5Stsutsui# define CGSIX1DEV	"/dev/fbs/cgsix1"
181b9325ec5Stsutsui# define CGSIX2DEV	"/dev/fbs/cgsix2"
182b9325ec5Stsutsui# define CGSIX3DEV	"/dev/fbs/cgsix3"
183b9325ec5Stsutsui# define BWTWO0DEV	"/dev/fbs/bwtwo0"
184b9325ec5Stsutsui# define BWTWO1DEV	"/dev/fbs/bwtwo1"
185b9325ec5Stsutsui# define BWTWO2DEV	"/dev/fbs/bwtwo2"
186b9325ec5Stsutsui# define BWTWO3DEV	"/dev/fbs/bwtwo3"
187b9325ec5Stsutsui# define CGEIGHT0DEV	"/dev/fbs/cgeight0"
188b9325ec5Stsutsui# define TCX0DEV	"/dev/fbs/tcx0"
189b9325ec5Stsutsui#else
190b9325ec5Stsutsui# define CGTWO0DEV	"/dev/cgtwo0"
191b9325ec5Stsutsui# define CGTWO1DEV	"/dev/cgtwo1"
192b9325ec5Stsutsui# define CGTWO2DEV	"/dev/cgtwo2"
193b9325ec5Stsutsui# define CGTWO3DEV	"/dev/cgtwo3"
194b9325ec5Stsutsui# define CGTHREE0DEV	"/dev/cgthree0"
195b9325ec5Stsutsui# define CGTHREE1DEV	"/dev/cgthree1"
196b9325ec5Stsutsui# define CGTHREE2DEV	"/dev/cgthree2"
197b9325ec5Stsutsui# define CGTHREE3DEV	"/dev/cgthree3"
198b9325ec5Stsutsui# define CGFOUR0DEV	"/dev/cgfour0"
199b9325ec5Stsutsui# define CGSIX0DEV	"/dev/cgsix0"
200b9325ec5Stsutsui# define CGSIX1DEV	"/dev/cgsix1"
201b9325ec5Stsutsui# define CGSIX2DEV	"/dev/cgsix2"
202b9325ec5Stsutsui# define CGSIX3DEV	"/dev/cgsix3"
203b9325ec5Stsutsui# define BWTWO0DEV	"/dev/bwtwo0"
204b9325ec5Stsutsui# define BWTWO1DEV	"/dev/bwtwo1"
205b9325ec5Stsutsui# define BWTWO2DEV	"/dev/bwtwo2"
206b9325ec5Stsutsui# define BWTWO3DEV	"/dev/bwtwo3"
207b9325ec5Stsutsui# define CGEIGHT0DEV	"/dev/cgeight0"
208b9325ec5Stsutsui#endif
209b9325ec5Stsutsui
210b9325ec5Stsutsui/*
211b9325ec5Stsutsui * MAXEVENTS is the maximum number of events the mouse and keyboard functions
212b9325ec5Stsutsui * will read on a given call to their GetEvents vectors.
213b9325ec5Stsutsui */
214b9325ec5Stsutsui#define MAXEVENTS 	32
215b9325ec5Stsutsui
216b9325ec5Stsutsui/*
217b9325ec5Stsutsui * Data private to any sun keyboard.
218b9325ec5Stsutsui */
219b9325ec5Stsutsuitypedef struct {
220b9325ec5Stsutsui    int		fd;
221b9325ec5Stsutsui    int		type;		/* Type of keyboard */
222b9325ec5Stsutsui    int		layout;		/* The layout of the keyboard */
223b9325ec5Stsutsui    int		click;		/* kbd click save state */
224b9325ec5Stsutsui    Leds	leds;		/* last known LED state */
225b9325ec5Stsutsui} sunKbdPrivRec, *sunKbdPrivPtr;
226b9325ec5Stsutsui
227b9325ec5Stsutsuiextern sunKbdPrivRec sunKbdPriv;
228b9325ec5Stsutsui
229b9325ec5Stsutsui/*
230b9325ec5Stsutsui * Data private to any sun pointer device.
231b9325ec5Stsutsui */
232b9325ec5Stsutsuitypedef struct {
233b9325ec5Stsutsui    int		fd;
234b9325ec5Stsutsui    int		bmask;		/* last known button state */
235b9325ec5Stsutsui} sunPtrPrivRec, *sunPtrPrivPtr;
236b9325ec5Stsutsui
237b9325ec5Stsutsuiextern sunPtrPrivRec sunPtrPriv;
238b9325ec5Stsutsui
239b9325ec5Stsutsuitypedef struct {
240b9325ec5Stsutsui    BYTE	key;
241b9325ec5Stsutsui    CARD8	modifiers;
242b9325ec5Stsutsui} SunModmapRec;
243b9325ec5Stsutsui
244b9325ec5Stsutsuitypedef struct {
245b9325ec5Stsutsui    int		    width, height;
246b9325ec5Stsutsui    Bool	    has_cursor;
247b9325ec5Stsutsui    CursorPtr	    pCursor;		/* current cursor */
248b9325ec5Stsutsui} sunCursorRec, *sunCursorPtr;
249b9325ec5Stsutsui
250cb17d216Stsutsui#define NCMAP	256
251cb17d216Stsutsuitypedef struct {
252cb17d216Stsutsui    u_char	    origRed[NCMAP];
253cb17d216Stsutsui    u_char	    origGreen[NCMAP];
254cb17d216Stsutsui    u_char	    origBlue[NCMAP];
255cb17d216Stsutsui} sunCmapRec, *sunCmapPtr;
256cb17d216Stsutsui
257b9325ec5Stsutsuitypedef struct {
258b9325ec5Stsutsui    ColormapPtr	    installedMap;
259b9325ec5Stsutsui    CloseScreenProcPtr CloseScreen;
260b9325ec5Stsutsui    void	    (*UpdateColormap)(ScreenPtr, int, int, u_char *, u_char *, u_char *);
261b9325ec5Stsutsui    void	    (*GetColormap)(ScreenPtr, int, int, u_char *, u_char *, u_char *);
262cb17d216Stsutsui    Bool	    origColormapValid;
263cb17d216Stsutsui    sunCmapRec	    origColormap;
264cb17d216Stsutsui    void	    (*RestoreColormap)(ScreenPtr);
265b9325ec5Stsutsui    sunCursorRec    hardwareCursor;
266b9325ec5Stsutsui    Bool	    hasHardwareCursor;
267b9325ec5Stsutsui} sunScreenRec, *sunScreenPtr;
268b9325ec5Stsutsui
269b9325ec5Stsutsuiextern DevPrivateKeyRec sunScreenPrivateKeyRec;
270b9325ec5Stsutsui#define sunScreenPrivateKey (&sunScreenPrivateKeyRec)
271b9325ec5Stsutsui#define sunSetScreenPrivate(pScreen, v) \
272b9325ec5Stsutsui    dixSetPrivate(&(pScreen)->devPrivates, sunScreenPrivateKey, (v))
273b9325ec5Stsutsui#define sunGetScreenPrivate(pScreen) ((sunScreenRec *) \
274b9325ec5Stsutsui    dixLookupPrivate(&(pScreen)->devPrivates, sunScreenPrivateKey))
275b9325ec5Stsutsui
276b9325ec5Stsutsuitypedef struct {
277b9325ec5Stsutsui    unsigned char*  fb;		/* Frame buffer itself */
278b9325ec5Stsutsui    int		    fd;		/* frame buffer for ioctl()s, */
279b9325ec5Stsutsui    struct fbtype   info;	/* Frame buffer characteristics */
280b9325ec5Stsutsui    void	    (*EnterLeave)(ScreenPtr, int);/* screen switch */
281b9325ec5Stsutsui    unsigned char*  fbPriv;	/* fbattr stuff, for the real type */
282b9325ec5Stsutsui} fbFd;
283b9325ec5Stsutsui
284b9325ec5Stsutsuitypedef Bool (*sunFbInitProc)(
285b9325ec5Stsutsui    int /* screen */,
286b9325ec5Stsutsui    ScreenPtr /* pScreen */,
287b9325ec5Stsutsui    int /* argc */,
288b9325ec5Stsutsui    char** /* argv */
289b9325ec5Stsutsui);
290b9325ec5Stsutsui
291b9325ec5Stsutsuitypedef struct {
292b9325ec5Stsutsui    sunFbInitProc	init;	/* init procedure for this fb */
293b9325ec5Stsutsui    const char		*name;	/* /usr/include/fbio names */
294b9325ec5Stsutsui} sunFbDataRec;
295b9325ec5Stsutsui
296b9325ec5Stsutsui/* sunInit.c */
297b9325ec5Stsutsuiextern EventList	*sunEvents;
298b9325ec5Stsutsuiextern sunFbDataRec	sunFbData[];
299b9325ec5Stsutsuiextern fbFd		sunFbs[];
300b9325ec5Stsutsuiextern Bool		sunSwapLkeys;
301e199ea96Stsutsuiextern Bool		sunForceMono;
302e199ea96Stsutsuiextern Bool		sunDebug;
30385d6961bStsutsuiextern char		*sunDeviceList;
304b9325ec5Stsutsuiextern Bool		sunFlipPixels;
305b9325ec5Stsutsuiextern Bool		sunFbInfo;
306b9325ec5Stsutsuiextern Bool		sunCG4Frob;
307b9325ec5Stsutsuiextern Bool		sunNoGX;
308b9325ec5Stsutsui
309b9325ec5Stsutsui/* sunKeyMap.c */
310b9325ec5Stsutsuiextern KeySymsRec	sunKeySyms[];
311b9325ec5Stsutsuiextern const int	sunMaxLayout;
312b9325ec5Stsutsuiextern KeySym		*sunType4KeyMaps[];
313b9325ec5Stsutsui
314b9325ec5Stsutsui/* sunKbd.c */
315b9325ec5Stsutsuiextern long		sunAutoRepeatInitiate;
316b9325ec5Stsutsuiextern long		sunAutoRepeatDelay;
317b9325ec5Stsutsuiextern DeviceIntPtr	sunKeyboardDevice;
318b9325ec5Stsutsui
319b9325ec5Stsutsui/* sunMouse.c */
320b9325ec5Stsutsuiextern Bool		sunActiveZaphod;
321b9325ec5Stsutsuiextern DeviceIntPtr	sunPointerDevice;
322b9325ec5Stsutsuiextern miPointerScreenFuncRec sunPointerScreenFuncs;
323b9325ec5Stsutsui
324b9325ec5Stsutsui/* sunFbs.c */
325b9325ec5Stsutsuiextern int		sunScreenIndex;
326b9325ec5Stsutsui
327b9325ec5Stsutsui/* sunCursor.c */
328b9325ec5Stsutsuiextern Bool sunCursorInitialize(ScreenPtr);
329b9325ec5Stsutsuiextern void sunDisableCursor(ScreenPtr);
330b9325ec5Stsutsui
331b9325ec5Stsutsui/* sunInit.c */
332b9325ec5Stsutsuiextern void sunNonBlockConsoleOff(
333b9325ec5Stsutsui#if defined(SVR4) || defined(CSRG_BASED)
334b9325ec5Stsutsui    void
335b9325ec5Stsutsui#else
336b9325ec5Stsutsui    char* /* arg */
337b9325ec5Stsutsui#endif
338b9325ec5Stsutsui);
339b9325ec5Stsutsui
340b9325ec5Stsutsui/* sunIo.c */
341b9325ec5Stsutsuiextern void sunEnqueueEvents(void);
342b9325ec5Stsutsui
343b9325ec5Stsutsui/* sunGX.c */
344b9325ec5Stsutsuiextern int sunGXInit(ScreenPtr, fbFd *);
345b9325ec5Stsutsui
346b9325ec5Stsutsui/* sunFbs.c */
347b9325ec5Stsutsuiextern Bool sunSaveScreen(ScreenPtr, int);
348b9325ec5Stsutsuiextern Bool sunScreenInit(ScreenPtr);
349b9325ec5Stsutsuiextern pointer sunMemoryMap(size_t, off_t, int);
350b9325ec5Stsutsuiextern Bool sunScreenAllocate(ScreenPtr);
351b9325ec5Stsutsuiextern Bool sunInitCommon(int, ScreenPtr, off_t,
352b9325ec5Stsutsui    Bool (* /* init1 */)(ScreenPtr, pointer, int, int, int, int, int, int),
353b9325ec5Stsutsui    void (* /* init2 */)(ScreenPtr),
354b9325ec5Stsutsui    Bool (* /* cr_cm */)(ScreenPtr),
355b9325ec5Stsutsui    Bool (* /* save */)(ScreenPtr, int),
356b9325ec5Stsutsui    int);
357b9325ec5Stsutsui
358b9325ec5Stsutsui/* sunKbd.c */
359b9325ec5Stsutsuiextern int sunChangeKbdTranslation(int, Bool);
360b9325ec5Stsutsuiextern Firm_event* sunKbdGetEvents(int, Bool, int *, Bool *);
361b9325ec5Stsutsuiextern void sunKbdEnqueueEvent(DeviceIntPtr, Firm_event *);
362b9325ec5Stsutsuiextern int sunKbdProc(DeviceIntPtr, int);
363b9325ec5Stsutsuiextern void sunKbdWait(void);
364b9325ec5Stsutsui
365b9325ec5Stsutsui/* sunMouse.c */
366b9325ec5Stsutsuiextern Firm_event* sunMouseGetEvents(int, Bool, int *, Bool *);
367b9325ec5Stsutsuiextern void sunMouseEnqueueEvent(DeviceIntPtr, Firm_event *);
368b9325ec5Stsutsuiextern int sunMouseProc(DeviceIntPtr, int);
369b9325ec5Stsutsui
370b9325ec5Stsutsui/* sunCfb.c */
371b9325ec5StsutsuiBool sunCG3Init(int, ScreenPtr, int, char **);
372b9325ec5StsutsuiBool sunTCXInit(int, ScreenPtr, int, char **);
373b9325ec5StsutsuiBool sunCG2Init(int, ScreenPtr, int, char **);
374b9325ec5StsutsuiBool sunCG4Init(int, ScreenPtr, int, char **);
375b9325ec5StsutsuiBool sunCG6Init(int, ScreenPtr, int, char **);
376b9325ec5Stsutsui
377b9325ec5Stsutsui/* sunCfb24.c */
378b9325ec5StsutsuiBool sunCG8Init(int, ScreenPtr, int, char **);
379b9325ec5Stsutsui
380b9325ec5Stsutsui/* sunMfb.c */
381b9325ec5StsutsuiBool sunBW2Init(int, ScreenPtr, int, char **);
382b9325ec5Stsutsui
383b9325ec5Stsutsui/* XXX */
384b9325ec5Stsutsuiextern void mfbDoBitblt(DrawablePtr, DrawablePtr, int, RegionPtr, DDXPointPtr);
385b9325ec5Stsutsui
386b9325ec5Stsutsui/*-
387b9325ec5Stsutsui * TVTOMILLI(tv)
388b9325ec5Stsutsui *	Given a struct timeval, convert its time into milliseconds...
389b9325ec5Stsutsui */
390b9325ec5Stsutsui#define TVTOMILLI(tv)	(((tv).tv_usec/1000)+((tv).tv_sec*1000))
391b9325ec5Stsutsui
392b9325ec5Stsutsuiextern Bool sunCfbSetupScreen(
393b9325ec5Stsutsui    ScreenPtr /* pScreen */,
394b9325ec5Stsutsui    pointer /* pbits */,	/* pointer to screen bitmap */
395b9325ec5Stsutsui    int /* xsize */,		/* in pixels */
396b9325ec5Stsutsui    int /* ysize */,
397b9325ec5Stsutsui    int /* dpix */,		/* dots per inch */
398b9325ec5Stsutsui    int /* dpiy */,		/* dots per inch */
399b9325ec5Stsutsui    int /* width */,		/* pixel width of frame buffer */
400b9325ec5Stsutsui    int	/* bpp */		/* bits per pixel of root */
401b9325ec5Stsutsui);
402b9325ec5Stsutsui
403b9325ec5Stsutsuiextern Bool sunCfbFinishScreenInit(
404b9325ec5Stsutsui    ScreenPtr /* pScreen */,
405b9325ec5Stsutsui    pointer /* pbits */,	/* pointer to screen bitmap */
406b9325ec5Stsutsui    int /* xsize */,		/* in pixels */
407b9325ec5Stsutsui    int /* ysize */,
408b9325ec5Stsutsui    int /* dpix */,		/* dots per inch */
409b9325ec5Stsutsui    int /* dpiy */,		/* dots per inch */
410b9325ec5Stsutsui    int /* width */,		/* pixel width of frame buffer */
411b9325ec5Stsutsui    int	/* bpp */		/* bits per pixel of root */
412b9325ec5Stsutsui);
413b9325ec5Stsutsui
414b9325ec5Stsutsuiextern Bool sunCfbScreenInit(
415b9325ec5Stsutsui    ScreenPtr /* pScreen */,
416b9325ec5Stsutsui    pointer /* pbits */,	/* pointer to screen bitmap */
417b9325ec5Stsutsui    int /* xsize */,		/* in pixels */
418b9325ec5Stsutsui    int /* ysize */,
419b9325ec5Stsutsui    int /* dpix */,		/* dots per inch */
420b9325ec5Stsutsui    int /* dpiy */,		/* dots per inch */
421b9325ec5Stsutsui    int /* width */,		/* pixel width of frame buffer */
422b9325ec5Stsutsui    int	/* bpp */		/* bits per pixel of root */
423b9325ec5Stsutsui);
424b9325ec5Stsutsui
425b9325ec5Stsutsuiextern void sunInstallColormap(
426b9325ec5Stsutsui    ColormapPtr /* cmap */
427b9325ec5Stsutsui);
428b9325ec5Stsutsui
429b9325ec5Stsutsuiextern void sunUninstallColormap(
430b9325ec5Stsutsui    ColormapPtr /* cmap */
431b9325ec5Stsutsui);
432b9325ec5Stsutsui
433b9325ec5Stsutsuiextern int sunListInstalledColormaps(
434b9325ec5Stsutsui    ScreenPtr /* pScreen */,
435b9325ec5Stsutsui    Colormap* /* pCmapList */
436b9325ec5Stsutsui);
437b9325ec5Stsutsui
438b9325ec5Stsutsui#endif
439