1 | /*
|
---|
2 | * Copyright 1990, 1991 by Thomas Roell, Dinkelscherben, Germany
|
---|
3 | * Copyright 1992 by David Dawes <[email protected]>
|
---|
4 | * Copyright 1992 by Jim Tsillas <[email protected]>
|
---|
5 | * Copyright 1992 by Rich Murphey <[email protected]>
|
---|
6 | * Copyright 1992 by Robert Baron <[email protected]>
|
---|
7 | * Copyright 1992 by Orest Zborowski <[email protected]>
|
---|
8 | * Copyright 1993 by Vrije Universiteit, The Netherlands
|
---|
9 | * Copyright 1993 by David Wexelblat <[email protected]>
|
---|
10 | * Copyright 1994, 1996 by Holger Veit <[email protected]>
|
---|
11 | * Copyright 1994-2003 by The XFree86 Project, Inc
|
---|
12 | *
|
---|
13 | * Permission to use, copy, modify, distribute, and sell this software and its
|
---|
14 | * documentation for any purpose is hereby granted without fee, provided that
|
---|
15 | * the above copyright notice appear in all copies and that both that
|
---|
16 | * copyright notice and this permission notice appear in supporting
|
---|
17 | * documentation, and that the names of the above listed copyright holders
|
---|
18 | * not be used in advertising or publicity pertaining to distribution of
|
---|
19 | * the software without specific, written prior permission. The above listed
|
---|
20 | * copyright holders make no representations about the suitability of this
|
---|
21 | * software for any purpose. It is provided "as is" without express or
|
---|
22 | * implied warranty.
|
---|
23 | *
|
---|
24 | * THE ABOVE LISTED COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD
|
---|
25 | * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
---|
26 | * AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDERS BE
|
---|
27 | * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
|
---|
28 | * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
|
---|
29 | * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
|
---|
30 | * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
---|
31 | *
|
---|
32 | */
|
---|
33 |
|
---|
34 | /*
|
---|
35 | * The ARM32 code here carries the following copyright:
|
---|
36 | *
|
---|
37 | * Copyright 1997
|
---|
38 | * Digital Equipment Corporation. All rights reserved.
|
---|
39 | * This software is furnished under license and may be used and copied only in
|
---|
40 | * accordance with the following terms and conditions. Subject to these
|
---|
41 | * conditions, you may download, copy, install, use, modify and distribute
|
---|
42 | * this software in source and/or binary form. No title or ownership is
|
---|
43 | * transferred hereby.
|
---|
44 | *
|
---|
45 | * 1) Any source code used, modified or distributed must reproduce and retain
|
---|
46 | * this copyright notice and list of conditions as they appear in the
|
---|
47 | * source file.
|
---|
48 | *
|
---|
49 | * 2) No right is granted to use any trade name, trademark, or logo of Digital
|
---|
50 | * Equipment Corporation. Neither the "Digital Equipment Corporation"
|
---|
51 | * name nor any trademark or logo of Digital Equipment Corporation may be
|
---|
52 | * used to endorse or promote products derived from this software without
|
---|
53 | * the prior written permission of Digital Equipment Corporation.
|
---|
54 | *
|
---|
55 | * 3) This software is provided "AS-IS" and any express or implied warranties,
|
---|
56 | * including but not limited to, any implied warranties of merchantability,
|
---|
57 | * fitness for a particular purpose, or non-infringement are disclaimed.
|
---|
58 | * In no event shall DIGITAL be liable for any damages whatsoever, and in
|
---|
59 | * particular, DIGITAL shall not be liable for special, indirect,
|
---|
60 | * consequential, or incidental damages or damages for lost profits, loss
|
---|
61 | * of revenue or loss of use, whether such damages arise in contract,
|
---|
62 | * negligence, tort, under statute, in equity, at law or otherwise, even
|
---|
63 | * if advised of the possibility of such damage.
|
---|
64 | *
|
---|
65 | */
|
---|
66 |
|
---|
67 | /* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/xf86_OSproc.h,v 3.56 2003/08/24 17:37:03 dawes Exp $ */
|
---|
68 |
|
---|
69 | #ifndef _XF86_OSPROC_H
|
---|
70 | #define _XF86_OSPROC_H
|
---|
71 |
|
---|
72 | #ifdef XF86_OS_PRIVS
|
---|
73 | #include "xf86Pci.h"
|
---|
74 | #endif
|
---|
75 |
|
---|
76 | /*
|
---|
77 | * The actual prototypes have been pulled into this seperate file so
|
---|
78 | * that they can can be used without pulling in all of the OS specific
|
---|
79 | * stuff like sys/stat.h, etc. This casues problem for loadable modules.
|
---|
80 | */
|
---|
81 |
|
---|
82 | /*
|
---|
83 | * Flags for xf86MapVidMem(). Multiple flags can be or'd together. The
|
---|
84 | * flags may be used as hints. For example it would be permissible to
|
---|
85 | * enable write combining for memory marked only for framebuffer use.
|
---|
86 | */
|
---|
87 |
|
---|
88 | #define VIDMEM_FRAMEBUFFER 0x01 /* memory for framebuffer use */
|
---|
89 | #define VIDMEM_MMIO 0x02 /* memory for I/O use */
|
---|
90 | #define VIDMEM_MMIO_32BIT 0x04 /* memory accesses >= 32bit */
|
---|
91 | #define VIDMEM_READSIDEEFFECT 0x08 /* reads can have side-effects */
|
---|
92 | #define VIDMEM_SPARSE 0x10 /* sparse mapping required
|
---|
93 | * assumed when VIDMEM_MMIO is
|
---|
94 | * set. May be used with
|
---|
95 | * VIDMEM_FRAMEBUFFER) */
|
---|
96 | #define VIDMEM_READONLY 0x20 /* read-only mapping
|
---|
97 | * used when reading BIOS images
|
---|
98 | * through xf86MapVidMem() */
|
---|
99 |
|
---|
100 | /*
|
---|
101 | * OS-independent modem state flags for xf86SetSerialModemState() and
|
---|
102 | * xf86GetSerialModemState().
|
---|
103 | */
|
---|
104 | #define XF86_M_LE 0x001 /* line enable */
|
---|
105 | #define XF86_M_DTR 0x002 /* data terminal ready */
|
---|
106 | #define XF86_M_RTS 0x004 /* request to send */
|
---|
107 | #define XF86_M_ST 0x008 /* secondary transmit */
|
---|
108 | #define XF86_M_SR 0x010 /* secondary receive */
|
---|
109 | #define XF86_M_CTS 0x020 /* clear to send */
|
---|
110 | #define XF86_M_CAR 0x040 /* carrier detect */
|
---|
111 | #define XF86_M_RNG 0x080 /* ring */
|
---|
112 | #define XF86_M_DSR 0x100 /* data set ready */
|
---|
113 |
|
---|
114 | #ifdef XF86_OS_PRIVS
|
---|
115 | extern void xf86WrapperInit(void);
|
---|
116 | #endif
|
---|
117 |
|
---|
118 | #ifndef NO_OSLIB_PROTOTYPES
|
---|
119 | /*
|
---|
120 | * This is to prevent re-entrancy to FatalError() when aborting.
|
---|
121 | * Anything that can be called as a result of AbortDDX() should use this
|
---|
122 | * instead of FatalError().
|
---|
123 | */
|
---|
124 |
|
---|
125 | #define xf86FatalError(a, b) \
|
---|
126 | if (dispatchException & DE_TERMINATE) { \
|
---|
127 | ErrorF(a, b); \
|
---|
128 | ErrorF("\n"); \
|
---|
129 | return; \
|
---|
130 | } else FatalError(a, b)
|
---|
131 |
|
---|
132 | /***************************************************************************/
|
---|
133 | /* Prototypes */
|
---|
134 | /***************************************************************************/
|
---|
135 |
|
---|
136 | #include <X11/Xfuncproto.h>
|
---|
137 | #include "opaque.h"
|
---|
138 |
|
---|
139 | #if defined(XQUEUE)
|
---|
140 | #include "input.h" /* for DeviceIntPtr */
|
---|
141 | #endif
|
---|
142 |
|
---|
143 | _XFUNCPROTOBEGIN
|
---|
144 |
|
---|
145 | /* public functions */
|
---|
146 | extern Bool xf86LinearVidMem(void);
|
---|
147 | extern Bool xf86CheckMTRR(int);
|
---|
148 | extern pointer xf86MapVidMem(int, int, unsigned long, unsigned long);
|
---|
149 | extern void xf86UnMapVidMem(int, pointer, unsigned long);
|
---|
150 | extern void xf86MapReadSideEffects(int, int, pointer, unsigned long);
|
---|
151 | extern int xf86ReadBIOS(unsigned long, unsigned long, unsigned char *, int);
|
---|
152 | extern Bool xf86EnableIO(void);
|
---|
153 | extern void xf86DisableIO(void);
|
---|
154 | extern Bool xf86DisableInterrupts(void);
|
---|
155 | extern void xf86EnableInterrupts(void);
|
---|
156 | extern void xf86SetTVOut(int);
|
---|
157 | extern void xf86SetRGBOut(void);
|
---|
158 | extern void xf86SoundKbdBell(int, int, int);
|
---|
159 | #if defined(QNX4)
|
---|
160 | #pragma aux xf86BusToMem modify [eax ebx ecx edx esi edi];
|
---|
161 | #pragma aux xf86MemToBus modify [eax ebx ecx edx esi edi];
|
---|
162 | #endif
|
---|
163 | extern void xf86BusToMem(unsigned char *, unsigned char *, int);
|
---|
164 | extern void xf86MemToBus(unsigned char *, unsigned char *, int);
|
---|
165 | extern void xf86IODelay(void);
|
---|
166 | extern void xf86UDelay(long usec);
|
---|
167 | extern void xf86SlowBcopy(unsigned char *, unsigned char *, int);
|
---|
168 | extern int xf86OpenSerial(pointer options);
|
---|
169 | extern int xf86SetSerial(int fd, pointer options);
|
---|
170 | extern int xf86SetSerialSpeed(int fd, int speed);
|
---|
171 | extern int xf86ReadSerial(int fd, void *buf, int count);
|
---|
172 | extern int xf86WriteSerial(int fd, const void *buf, int count);
|
---|
173 | extern int xf86CloseSerial(int fd);
|
---|
174 | extern int xf86FlushInput(int fd);
|
---|
175 | extern int xf86WaitForInput(int fd, int timeout);
|
---|
176 | extern int xf86SerialSendBreak(int fd, int duration);
|
---|
177 | extern int xf86SetSerialModemState(int fd, int state);
|
---|
178 | extern int xf86GetSerialModemState(int fd);
|
---|
179 | extern int xf86SerialModemSetBits(int fd, int bits);
|
---|
180 | extern int xf86SerialModemClearBits(int fd, int bits);
|
---|
181 | extern int xf86LoadKernelModule(const char *pathname);
|
---|
182 |
|
---|
183 | /* AGP GART interface */
|
---|
184 |
|
---|
185 | typedef struct _AgpInfo {
|
---|
186 | CARD32 bridgeId;
|
---|
187 | CARD32 agpMode;
|
---|
188 | unsigned long base;
|
---|
189 | unsigned long size;
|
---|
190 | unsigned long totalPages;
|
---|
191 | unsigned long systemPages;
|
---|
192 | unsigned long usedPages;
|
---|
193 | } AgpInfo, *AgpInfoPtr;
|
---|
194 |
|
---|
195 | extern Bool xf86AgpGARTSupported(void);
|
---|
196 | extern AgpInfoPtr xf86GetAGPInfo(int screenNum);
|
---|
197 | extern Bool xf86AcquireGART(int screenNum);
|
---|
198 | extern Bool xf86ReleaseGART(int screenNum);
|
---|
199 | extern int xf86AllocateGARTMemory(int screenNum, unsigned long size, int type,
|
---|
200 | unsigned long *physical);
|
---|
201 | extern Bool xf86DeallocateGARTMemory(int screenNum, int key);
|
---|
202 | extern Bool xf86BindGARTMemory(int screenNum, int key, unsigned long offset);
|
---|
203 | extern Bool xf86UnbindGARTMemory(int screenNum, int key);
|
---|
204 | extern Bool xf86EnableAGP(int screenNum, CARD32 mode);
|
---|
205 | extern Bool xf86GARTCloseScreen(int screenNum);
|
---|
206 |
|
---|
207 | /* These routines are in shared/sigio.c and are not loaded as part of the
|
---|
208 | module. These routines are small, and the code if very POSIX-signal (or
|
---|
209 | OS-signal) specific, so it seemed better to provide more complex
|
---|
210 | wrappers than to wrap each individual function called. */
|
---|
211 | extern int xf86InstallSIGIOHandler(int fd, void (*f)(int, void *), void *);
|
---|
212 | extern int xf86RemoveSIGIOHandler(int fd);
|
---|
213 | extern int xf86BlockSIGIO (void);
|
---|
214 | extern void xf86UnblockSIGIO (int);
|
---|
215 | #ifdef XFree86Server
|
---|
216 | extern void xf86AssertBlockedSIGIO (char *);
|
---|
217 | #endif
|
---|
218 | extern Bool xf86SIGIOSupported (void);
|
---|
219 |
|
---|
220 | #ifdef XF86_OS_PRIVS
|
---|
221 | typedef void (*PMClose)(void);
|
---|
222 | extern void xf86OpenConsole(void);
|
---|
223 | extern void xf86CloseConsole(void);
|
---|
224 | extern Bool xf86VTSwitchPending(void);
|
---|
225 | extern Bool xf86VTSwitchAway(void);
|
---|
226 | extern Bool xf86VTSwitchTo(void);
|
---|
227 | extern void xf86VTRequest(int sig);
|
---|
228 | extern int xf86ProcessArgument(int, char **, int);
|
---|
229 | extern void xf86UseMsg(void);
|
---|
230 | extern void xf86SetKbdLeds(int);
|
---|
231 | extern int xf86GetKbdLeds(void);
|
---|
232 | extern void xf86SetKbdRepeat(char);
|
---|
233 | extern void xf86KbdInit(void);
|
---|
234 | extern int xf86KbdOn(void);
|
---|
235 | extern int xf86KbdOff(void);
|
---|
236 | extern void xf86KbdEvents(void);
|
---|
237 | #ifdef XQUEUE
|
---|
238 | extern int xf86XqueKbdProc(DeviceIntPtr, int);
|
---|
239 | extern void xf86XqueEvents(void);
|
---|
240 | #endif
|
---|
241 | extern void xf86ReloadInputDevs(int sig);
|
---|
242 | #ifdef WSCONS_SUPPORT
|
---|
243 | extern void xf86WSKbdEvents(void);
|
---|
244 | #endif
|
---|
245 | extern PMClose xf86OSPMOpen(void);
|
---|
246 |
|
---|
247 | #ifdef NEED_OS_RAC_PROTOS
|
---|
248 | /* RAC-related privs */
|
---|
249 | /* internal to os-support layer */
|
---|
250 | resPtr xf86StdBusAccWindowsFromOS(void);
|
---|
251 | resPtr xf86StdPciAccWindowsFromOS(void);
|
---|
252 | resPtr xf86StdIsaAccWindowsFromOS(void);
|
---|
253 | resPtr xf86StdAccResFromOS(resPtr ret);
|
---|
254 |
|
---|
255 | /* available to the common layer */
|
---|
256 | resPtr xf86BusAccWindowsFromOS(void);
|
---|
257 | resPtr xf86PciBusAccWindowsFromOS(void);
|
---|
258 | #ifdef INCLUDE_UNUSED
|
---|
259 | resPtr xf86IsaBusAccWindowsFromOS(void);
|
---|
260 | #endif
|
---|
261 | resPtr xf86AccResFromOS(resPtr ret);
|
---|
262 | #endif /* NEED_OS_RAC_PROTOS */
|
---|
263 |
|
---|
264 | extern Bool xf86GetPciSizeFromOS(PCITAG tag, int indx, int* bits);
|
---|
265 | extern Bool xf86GetPciOffsetFromOS(PCITAG tag, int indx, unsigned long* bases);
|
---|
266 | extern unsigned long xf86GetOSOffsetFromPCI(PCITAG tag, int space, unsigned long base);
|
---|
267 |
|
---|
268 | extern void xf86MakeNewMapping(int, int, unsigned long, unsigned long, pointer);
|
---|
269 | extern void xf86InitVidMem(void);
|
---|
270 |
|
---|
271 | #endif /* XF86_OS_PRIVS */
|
---|
272 |
|
---|
273 |
|
---|
274 | _XFUNCPROTOEND
|
---|
275 | #endif /* NO_OSLIB_PROTOTYPES */
|
---|
276 |
|
---|
277 | #endif /* _XF86_OSPROC_H */
|
---|