| 1 | /* |
| 2 | * Copyright 1990, 1991 by Thomas Roell, Dinkelscherben, Germany |
| 3 | * Copyright 1992 by David Dawes <dawes@XFree86.org> |
| 4 | * Copyright 1992 by Jim Tsillas <jtsilla@damon.ccs.northeastern.edu> |
| 5 | * Copyright 1992 by Rich Murphey <Rich@Rice.edu> |
| 6 | * Copyright 1992 by Robert Baron <Robert.Baron@ernst.mach.cs.cmu.edu> |
| 7 | * Copyright 1992 by Orest Zborowski <obz@eskimo.com> |
| 8 | * Copyright 1993 by Vrije Universiteit, The Netherlands |
| 9 | * Copyright 1993 by David Wexelblat <dwex@XFree86.org> |
| 10 | * Copyright 1994, 1996 by Holger Veit <Holger.Veit@gmd.de> |
| 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 | #ifndef _XF86_OSPROC_H |
| 68 | #define _XF86_OSPROC_H |
| 69 | |
| 70 | /* |
| 71 | * The actual prototypes have been pulled into this seperate file so |
| 72 | * that they can can be used without pulling in all of the OS specific |
| 73 | * stuff like sys/stat.h, etc. This casues problem for loadable modules. |
| 74 | */ |
| 75 | |
| 76 | /* |
| 77 | * Flags for xf86MapVidMem(). Multiple flags can be or'd together. The |
| 78 | * flags may be used as hints. For example it would be permissible to |
| 79 | * enable write combining for memory marked only for framebuffer use. |
| 80 | */ |
| 81 | |
| 82 | #define VIDMEM_FRAMEBUFFER 0x01 /* memory for framebuffer use */ |
| 83 | #define VIDMEM_MMIO 0x02 /* memory for I/O use */ |
| 84 | #define VIDMEM_MMIO_32BIT 0x04 /* memory accesses >= 32bit */ |
| 85 | #define VIDMEM_READSIDEEFFECT 0x08 /* reads can have side-effects */ |
| 86 | #define VIDMEM_SPARSE 0x10 /* sparse mapping required |
| 87 | * assumed when VIDMEM_MMIO is |
| 88 | * set. May be used with |
| 89 | * VIDMEM_FRAMEBUFFER) */ |
| 90 | #define VIDMEM_READONLY 0x20 /* read-only mapping |
| 91 | * used when reading BIOS images |
| 92 | * through xf86MapVidMem() */ |
| 93 | |
| 94 | /* |
| 95 | * OS-independent modem state flags for xf86SetSerialModemState() and |
| 96 | * xf86GetSerialModemState(). |
| 97 | */ |
| 98 | #define XF86_M_LE 0x001 /* line enable */ |
| 99 | #define XF86_M_DTR 0x002 /* data terminal ready */ |
| 100 | #define XF86_M_RTS 0x004 /* request to send */ |
| 101 | #define XF86_M_ST 0x008 /* secondary transmit */ |
| 102 | #define XF86_M_SR 0x010 /* secondary receive */ |
| 103 | #define XF86_M_CTS 0x020 /* clear to send */ |
| 104 | #define XF86_M_CAR 0x040 /* carrier detect */ |
| 105 | #define XF86_M_RNG 0x080 /* ring */ |
| 106 | #define XF86_M_DSR 0x100 /* data set ready */ |
| 107 | |
| 108 | #ifndef NO_OSLIB_PROTOTYPES |
| 109 | /* |
| 110 | * This is to prevent re-entrancy to FatalError() when aborting. |
| 111 | * Anything that can be called as a result of AbortDDX() should use this |
| 112 | * instead of FatalError(). |
| 113 | */ |
| 114 | |
| 115 | #define xf86FatalError(a, b) \ |
| 116 | if (dispatchException & DE_TERMINATE) { \ |
| 117 | ErrorF(a, b); \ |
| 118 | ErrorF("\n"); \ |
| 119 | return; \ |
| 120 | } else FatalError(a, b) |
| 121 | |
| 122 | /***************************************************************************/ |
| 123 | /* Prototypes */ |
| 124 | /***************************************************************************/ |
| 125 | |
| 126 | #include <X11/Xfuncproto.h> |
| 127 | #include "opaque.h" |
| 128 | #include "xf86Optionstr.h" |
| 129 | |
| 130 | _XFUNCPROTOBEGIN |
| 131 | |
| 132 | /* public functions */ |
| 133 | extern _X_EXPORT Bool xf86LinearVidMem(void); |
| 134 | extern _X_EXPORT _X_DEPRECATED Bool xf86CheckMTRR(int); |
| 135 | extern _X_EXPORT _X_DEPRECATED pointer xf86MapVidMem(int, int, unsigned long, |
| 136 | unsigned long); |
| 137 | extern _X_EXPORT _X_DEPRECATED void xf86UnMapVidMem(int, pointer, |
| 138 | unsigned long); |
| 139 | extern _X_EXPORT int xf86ReadBIOS(unsigned long, unsigned long, unsigned char *, |
| 140 | int); |
| 141 | extern _X_EXPORT Bool xf86EnableIO(void); |
| 142 | extern _X_EXPORT void xf86DisableIO(void); |
| 143 | |
| 144 | #ifdef __NetBSD__ |
| 145 | extern _X_EXPORT void xf86SetTVOut(int); |
| 146 | extern _X_EXPORT void xf86SetRGBOut(void); |
| 147 | #endif |
| 148 | extern _X_EXPORT void xf86OSRingBell(int, int, int); |
| 149 | extern _X_EXPORT void xf86SetReallySlowBcopy(void); |
| 150 | extern _X_EXPORT void xf86SlowBcopy(unsigned char *, unsigned char *, int); |
| 151 | extern _X_EXPORT int xf86OpenSerial(XF86OptionPtr options); |
| 152 | extern _X_EXPORT int xf86SetSerial(int fd, XF86OptionPtr options); |
| 153 | extern _X_EXPORT int xf86SetSerialSpeed(int fd, int speed); |
| 154 | extern _X_EXPORT int xf86ReadSerial(int fd, void *buf, int count); |
| 155 | extern _X_EXPORT int xf86WriteSerial(int fd, const void *buf, int count); |
| 156 | extern _X_EXPORT int xf86CloseSerial(int fd); |
| 157 | extern _X_EXPORT int xf86FlushInput(int fd); |
| 158 | extern _X_EXPORT int xf86WaitForInput(int fd, int timeout); |
| 159 | extern _X_EXPORT int xf86SerialSendBreak(int fd, int duration); |
| 160 | extern _X_EXPORT int xf86SetSerialModemState(int fd, int state); |
| 161 | extern _X_EXPORT int xf86GetSerialModemState(int fd); |
| 162 | extern _X_EXPORT int xf86SerialModemSetBits(int fd, int bits); |
| 163 | extern _X_EXPORT int xf86SerialModemClearBits(int fd, int bits); |
| 164 | extern _X_EXPORT int xf86LoadKernelModule(const char *pathname); |
| 165 | |
| 166 | /* AGP GART interface */ |
| 167 | |
| 168 | typedef struct _AgpInfo { |
| 169 | CARD32 bridgeId; |
| 170 | CARD32 agpMode; |
| 171 | unsigned long base; |
| 172 | unsigned long size; |
| 173 | unsigned long totalPages; |
| 174 | unsigned long systemPages; |
| 175 | unsigned long usedPages; |
| 176 | } AgpInfo, *AgpInfoPtr; |
| 177 | |
| 178 | extern _X_EXPORT Bool xf86AgpGARTSupported(void); |
| 179 | extern _X_EXPORT AgpInfoPtr xf86GetAGPInfo(int screenNum); |
| 180 | extern _X_EXPORT Bool xf86AcquireGART(int screenNum); |
| 181 | extern _X_EXPORT Bool xf86ReleaseGART(int screenNum); |
| 182 | extern _X_EXPORT int xf86AllocateGARTMemory(int screenNum, unsigned long size, |
| 183 | int type, unsigned long *physical); |
| 184 | extern _X_EXPORT Bool xf86DeallocateGARTMemory(int screenNum, int key); |
| 185 | extern _X_EXPORT Bool xf86BindGARTMemory(int screenNum, int key, |
| 186 | unsigned long offset); |
| 187 | extern _X_EXPORT Bool xf86UnbindGARTMemory(int screenNum, int key); |
| 188 | extern _X_EXPORT Bool xf86EnableAGP(int screenNum, CARD32 mode); |
| 189 | extern _X_EXPORT Bool xf86GARTCloseScreen(int screenNum); |
| 190 | |
| 191 | /* These routines are in shared/sigio.c and are not loaded as part of the |
| 192 | module. These routines are small, and the code if very POSIX-signal (or |
| 193 | OS-signal) specific, so it seemed better to provide more complex |
| 194 | wrappers than to wrap each individual function called. */ |
| 195 | extern _X_EXPORT int xf86InstallSIGIOHandler(int fd, void (*f) (int, void *), |
| 196 | void *); |
| 197 | extern _X_EXPORT int xf86RemoveSIGIOHandler(int fd); |
| 198 | extern _X_EXPORT int xf86BlockSIGIO(void); |
| 199 | extern _X_EXPORT void xf86UnblockSIGIO(int); |
| 200 | extern _X_EXPORT void xf86AssertBlockedSIGIO(char *); |
| 201 | extern _X_EXPORT Bool xf86SIGIOSupported(void); |
| 202 | |
| 203 | #ifdef XF86_OS_PRIVS |
| 204 | typedef void (*PMClose) (void); |
| 205 | extern _X_EXPORT void xf86OpenConsole(void); |
| 206 | extern _X_EXPORT void xf86CloseConsole(void); |
| 207 | extern _X_HIDDEN Bool xf86VTActivate(int vtno); |
| 208 | extern _X_EXPORT Bool xf86VTSwitchPending(void); |
| 209 | extern _X_EXPORT Bool xf86VTSwitchAway(void); |
| 210 | extern _X_EXPORT Bool xf86VTSwitchTo(void); |
| 211 | extern _X_EXPORT void xf86VTRequest(int sig); |
| 212 | extern _X_EXPORT int xf86ProcessArgument(int, char **, int); |
| 213 | extern _X_EXPORT void xf86UseMsg(void); |
| 214 | extern _X_EXPORT PMClose xf86OSPMOpen(void); |
| 215 | |
| 216 | extern _X_EXPORT void xf86InitVidMem(void); |
| 217 | |
| 218 | #endif /* XF86_OS_PRIVS */ |
| 219 | |
| 220 | #ifdef XSERVER_PLATFORM_BUS |
| 221 | #include "hotplug.h" |
| 222 | void |
| 223 | xf86PlatformDeviceProbe(struct OdevAttributes *attribs); |
| 224 | |
| 225 | void |
| 226 | xf86PlatformReprobeDevice(int index, struct OdevAttributes *attribs); |
| 227 | #endif |
| 228 | |
| 229 | _XFUNCPROTOEND |
| 230 | #endif /* NO_OSLIB_PROTOTYPES */ |
| 231 | #endif /* _XF86_OSPROC_H */ |