3
* Copyright (c) 1997-2003 by The XFree86 Project, Inc.
5
* Permission is hereby granted, free of charge, to any person obtaining a
6
* copy of this software and associated documentation files (the "Software"),
7
* to deal in the Software without restriction, including without limitation
8
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
9
* and/or sell copies of the Software, and to permit persons to whom the
10
* Software is furnished to do so, subject to the following conditions:
12
* The above copyright notice and this permission notice shall be included in
13
* all copies or substantial portions of the Software.
15
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
19
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
20
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
21
* OTHER DEALINGS IN THE SOFTWARE.
23
* Except as contained in this notice, the name of the copyright holder(s)
24
* and author(s) shall not be used in advertising or otherwise to promote
25
* the sale, use or other dealings in this Software without prior written
26
* authorization from the copyright holder(s) and author(s).
30
* This file contains declarations for public XFree86 functions and variables,
31
* and definitions of public macros.
33
* "public" means available to video drivers.
39
#if HAVE_XORG_CONFIG_H
40
#include <xorg-config.h>
41
#elif HAVE_DIX_CONFIG_H
42
#include <dix-config.h>
47
#include <X11/Xfuncproto.h>
50
#include <X11/extensions/randr.h>
53
#include "propertyst.h"
55
/* General parameters */
56
extern int xf86DoConfigure;
57
extern Bool xf86DoConfigurePass1;
58
extern int xf86ScreenIndex; /* Index into pScreen.devPrivates */
59
extern int xf86CreateRootWindowIndex; /* Index into pScreen.devPrivates */
60
extern int xf86PixmapIndex;
61
extern ScrnInfoPtr *xf86Screens; /* List of pointers to ScrnInfoRecs */
62
extern const unsigned char byte_reversed[256];
63
extern ScrnInfoPtr xf86CurrentScreen;
64
extern Bool pciSlotClaimed;
65
extern Bool isaSlotClaimed;
66
extern Bool fbSlotClaimed;
67
#if defined(__sparc__) || defined(__sparc)
68
extern Bool sbusSlotClaimed;
70
extern confDRIRec xf86ConfigDRI;
71
extern Bool xf86inSuspend;
73
#define XF86SCRNINFO(p) ((ScrnInfoPtr)((p)->devPrivates[xf86ScreenIndex].ptr))
75
#define XF86FLIP_PIXELS() \
77
if (xf86GetFlipPixels()) { \
78
pScreen->whitePixel = (pScreen->whitePixel) ? 0 : 1; \
79
pScreen->blackPixel = (pScreen->blackPixel) ? 0 : 1; \
83
#define BOOLTOSTRING(b) ((b) ? "TRUE" : "FALSE")
85
#define PIX24TOBPP(p) (((p) == Pix24Use24) ? 24 : \
86
(((p) == Pix24Use32) ? 32 : 0))
88
/* variables for debugging */
90
extern char* xf86p8bit[];
91
extern CARD32 xf86DummyVar1;
92
extern CARD32 xf86DummyVar2;
93
extern CARD32 xf86DummyVar3;
96
/* Function Prototypes */
97
#ifndef _NO_XF86_PROTOTYPES
101
Bool xf86CheckPciSlot(int bus, int device, int func);
102
int xf86ClaimPciSlot(int bus, int device, int func, DriverPtr drvp,
103
int chipset, GDevPtr dev, Bool active);
104
Bool xf86ParsePciBusString(const char *busID, int *bus, int *device,
106
Bool xf86ComparePciBusString(const char *busID, int bus, int device, int func);
107
void xf86FormatPciBusNumber(int busnum, char *buffer);
108
pciVideoPtr *xf86GetPciVideoInfo(void);
109
pciConfigPtr *xf86GetPciConfigInfo(void);
110
void xf86SetPciVideo(pciVideoPtr, resType);
111
void xf86PrintResList(int verb, resPtr list);
112
resPtr xf86AddRangesToList(resPtr list, resRange *pRange, int entityIndex);
113
int xf86ClaimIsaSlot(DriverPtr drvp, int chipset, GDevPtr dev, Bool active);
114
int xf86GetIsaInfoForScreen(int scrnIndex);
115
int xf86GetFbInfoForScreen(int scrnIndex);
116
Bool xf86ParseIsaBusString(const char *busID);
117
int xf86ClaimFbSlot(DriverPtr drvp, int chipset, GDevPtr dev, Bool active);
118
int xf86ClaimNoSlot(DriverPtr drvp, int chipset, GDevPtr dev, Bool active);
119
void xf86EnableAccess(ScrnInfoPtr pScrn);
120
void xf86SetCurrentAccess(Bool Enable, ScrnInfoPtr pScrn);
121
Bool xf86IsPrimaryPci(pciVideoPtr pPci);
122
Bool xf86IsPrimaryIsa(void);
124
resPtr xf86AddResToList(resPtr rlist, resRange *Range, int entityIndex);
125
resPtr xf86JoinResLists(resPtr rlist1, resPtr rlist2);
126
resPtr xf86DupResList(const resPtr rlist);
127
void xf86FreeResList(resPtr rlist);
128
void xf86ClaimFixedResources(resList list, int entityIndex);
129
Bool xf86DriverHasEntities(DriverPtr drvp);
130
void xf86AddEntityToScreen(ScrnInfoPtr pScrn, int entityIndex);
131
void xf86SetEntityInstanceForScreen(ScrnInfoPtr pScrn, int entityIndex,
133
int xf86GetNumEntityInstances(int entityIndex);
134
GDevPtr xf86GetDevFromEntity(int entityIndex, int instance);
135
void xf86RemoveEntityFromScreen(ScrnInfoPtr pScrn, int entityIndex);
136
EntityInfoPtr xf86GetEntityInfo(int entityIndex);
137
pciVideoPtr xf86GetPciInfoForEntity(int entityIndex);
138
int xf86GetPciEntity(int bus, int dev, int func);
139
Bool xf86SetEntityFuncs(int entityIndex, EntityProc init,
140
EntityProc enter, EntityProc leave, pointer);
141
void xf86DeallocateResourcesForEntity(int entityIndex, unsigned long type);
142
resPtr xf86RegisterResources(int entityIndex, resList list,
143
unsigned long Access);
144
Bool xf86CheckPciMemBase(pciVideoPtr pPci, memType base);
145
void xf86SetAccessFuncs(EntityInfoPtr pEnt, xf86SetAccessFuncPtr funcs,
146
xf86SetAccessFuncPtr oldFuncs);
147
Bool xf86IsEntityPrimary(int entityIndex);
148
Bool xf86FixPciResource(int entityIndex, int prt, memType alignment,
150
resPtr xf86ReallocatePciResources(int entityIndex, resPtr pRes);
151
resPtr xf86SetOperatingState(resList list, int entityIndex, int mask);
152
void xf86EnterServerState(xf86State state);
153
resRange xf86GetBlock(unsigned long type, memType size,
154
memType window_start, memType window_end,
155
memType align_mask, resPtr avoid);
156
resRange xf86GetSparse(unsigned long type, memType fixed_bits,
157
memType decode_mask, memType address_mask,
159
memType xf86ChkConflict(resRange *rgp, int entityIndex);
160
Bool xf86IsPciDevPresent(int bus, int dev, int func);
161
ScrnInfoPtr xf86FindScreenForEntity(int entityIndex);
162
Bool xf86NoSharedResources(int screenIndex, resType res);
163
resPtr xf86FindIntersectOfLists(resPtr l1, resPtr l2);
164
pciVideoPtr xf86FindPciDeviceVendor(CARD16 vendorID, CARD16 deviceID,
165
char n, pciVideoPtr pvp_exclude);
166
pciVideoPtr xf86FindPciClass(CARD8 intf, CARD8 subClass, CARD16 class,
167
char n, pciVideoPtr pvp_exclude);
168
#ifdef INCLUDE_DEPRECATED
169
void xf86EnablePciBusMaster(pciVideoPtr pPci, Bool enable);
171
void xf86RegisterStateChangeNotificationCallback(xf86StateChangeNotificationCallbackFunc func, pointer arg);
172
Bool xf86DeregisterStateChangeNotificationCallback(xf86StateChangeNotificationCallbackFunc func);
174
int xf86GetLastScrnFlag(int entityIndex);
175
void xf86SetLastScrnFlag(int entityIndex, int scrnIndex);
176
Bool xf86IsEntityShared(int entityIndex);
177
void xf86SetEntityShared(int entityIndex);
178
Bool xf86IsEntitySharable(int entityIndex);
179
void xf86SetEntitySharable(int entityIndex);
180
Bool xf86IsPrimInitDone(int entityIndex);
181
void xf86SetPrimInitDone(int entityIndex);
182
void xf86ClearPrimInitDone(int entityIndex);
183
int xf86AllocateEntityPrivateIndex(void);
184
DevUnion *xf86GetEntityPrivate(int entityIndex, int privIndex);
186
/* xf86Configure.c */
187
GDevPtr xf86AddBusDeviceToConfigure(const char *driver, BusType bus,
188
void *busData, int chipset);
189
GDevPtr xf86AddDeviceToConfigure(const char *driver, pciVideoPtr pVideo,
194
void xf86LockZoom(ScreenPtr pScreen, int lock);
195
void xf86InitViewport(ScrnInfoPtr pScr);
196
void xf86SetViewport(ScreenPtr pScreen, int x, int y);
197
void xf86ZoomViewport(ScreenPtr pScreen, int zoom);
198
Bool xf86SwitchMode(ScreenPtr pScreen, DisplayModePtr mode);
199
void *xf86GetPointerScreenFuncs(void);
200
void xf86InitOrigins(void);
201
void xf86ReconfigureLayout(void);
204
DisplayModePtr xf86CVTMode(int HDisplay, int VDisplay, float VRefresh,
205
Bool Reduced, Bool Interlaced);
209
Bool xf86DPMSInit(ScreenPtr pScreen, DPMSSetProcPtr set, int flags);
213
Bool DGAInit(ScreenPtr pScreen, DGAFunctionPtr funcs, DGAModePtr modes,
215
Bool DGAReInitModes(ScreenPtr pScreen, DGAModePtr modes, int num);
216
xf86SetDGAModeProc xf86SetDGAMode;
220
void SetTimeSinceLastInputEvent(void);
221
pointer xf86AddInputHandler(int fd, InputHandlerProc proc, pointer data);
222
int xf86RemoveInputHandler(pointer handler);
223
void xf86DisableInputHandler(pointer handler);
224
void xf86EnableInputHandler(pointer handler);
225
pointer xf86AddGeneralHandler(int fd, InputHandlerProc proc, pointer data);
226
int xf86RemoveGeneralHandler(pointer handler);
227
void xf86DisableGeneralHandler(pointer handler);
228
void xf86EnableGeneralHandler(pointer handler);
229
void xf86InterceptSignals(int *signo);
230
void xf86InterceptSigIll(void (*sigillhandler)(void));
231
Bool xf86EnableVTSwitch(Bool new);
232
Bool xf86CommonSpecialKey(int key, Bool down, int modifiers);
233
void xf86ProcessActionEvent(ActionEvent action, void *arg);
237
void xf86AddDriver(DriverPtr driver, pointer module, int flags);
238
void xf86DeleteDriver(int drvIndex);
239
ScrnInfoPtr xf86AllocateScreen(DriverPtr drv, int flags);
240
void xf86DeleteScreen(int scrnIndex, int flags);
241
int xf86AllocateScrnInfoPrivateIndex(void);
242
Bool xf86AddPixFormat(ScrnInfoPtr pScrn, int depth, int bpp, int pad);
243
Bool xf86SetDepthBpp(ScrnInfoPtr scrp, int depth, int bpp, int fbbpp,
245
void xf86PrintDepthBpp(ScrnInfoPtr scrp);
246
Bool xf86SetWeight(ScrnInfoPtr scrp, rgb weight, rgb mask);
247
Bool xf86SetDefaultVisual(ScrnInfoPtr scrp, int visual);
248
Bool xf86SetGamma(ScrnInfoPtr scrp, Gamma newGamma);
249
void xf86SetDpi(ScrnInfoPtr pScrn, int x, int y);
250
void xf86SetBlackWhitePixels(ScreenPtr pScreen);
251
void xf86EnableDisableFBAccess(int scrnIndex, Bool enable);
252
void xf86VDrvMsgVerb(int scrnIndex, MessageType type, int verb,
253
const char *format, va_list args);
254
void xf86DrvMsgVerb(int scrnIndex, MessageType type, int verb,
255
const char *format, ...) _printf_attribute(4,5);
256
void xf86DrvMsg(int scrnIndex, MessageType type, const char *format, ...)
257
_printf_attribute(3,4);
258
void xf86MsgVerb(MessageType type, int verb, const char *format, ...)
259
_printf_attribute(3,4);
260
void xf86Msg(MessageType type, const char *format, ...) _printf_attribute(2,3);
261
void xf86ErrorFVerb(int verb, const char *format, ...) _printf_attribute(2,3);
262
void xf86ErrorF(const char *format, ...) _printf_attribute(1,2);
263
const char *xf86TokenToString(SymTabPtr table, int token);
264
int xf86StringToToken(SymTabPtr table, const char *string);
265
void xf86ShowClocks(ScrnInfoPtr scrp, MessageType from);
266
void xf86PrintChipsets(const char *drvname, const char *drvmsg,
268
int xf86MatchDevice(const char *drivername, GDevPtr **driversectlist);
269
int xf86MatchPciInstances(const char *driverName, int vendorID,
270
SymTabPtr chipsets, PciChipsets *PCIchipsets,
271
GDevPtr *devList, int numDevs, DriverPtr drvp,
272
int **foundEntities);
273
int xf86MatchIsaInstances(const char *driverName, SymTabPtr chipsets,
274
IsaChipsets *ISAchipsets, DriverPtr drvp,
275
FindIsaDevProc FindIsaDevice, GDevPtr *devList,
276
int numDevs, int **foundEntities);
277
void xf86GetClocks(ScrnInfoPtr pScrn, int num,
278
Bool (*ClockFunc)(ScrnInfoPtr, int),
279
void (*ProtectRegs)(ScrnInfoPtr, Bool),
280
void (*BlankScreen)(ScrnInfoPtr, Bool),
281
IOADDRESS vertsyncreg, int maskval,
282
int knownclkindex, int knownclkvalue);
283
void xf86SetPriority(Bool up);
284
const char *xf86GetVisualName(int visual);
285
int xf86GetVerbosity(void);
286
Pix24Flags xf86GetPix24(void);
287
int xf86GetDepth(void);
288
rgb xf86GetWeight(void);
289
Gamma xf86GetGamma(void);
290
Bool xf86GetFlipPixels(void);
291
const char *xf86GetServerName(void);
292
Bool xf86ServerIsExiting(void);
293
Bool xf86ServerIsResetting(void);
294
Bool xf86ServerIsInitialising(void);
295
Bool xf86ServerIsOnlyDetecting(void);
296
Bool xf86ServerIsOnlyProbing(void);
297
Bool xf86CaughtSignal(void);
298
Bool xf86GetVidModeAllowNonLocal(void);
299
Bool xf86GetVidModeEnabled(void);
300
Bool xf86GetModInDevAllowNonLocal(void);
301
Bool xf86GetModInDevEnabled(void);
302
Bool xf86GetAllowMouseOpenFail(void);
303
Bool xf86IsPc98(void);
304
void xf86DisableRandR(void);
305
CARD32 xf86GetVersion(void);
306
CARD32 xorgGetVersion(void);
307
CARD32 xf86GetModuleVersion(pointer module);
308
pointer xf86LoadDrvSubModule(DriverPtr drv, const char *name);
309
pointer xf86LoadSubModule(ScrnInfoPtr pScrn, const char *name);
310
pointer xf86LoadOneModule(char *name, pointer optlist);
311
void xf86UnloadSubModule(pointer mod);
312
Bool xf86LoaderCheckSymbol(const char *name);
313
void xf86LoaderReqSymLists(const char **, ...);
314
void xf86LoaderReqSymbols(const char *, ...);
315
void xf86LoaderRefSymLists(const char **, ...);
316
void xf86LoaderRefSymbols(const char *, ...);
317
void xf86SetBackingStore(ScreenPtr pScreen);
318
void xf86SetSilkenMouse(ScreenPtr pScreen);
319
int xf86NewSerialNumber(WindowPtr p, pointer unused);
320
pointer xf86FindXvOptions(int scrnIndex, int adapt_index, char *port_name,
321
char **adaptor_name, pointer *adaptor_options);
322
void xf86GetOS(const char **name, int *major, int *minor, int *teeny);
323
ScrnInfoPtr xf86ConfigPciEntity(ScrnInfoPtr pScrn, int scrnFlag,
324
int entityIndex,PciChipsets *p_chip,
325
resList res, EntityProc init,
326
EntityProc enter, EntityProc leave,
328
ScrnInfoPtr xf86ConfigIsaEntity(ScrnInfoPtr pScrn, int scrnFlag,
329
int entityIndex, IsaChipsets *i_chip,
330
resList res, EntityProc init,
331
EntityProc enter, EntityProc leave,
333
ScrnInfoPtr xf86ConfigFbEntity(ScrnInfoPtr pScrn, int scrnFlag,
334
int entityIndex, EntityProc init,
335
EntityProc enter, EntityProc leave,
337
/* Obsolete! don't use */
338
Bool xf86ConfigActivePciEntity(ScrnInfoPtr pScrn,
339
int entityIndex,PciChipsets *p_chip,
340
resList res, EntityProc init,
341
EntityProc enter, EntityProc leave,
343
/* Obsolete! don't use */
344
Bool xf86ConfigActiveIsaEntity(ScrnInfoPtr pScrn,
345
int entityIndex, IsaChipsets *i_chip,
346
resList res, EntityProc init,
347
EntityProc enter, EntityProc leave,
349
void xf86ConfigPciEntityInactive(EntityInfoPtr pEnt, PciChipsets *p_chip,
350
resList res, EntityProc init,
351
EntityProc enter, EntityProc leave,
353
void xf86ConfigIsaEntityInactive(EntityInfoPtr pEnt, IsaChipsets *i_chip,
354
resList res, EntityProc init,
355
EntityProc enter, EntityProc leave,
357
void xf86ConfigFbEntityInactive(EntityInfoPtr pEnt, EntityProc init,
358
EntityProc enter, EntityProc leave,
360
Bool xf86IsScreenPrimary(int scrnIndex);
361
int xf86RegisterRootWindowProperty(int ScrnIndex, Atom property, Atom type,
362
int format, unsigned long len,
364
Bool xf86IsUnblank(int mode);
366
void xf86AddModuleInfo(ModuleInfoPtr info, pointer module);
367
void xf86DeleteModuleInfo(int idx);
371
void xf86Break1(void);
372
void xf86Break2(void);
373
void xf86Break3(void);
374
CARD8 xf86PeekFb8(CARD8 *p);
375
CARD16 xf86PeekFb16(CARD16 *p);
376
CARD32 xf86PeekFb32(CARD32 *p);
377
void xf86PokeFb8(CARD8 *p, CARD8 v);
378
void xf86PokeFb16(CARD16 *p, CARD16 v);
379
void xf86PokeFb32(CARD16 *p, CARD32 v);
380
CARD8 xf86PeekMmio8(pointer Base, unsigned long Offset);
381
CARD16 xf86PeekMmio16(pointer Base, unsigned long Offset);
382
CARD32 xf86PeekMmio32(pointer Base, unsigned long Offset);
383
void xf86PokeMmio8(pointer Base, unsigned long Offset, CARD8 v);
384
void xf86PokeMmio16(pointer Base, unsigned long Offset, CARD16 v);
385
void xf86PokeMmio32(pointer Base, unsigned long Offset, CARD32 v);
386
extern void xf86SPTimestamp(xf86TsPtr* timestamp, char* string);
387
extern void xf86STimestamp(xf86TsPtr* timestamp);
392
PixmapFormatPtr xf86GetPixFormat(ScrnInfoPtr pScrn, int depth);
393
int xf86GetBppFromDepth(ScrnInfoPtr pScrn, int depth);
397
int xf86GetNearestClock(ScrnInfoPtr scrp, int freq, Bool allowDiv2,
398
int DivFactor, int MulFactor, int *divider);
399
const char *xf86ModeStatusToString(ModeStatus status);
400
ModeStatus xf86LookupMode(ScrnInfoPtr scrp, DisplayModePtr modep,
401
ClockRangePtr clockRanges, LookupModeFlags strategy);
402
ModeStatus xf86CheckModeForMonitor(DisplayModePtr mode, MonPtr monitor);
403
ModeStatus xf86InitialCheckModeForDriver(ScrnInfoPtr scrp, DisplayModePtr mode,
404
ClockRangePtr clockRanges,
405
LookupModeFlags strategy,
406
int maxPitch, int virtualX,
408
ModeStatus xf86CheckModeForDriver(ScrnInfoPtr scrp, DisplayModePtr mode,
410
int xf86ValidateModes(ScrnInfoPtr scrp, DisplayModePtr availModes,
411
char **modeNames, ClockRangePtr clockRanges,
412
int *linePitches, int minPitch, int maxPitch,
413
int minHeight, int maxHeight, int pitchInc,
414
int virtualX, int virtualY, int apertureSize,
415
LookupModeFlags strategy);
416
void xf86DeleteMode(DisplayModePtr *modeList, DisplayModePtr mode);
417
void xf86PruneDriverModes(ScrnInfoPtr scrp);
418
void xf86SetCrtcForModes(ScrnInfoPtr scrp, int adjustFlags);
419
void xf86PrintModes(ScrnInfoPtr scrp);
420
void xf86ShowClockRanges(ScrnInfoPtr scrp, ClockRangePtr clockRanges);
424
void xf86CollectOptions(ScrnInfoPtr pScrn, pointer extraOpts);
429
Bool xf86RandRInit (ScreenPtr pScreen);
430
void xf86RandRSetInitialMode (ScreenPtr pScreen);
431
Rotation xf86GetRotation(ScreenPtr pScreen);
432
Bool xf86RandRSetNewVirtualAndDimensions(ScreenPtr pScreen,
433
int newvirtX, int newvirtY,
434
int newmmWidth, int newmmHeight, Bool resetMode);
437
/* xf86VidModeExtentionInit.c */
439
Bool VidModeExtensionInit(ScreenPtr pScreen);
442
CARD32 xf86GetBuiltinInterfaceVersion(BuiltinInterface iface, int flag);
443
Bool xf86RegisterBuiltinInterfaceVersion(BuiltinInterface iface,
444
CARD32 version, int flags);
447
#endif /* _NO_XF86_PROTOTYPES */