Merge remote-tracking branch 'jeremyhu/master'

This commit is contained in:
Keith Packard 2011-10-17 14:36:34 -07:00
commit 64d2d1bef1
70 changed files with 714 additions and 1245 deletions

View File

@ -638,6 +638,7 @@ AC_ARG_ENABLE(int10-module, AS_HELP_STRING([--enable-int10-module], [Build X
AC_ARG_ENABLE(windowswm, AS_HELP_STRING([--enable-windowswm], [Build XWin with WindowsWM extension (default: no)]), [WINDOWSWM=$enableval], [WINDOWSWM=no])
AC_ARG_ENABLE(libdrm, AS_HELP_STRING([--enable-libdrm], [Build Xorg with libdrm support (default: enabled)]), [DRM=$enableval],[DRM=yes])
AC_ARG_ENABLE(clientids, AS_HELP_STRING([--disable-clientids], [Build Xorg with client ID tracking (default: enabled)]), [CLIENTIDS=$enableval], [CLIENTIDS=yes])
AC_ARG_ENABLE(pciaccess, AS_HELP_STRING([--enable-pciaccess], [Build Xorg with pciaccess library (default: enabled)]), [PCI=$enableval], [PCI=yes])
dnl DDXes.
AC_ARG_ENABLE(xorg, AS_HELP_STRING([--enable-xorg], [Build Xorg server (default: auto)]), [XORG=$enableval], [XORG=auto])
@ -718,6 +719,11 @@ case $host_os in
XV=no
;;
darwin*)
PCI=no
INT10MODULE=no
VGAHW=no
VBE=no
DRM=no
DRI2=no
if test x$XQUARTZ = xauto; then
@ -778,11 +784,6 @@ VIDMODEPROTO="xf86vidmodeproto >= 2.2.99.1"
WINDOWSWMPROTO="windowswmproto"
APPLEWMPROTO="applewmproto >= 1.4"
dnl Core modules for most extensions, et al.
SDK_REQUIRED_MODULES="[xproto >= 7.0.22] [randrproto >= 1.2.99.3] [renderproto >= 0.11] [xextproto >= 7.1.99] [inputproto >= 2.0.99.1] [kbproto >= 1.0.3] fontsproto"
# Make SDK_REQUIRED_MODULES available for inclusion in xorg-server.pc
AC_SUBST(SDK_REQUIRED_MODULES)
dnl List of libraries that require a specific version
LIBAPPLEWM="applewm >= 1.4"
LIBDMX="dmx >= 1.0.99.1"
@ -793,7 +794,7 @@ LIBXEXT="xext >= 1.0.99.4"
LIBXFONT="xfont >= 1.4.2"
LIBXI="xi >= 1.2.99.1"
LIBXTST="xtst >= 1.0.99.2"
LIBPCIACCESS="pciaccess >= 0.8.0"
LIBPCIACCESS="pciaccess >= 0.12.901"
LIBUDEV="libudev >= 143"
LIBSELINUX="libselinux >= 2.0.86"
LIBDBUS="dbus-1 >= 1.0"
@ -804,6 +805,11 @@ dnl specific modules against it
PKG_CHECK_MODULES(PIXMAN, $LIBPIXMAN)
REQUIRED_LIBS="$REQUIRED_LIBS $LIBPIXMAN $LIBXFONT xau"
dnl Core modules for most extensions, et al.
SDK_REQUIRED_MODULES="[xproto >= 7.0.22] [randrproto >= 1.2.99.3] [renderproto >= 0.11] [xextproto >= 7.1.99] [inputproto >= 2.0.99.1] [kbproto >= 1.0.3] fontsproto $LIBPIXMAN"
# Make SDK_REQUIRED_MODULES available for inclusion in xorg-server.pc
AC_SUBST(SDK_REQUIRED_MODULES)
REQUIRED_MODULES="[fixesproto >= 5.0] [damageproto >= 1.1] [xcmiscproto >= 1.2.0] [xtrans >= 1.2.2] [bigreqsproto >= 1.1.0] $SDK_REQUIRED_MODULES"
if test "x$CONFIG_UDEV" = xyes &&
@ -1270,7 +1276,6 @@ if test "x$XDMAUTH" = xyes; then
fi
AC_DEFINE_DIR(COMPILEDDEFAULTFONTPATH, FONTPATH, [Default font path])
AC_DEFINE_DIR(PCI_TXT_IDS_PATH, PCI_TXT_IDS_DIR, [Default PCI text file ID path])
AC_DEFINE_DIR(SERVER_MISC_CONFIG_PATH, SERVERCONFIG, [Server miscellaneous config path])
AC_DEFINE_DIR(BASE_FONT_PATH, FONTROOTDIR, [Default base font path])
dridriverdir=`$PKG_CONFIG --variable=dridriverdir dri`
@ -1521,10 +1526,6 @@ if test "x$XORG" = xauto; then
fi
AC_MSG_RESULT([$XORG])
xorg_bus_linuxpci=no
xorg_bus_bsdpci=no
xorg_bus_sparc=no
if test "x$XORG" = xyes; then
XORG_DDXINCS='-I$(top_srcdir)/hw/xfree86 -I$(top_srcdir)/hw/xfree86/include -I$(top_srcdir)/hw/xfree86/common'
XORG_OSINCS='-I$(top_srcdir)/hw/xfree86/os-support -I$(top_srcdir)/hw/xfree86/os-support/bus -I$(top_srcdir)/os'
@ -1572,37 +1573,51 @@ if test "x$XORG" = xyes; then
AC_SUBST([symbol_visibility])
dnl ===================================================================
dnl ===================================================================
dnl ================= beginning of PCI configuration ==================
dnl ===================================================================
xorg_bus_bsdpci=no
xorg_bus_sparc=no
AC_MSG_CHECKING([whether to build Xorg PCI functions])
if test "x$PCI" = xyes; then
PKG_CHECK_MODULES([PCIACCESS], $LIBPCIACCESS)
SAVE_LIBS=$LIBS
SAVE_CFLAGS=$CFLAGS
CFLAGS=$PCIACCESS_CFLAGS
LIBS=$PCIACCESS_LIBS
AC_CHECK_FUNCS([pci_system_init_dev_mem])
AC_CHECK_FUNCS([pci_device_enable])
AC_CHECK_FUNCS([pci_device_is_boot_vga])
AC_CHECK_FUNCS([pci_device_vgaarb_init])
LIBS=$SAVE_LIBS
CFLAGS=$SAVE_CFLAGS
SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $LIBPCIACCESS"
XORG_SYS_LIBS="$XORG_SYS_LIBS $PCIACCESS_LIBS $GLX_SYS_LIBS"
XORG_CFLAGS="$XORG_CFLAGS $PCIACCESS_CFLAGS"
AC_DEFINE(XSERVER_LIBPCIACCESS, 1, [Use libpciaccess for all pci manipulation])
AC_DEFINE_DIR(PCI_TXT_IDS_PATH, PCI_TXT_IDS_DIR, [Default PCI text file ID path])
case $host_os in
gnu* | freebsd* | kfreebsd*-gnu | netbsd* | openbsd* | solaris* | dragonfly*)
xorg_bus_bsdpci="yes"
;;
esac
case $host_cpu in
sparc*)
xorg_bus_sparc="yes"
;;
esac
fi
AC_MSG_RESULT([$PCI])
dnl ===================================================================
dnl ==================== end of PCI configuration =====================
dnl ===================================================================
case $host_os in
linux*)
if test "x$LNXAPM" = xyes; then
XORG_CFLAGS="$XORG_CFLAGS -DXF86PM"
fi
XORG_OS_SUBDIR="linux"
xorg_bus_linuxpci="yes"
linux_acpi="no"
case $host_cpu in
ia64*)
linux_ia64=yes
linux_acpi="yes"
;;
alpha*)
linux_alpha=yes
;;
i*86|amd64*|x86_64*)
i*86|amd64*|x86_64*|ia64*)
linux_acpi="yes"
;;
*)
@ -1611,11 +1626,9 @@ if test "x$XORG" = xyes; then
;;
freebsd* | kfreebsd*-gnu | dragonfly*)
XORG_OS_SUBDIR="bsd"
xorg_bus_bsdpci="yes"
;;
netbsd*)
XORG_OS_SUBDIR="bsd"
xorg_bus_bsdpci="yes"
;;
openbsd*)
if test "x$ac_cv_BSD_APM" = xyes \
@ -1623,14 +1636,10 @@ if test "x$XORG" = xyes; then
XORG_CFLAGS="$XORG_CFLAGS -DXF86PM"
fi
XORG_OS_SUBDIR="bsd"
xorg_bus_bsdpci="yes"
;;
solaris*)
XORG_OS_SUBDIR="solaris"
XORG_CFLAGS="$XORG_CFLAGS -DXF86PM"
# Use the same stubs as BSD for old functions, since we now
# use libpciaccess for PCI
xorg_bus_bsdpci="yes"
AC_CHECK_HEADERS([sys/kd.h])
AC_CHECK_HEADERS([sys/vt.h], [solaris_vt=yes], [solaris_vt=no])
# Check for minimum supported release
@ -1675,13 +1684,10 @@ if test "x$XORG" = xyes; then
;;
gnu*)
XORG_OS_SUBDIR="hurd"
# Use the same stubs as BSD for old functions, since we now
# use libpciaccess for PCI
xorg_bus_bsdpci="yes"
;;
*)
XORG_OS_SUBDIR="unknown"
AC_MSG_ERROR([m4_text_wrap(m4_join([ ],
XORG_OS_SUBDIR="stub"
AC_MSG_NOTICE([m4_text_wrap(m4_join([ ],
[Your OS is unknown. Xorg currently only supports Linux,],
[Free/Open/Net/DragonFlyBSD, Solaris/OpenSolaris, & GNU Hurd.],
[If you are interested in porting Xorg to your platform,],
@ -1690,9 +1696,6 @@ if test "x$XORG" = xyes; then
esac
case $host_cpu in
sparc*)
xorg_bus_sparc="yes"
;;
i*86)
;;
esac
@ -1749,7 +1752,6 @@ if test "x$XORG" = xyes; then
AC_DEFINE_DIR(DEFAULT_LIBRARY_PATH, libdir, [Default library install path])
AC_DEFINE_DIR(DEFAULT_LOGPREFIX, LOGPREFIX, [Default log location])
AC_DEFINE_UNQUOTED(__VENDORDWEBSUPPORT__, ["$VENDOR_WEB"], [Vendor web address for support])
AC_DEFINE(XSERVER_LIBPCIACCESS, 1, [Use libpciaccess for all pci manipulation])
if test "x$VGAHW" = xyes; then
AC_DEFINE(WITH_VGAHW, 1, [Building vgahw module])
fi
@ -1779,10 +1781,9 @@ if test "x$XORG" = xyes; then
AC_SUBST([abi_extension])
fi
AM_CONDITIONAL([XORG], [test "x$XORG" = xyes])
AM_CONDITIONAL([XORG_BUS_LINUXPCI], [test "x$xorg_bus_linuxpci" = xyes])
AM_CONDITIONAL([XORG_BUS_PCI], [test "x$PCI" = xyes])
AM_CONDITIONAL([XORG_BUS_BSDPCI], [test "x$xorg_bus_bsdpci" = xyes])
AM_CONDITIONAL([XORG_BUS_SPARC], [test "x$xorg_bus_sparc" = xyes])
AM_CONDITIONAL([LINUX_IA64], [test "x$linux_ia64" = xyes])
AM_CONDITIONAL([LINUX_ALPHA], [test "x$linux_alpha" = xyes])
AM_CONDITIONAL([LNXACPI], [test "x$linux_acpi" = xyes])
AM_CONDITIONAL([SOLARIS_ASM_INLINE], [test "x$solaris_asm_inline" = xyes])
@ -2184,6 +2185,7 @@ hw/xfree86/os-support/hurd/Makefile
hw/xfree86/os-support/misc/Makefile
hw/xfree86/os-support/linux/Makefile
hw/xfree86/os-support/solaris/Makefile
hw/xfree86/os-support/stub/Makefile
hw/xfree86/parser/Makefile
hw/xfree86/ramdac/Makefile
hw/xfree86/shadowfb/Makefile

View File

@ -767,3 +767,66 @@ input_option_set_value(InputOption *opt, const char *value)
if (value)
opt->value = strdup(value);
}
/* FP1616/FP3232 conversion functions.
* Fixed point types are encoded as signed integral and unsigned frac. So any
* negative number -n.m is encoded as floor(n) + (1 - 0.m).
*/
double
fp1616_to_double(FP1616 in)
{
double ret;
ret = (double)(in >> 16);
ret += (double)(in & 0xffff) * (1.0 / (1UL << 16)); /* Optimized: ldexp((double)(in & 0xffff), -16); */
return ret;
}
double
fp3232_to_double(FP3232 in)
{
double ret;
ret = (double)in.integral;
ret += (double)in.frac * (1.0 / (1ULL << 32)); /* Optimized: ldexp((double)in.frac, -32); */
return ret;
}
FP1616
double_to_fp1616(double in)
{
FP1616 ret;
int32_t integral;
double tmp;
uint32_t frac_d;
tmp = floor(in);
integral = (int32_t)tmp;
tmp = (in - integral) * (1UL << 16); /* Optimized: ldexp(in - integral, 16) */
frac_d = (uint16_t)tmp;
ret = integral << 16;
ret |= frac_d & 0xffff;
return ret;
}
FP3232
double_to_fp3232(double in)
{
FP3232 ret;
int32_t integral;
double tmp;
uint32_t frac_d;
tmp = floor(in);
integral = (int32_t)tmp;
tmp = (in - integral) * (1ULL << 32); /* Optimized: ldexp(in - integral, 32) */
frac_d = (uint32_t)tmp;
ret.integral = integral;
ret.frac = frac_d;
return ret;
}

View File

@ -1324,10 +1324,6 @@ This re-enables X request processing for the specified client.
void
FatalError(char *f, ...)
void
Error(str)
char *str;
</programlisting></blockquote>
You should write these three routines to provide for diagnostic output
from the dix and ddx layers, although implementing them to produce no
@ -1335,11 +1331,7 @@ output will not affect the correctness of your server. ErrorF() and
FatalError() take a printf() type of format specification in the first
argument and an implementation-dependent number of arguments following
that. Normally, the formats passed to ErrorF() and FatalError()
should be terminated with a newline. Error() provides an os interface
for printing out the string passed as an argument followed by a
meaningful explanation of the last system error. Normally the string
does not contain a newline, and it is only called by the ddx layer.
In the sample implementation, Error() uses the perror() function.
should be terminated with a newline.
</para>
<para>
After printing the message arguments, FatalError() must be implemented

View File

@ -45,6 +45,7 @@
#include <stdio.h>
#include <unistd.h>
#include <string.h> /* for memset */
#include <errno.h>
#include <time.h>
#include <sys/ipc.h>
@ -331,6 +332,14 @@ hostx_set_title (char *title)
ephyrTitle = title;
}
static int _X_NORETURN
x_io_error_handler (Display *dpy) {
ErrorF("Lost connection to X server: %s\n", strerror(errno));
CloseWellKnownConnections();
OsCleanup(1);
exit(1);
}
int
hostx_init (void)
{
@ -358,6 +367,8 @@ hostx_init (void)
exit(1);
}
XSetIOErrorHandler(x_io_error_handler);
HostX.screen = DefaultScreen(HostX.dpy);
HostX.winroot = RootWindow(HostX.dpy, HostX.screen);
HostX.gc = XCreateGC(HostX.dpy, HostX.winroot, 0, NULL);

View File

@ -1,18 +1,18 @@
."
." Copyright (c) Matthieu Herrb <matthieu@herrb.eu>
."
." Permission to use, copy, modify, and distribute this software for any
." purpose with or without fee is hereby granted, provided that the above
." copyright notice and this permission notice appear in all copies.
."
." THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
." WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
." MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
." ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
." WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
." ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
." OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
."
.\"
.\" Copyright (c) Matthieu Herrb <matthieu@herrb.eu>
.\"
.\" Permission to use, copy, modify, and distribute this software for any
.\" purpose with or without fee is hereby granted, provided that the above
.\" copyright notice and this permission notice appear in all copies.
.\"
.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\"
.TH Xephyr __appmansuffix__ __vendorversion__
.SH NAME
Xephyr - X server outputting to a window on a pre-existing X display
@ -81,7 +81,7 @@ build flags are causing this. I haven't figured as yet how to work
round it. It doesn't appear to break anything however.
.IP \(bu 2
Keyboard handling is basic but works.
.TP \(bu 2
.IP \(bu 2
Mouse button 5 probably won't work.
.SH "SEE ALSO"
X(__miscmansuffix__), Xserver(__appmansuffix__)

View File

@ -1,5 +1,10 @@
noinst_LTLIBRARIES = libcommon.la
if XORG_BUS_PCI
PCI_SOURCES = xf86pciBus.c xf86VGAarbiter.c xf86VGAarbiter.h \
xf86VGAarbiterPriv.h
endif
if XORG_BUS_SPARC
SBUS_SOURCES = xf86sbusBus.c
endif
@ -19,7 +24,7 @@ endif
RANDRSOURCES = xf86RandR.c
BUSSOURCES = xf86pciBus.c xf86fbBus.c xf86noBus.c $(SBUS_SOURCES)
BUSSOURCES = xf86fbBus.c xf86noBus.c $(PCI_SOURCES) $(SBUS_SOURCES)
MODEDEFSOURCES = $(srcdir)/vesamodes $(srcdir)/extramodes
@ -33,7 +38,7 @@ AM_LDFLAGS = -r
libcommon_la_SOURCES = xf86Configure.c xf86ShowOpts.c xf86Bus.c xf86Config.c \
xf86Cursor.c $(DGASOURCES) xf86DPMS.c \
xf86Events.c xf86Globals.c xf86AutoConfig.c \
xf86Option.c xf86Init.c xf86VGAarbiter.c \
xf86Option.c xf86Init.c \
xf86VidMode.c xf86fbman.c xf86cmap.c \
xf86Helper.c xf86PM.c xf86Xinput.c xisb.c \
xf86Mode.c xorgHelper.c \

View File

@ -92,6 +92,7 @@ extern _X_EXPORT Bool VTSwitchEnabled; /* kbd driver */
#ifndef _NO_XF86_PROTOTYPES
/* PCI related */
#ifdef XSERVER_LIBPCIACCESS
#include <pciaccess.h>
extern _X_EXPORT Bool pciSlotClaimed;
@ -118,6 +119,15 @@ extern _X_EXPORT ScrnInfoPtr xf86ConfigPciEntity(ScrnInfoPtr pScrn,
extern _X_EXPORT Bool xf86ConfigActivePciEntity(ScrnInfoPtr pScrn,
int entityIndex,PciChipsets *p_chip, void *dummy, EntityProc init,
EntityProc enter, EntityProc leave, pointer private);
#else
#define xf86VGAarbiterInit() do {} while (0)
#define xf86VGAarbiterFini() do {} while (0)
#define xf86VGAarbiterLock(x) do {} while (0)
#define xf86VGAarbiterUnlock(x) do {} while (0)
#define xf86VGAarbiterScrnInit(x) do {} while (0)
#define xf86VGAarbiterDeviceDecodes() do {} while (0)
#define xf86VGAarbiterWrapFunctions() do {} while (0)
#endif
/* xf86Bus.c */
@ -239,12 +249,6 @@ extern _X_EXPORT void xf86ShowClocks(ScrnInfoPtr scrp, MessageType from);
extern _X_EXPORT void xf86PrintChipsets(const char *drvname, const char *drvmsg,
SymTabPtr chips);
extern _X_EXPORT int xf86MatchDevice(const char *drivername, GDevPtr **driversectlist);
extern _X_EXPORT void xf86GetClocks(ScrnInfoPtr pScrn, int num,
Bool (*ClockFunc)(ScrnInfoPtr, int),
void (*ProtectRegs)(ScrnInfoPtr, Bool),
void (*BlankScreen)(ScrnInfoPtr, Bool),
IOADDRESS vertsyncreg, int maskval,
int knownclkindex, int knownclkvalue);
extern _X_EXPORT const char *xf86GetVisualName(int visual);
extern _X_EXPORT int xf86GetVerbosity(void);
extern _X_EXPORT Pix24Flags xf86GetPix24(void);

View File

@ -255,9 +255,9 @@ listPossibleVideoDrivers(char *matches[], int nmatches)
matches[i++] = xnfstrdup(sbusDriver);
}
#endif
#ifdef XSERVER_LIBPCIACCESS
i = xf86PciMatchDriver(matches, nmatches);
#endif
/* Fallback to platform default hardware */
if (i < (nmatches - 1)) {
#if defined(__i386__) || defined(__amd64__) || defined(__hurd__)

View File

@ -47,8 +47,9 @@
#define XF86_OS_PRIVS
#include "xf86_OSproc.h"
#ifdef XSERVER_LIBPCIACCESS
#include "xf86VGAarbiter.h"
#endif
/* Entity data */
EntityPtr *xf86Entities = NULL; /* Bus slots claimed by drivers */
int xf86NumEntities = 0;
@ -75,7 +76,7 @@ Bool
xf86CallDriverProbe( DriverPtr drv, Bool detect_only )
{
Bool foundScreen = FALSE;
#ifdef XSERVER_LIBPCIACCESS
if (drv->PciProbe != NULL) {
if (xf86DoConfigure && xf86DoConfigurePass1) {
assert(detect_only);
@ -86,7 +87,7 @@ xf86CallDriverProbe( DriverPtr drv, Bool detect_only )
foundScreen = xf86PciProbeDev(drv);
}
}
#endif
if (!foundScreen && (drv->Probe != NULL)) {
xf86Msg( X_WARNING, "Falling back to old probe method for %s\n",
drv->driverName);
@ -195,7 +196,9 @@ xf86BusConfig(void)
void
xf86BusProbe(void)
{
#ifdef XSERVER_LIBPCIACCESS
xf86PciProbe();
#endif
#if (defined(__sparc__) || defined(__sparc)) && !defined(__OpenBSD__)
xf86SbusProbe();
#endif
@ -308,7 +311,6 @@ xf86AddEntityToScreen(ScrnInfoPtr pScrn, int entityIndex)
pScrn->entityInstanceList = xnfrealloc(pScrn->entityInstanceList,
pScrn->numEntities * sizeof(int));
pScrn->entityInstanceList[pScrn->numEntities - 1] = 0;
pScrn->domainIOBase = xf86Entities[entityIndex]->domainIO;
}
void
@ -505,9 +507,14 @@ xf86PostProbe(void)
{
int i;
if (fbSlotClaimed && (pciSlotClaimed
if (fbSlotClaimed && (
#if (defined(__sparc__) || defined(__sparc)) && !defined(__OpenBSD__)
|| sbusSlotClaimed
sbusSlotClaimed ||
#endif
#ifdef XSERVER_LIBPCIACCESS
pciSlotClaimed
#else
TRUE
#endif
))
FatalError("Cannot run in framebuffer mode. Please specify busIDs "

View File

@ -58,7 +58,6 @@ typedef struct {
DevUnion * entityPrivates;
int numInstances;
GDevPtr * devices;
IOADDRESS domainIO;
} EntityRec, *EntityPtr;
#define ACCEL_IS_SHARABLE 0x100

View File

@ -2398,7 +2398,7 @@ xf86HandleConfigFile(Bool autoconfig)
}
xf86ProcessOptions(-1, xf86ConfigLayout.options, LayoutOptions);
#ifdef XSERVER_LIBPCIACCESS
if ((scanptr = xf86GetOptValString(LayoutOptions, LAYOUT_ISOLATEDEVICE))) {
; /* IsolateDevice specified; overrides SingleCard */
} else {
@ -2413,7 +2413,7 @@ xf86HandleConfigFile(Bool autoconfig)
} else
xf86PciIsolateDevice(scanptr);
}
#endif
/* Now process everything else */
if (!configServerFlags(xf86configptr->conf_flags,xf86ConfigLayout.options)){
ErrorF ("Problem when converting the config data structures\n");

View File

@ -87,9 +87,11 @@ xf86AddBusDeviceToConfigure(const char *driver, BusType bus, void *busData, int
/* Check for duplicates */
for (i = 0; i < nDevToConfig; i++) {
switch (bus) {
#ifdef XSERVER_LIBPCIACCESS
case BUS_PCI:
ret = xf86PciConfigure(busData, DevToConfig[i].pVideo);
break;
break;
#endif
#if (defined(__sparc__) || defined(__sparc)) && !defined(__OpenBSD__)
case BUS_SBUS:
ret = xf86SbusConfigure(busData, DevToConfig[i].sVideo);
@ -118,10 +120,12 @@ xf86AddBusDeviceToConfigure(const char *driver, BusType bus, void *busData, int
for (j = 0; (DevToConfig[i].GDev.driver[j] = tolower(driver[j])); j++);
switch (bus) {
#ifdef XSERVER_LIBPCIACCESS
case BUS_PCI:
xf86PciConfigureNewDev(busData, DevToConfig[i].pVideo,
&DevToConfig[i].GDev, &chipset);
break;
#endif
#if (defined(__sparc__) || defined(__sparc)) && !defined(__OpenBSD__)
case BUS_SBUS:
xf86SbusConfigureNewDev(busData, DevToConfig[i].sVideo,

View File

@ -42,8 +42,9 @@
#include <X11/extensions/dpmsconst.h>
#include "dpmsproc.h"
#endif
#ifdef XSERVER_LIBPCIACCESS
#include "xf86VGAarbiter.h"
#endif
#ifdef DPMSExtension
static DevPrivateKeyRec DPMSKeyRec;

View File

@ -1353,96 +1353,6 @@ xf86MatchDevice(const char *drivername, GDevPtr **sectlist)
return i;
}
/*
* xf86GetClocks -- get the dot-clocks via a BIG BAD hack ...
*/
void
xf86GetClocks(ScrnInfoPtr pScrn, int num, Bool (*ClockFunc)(ScrnInfoPtr, int),
void (*ProtectRegs)(ScrnInfoPtr, Bool),
void (*BlankScreen)(ScrnInfoPtr, Bool), IOADDRESS vertsyncreg,
int maskval, int knownclkindex, int knownclkvalue)
{
register int status = vertsyncreg;
unsigned long i, cnt, rcnt, sync;
/* First save registers that get written on */
(*ClockFunc)(pScrn, CLK_REG_SAVE);
if (num > MAXCLOCKS)
num = MAXCLOCKS;
for (i = 0; i < num; i++)
{
if (ProtectRegs)
(*ProtectRegs)(pScrn, TRUE);
if (!(*ClockFunc)(pScrn, i))
{
pScrn->clock[i] = -1;
continue;
}
if (ProtectRegs)
(*ProtectRegs)(pScrn, FALSE);
if (BlankScreen)
(*BlankScreen)(pScrn, FALSE);
usleep(50000); /* let VCO stabilise */
cnt = 0;
sync = 200000;
while ((inb(status) & maskval) == 0x00)
if (sync-- == 0) goto finish;
/* Something appears to be happening, so reset sync count */
sync = 200000;
while ((inb(status) & maskval) == maskval)
if (sync-- == 0) goto finish;
/* Something appears to be happening, so reset sync count */
sync = 200000;
while ((inb(status) & maskval) == 0x00)
if (sync-- == 0) goto finish;
for (rcnt = 0; rcnt < 5; rcnt++)
{
while (!(inb(status) & maskval))
cnt++;
while ((inb(status) & maskval))
cnt++;
}
finish:
pScrn->clock[i] = cnt ? cnt : -1;
if (BlankScreen)
(*BlankScreen)(pScrn, TRUE);
}
for (i = 0; i < num; i++)
{
if (i != knownclkindex)
{
if (pScrn->clock[i] == -1)
{
pScrn->clock[i] = 0;
}
else
{
pScrn->clock[i] = (int)(0.5 +
(((float)knownclkvalue) * pScrn->clock[knownclkindex]) /
(pScrn->clock[i]));
/* Round to nearest 10KHz */
pScrn->clock[i] += 5;
pScrn->clock[i] /= 10;
pScrn->clock[i] *= 10;
}
}
}
pScrn->clock[knownclkindex] = knownclkvalue;
pScrn->numClocks = num;
/* Restore registers that were written on */
(*ClockFunc)(pScrn, CLK_REG_RESTORE);
}
const char *
xf86GetVisualName(int visual)
{

View File

@ -78,7 +78,9 @@
#include "picturestr.h"
#include "xf86Bus.h"
#ifdef XSERVER_LIBPCIACCESS
#include "xf86VGAarbiter.h"
#endif
#include "globals.h"
#include "xserver-properties.h"
@ -88,7 +90,6 @@
#endif
#include <hotplug.h>
#ifdef XF86PM
void (*xf86OSPMClose)(void) = NULL;
#endif
@ -1355,6 +1356,7 @@ ddxProcessArgument(int argc, char **argv, int i)
xf86DoShowOptions = TRUE;
return 1;
}
#ifdef XSERVER_LIBPCIACCESS
if (!strcmp(argv[i], "-isolateDevice"))
{
CHECK_FOR_REQUIRED_ARGUMENT();
@ -1364,6 +1366,7 @@ ddxProcessArgument(int argc, char **argv, int i)
xf86PciIsolateDevice(argv[i]);
return 2;
}
#endif
/* Notice cmdline xkbdir, but pass to dix as well */
if (!strcmp(argv[i], "-xkbdir"))
{
@ -1432,7 +1435,9 @@ ddxUseMsg(void)
#endif
ErrorF("-allowMouseOpenFail start server even if the mouse can't be initialized\n");
ErrorF("-ignoreABI make module ABI mismatches non-fatal\n");
#ifdef XSERVER_LIBPCIACCESS
ErrorF("-isolateDevice bus_id restrict device resets to bus_id (PCI only)\n");
#endif
ErrorF("-version show the server version\n");
ErrorF("-showDefaultModulePath show the server default module path\n");
ErrorF("-showDefaultLibPath show the server default library path\n");

View File

@ -82,7 +82,7 @@ typedef enum {
* mask is 0xFFFF0000.
*/
#define ABI_ANSIC_VERSION SET_ABI_VERSION(0, 4)
#define ABI_VIDEODRV_VERSION SET_ABI_VERSION(11, 0)
#define ABI_VIDEODRV_VERSION SET_ABI_VERSION(12, 0)
#define ABI_XINPUT_VERSION SET_ABI_VERSION(14, 0)
#define ABI_EXTENSION_VERSION SET_ABI_VERSION(6, 0)
#define ABI_FONT_VERSION SET_ABI_VERSION(0, 6)

View File

@ -31,8 +31,6 @@
#include "xorg-config.h"
#include "xf86VGAarbiter.h"
#ifdef HAVE_PCI_DEVICE_VGAARB_INIT
#include "xf86VGAarbiterPriv.h"
#include "xf86Bus.h"
#include "xf86Priv.h"
@ -1112,16 +1110,3 @@ VGAarbiterCompositeRects(CARD8 op, PicturePtr pDst, xRenderColor *color, int nRe
VGAPut();
PICTURE_EPILOGUE (CompositeRects, VGAarbiterCompositeRects);
}
#else
/* dummy functions */
void xf86VGAarbiterInit(void) {}
void xf86VGAarbiterFini(void) {}
void xf86VGAarbiterLock(ScrnInfoPtr pScrn) {}
void xf86VGAarbiterUnlock(ScrnInfoPtr pScrn) {}
Bool xf86VGAarbiterAllowDRI(ScreenPtr pScreen) { return TRUE; }
void xf86VGAarbiterScrnInit(ScrnInfoPtr pScrn) {}
void xf86VGAarbiterDeviceDecodes(ScrnInfoPtr pScrn, int rsrc) {}
Bool xf86VGAarbiterWrapFunctions(void) { return FALSE; }
#endif

View File

@ -54,8 +54,10 @@ xf86ClaimFbSlot(DriverPtr drvp, int chipset, GDevPtr dev, Bool active)
EntityPtr p;
int num;
#ifdef XSERVER_LIBPCIACCESS
if (pciSlotClaimed)
return -1;
#endif
#if defined(__sparc__) || defined (__sparc64__)
if (sbusSlotClaimed)
return -1;

View File

@ -121,12 +121,10 @@ xf86PciProbe(void)
xf86PciVideoInfo[num - 1] = info;
pci_device_probe(info);
#ifdef HAVE_PCI_DEVICE_IS_BOOT_VGA
if (pci_device_is_boot_vga(info)) {
primaryBus.type = BUS_PCI;
primaryBus.id.pci = info;
}
#endif
info->user_data = 0;
}
}
@ -235,11 +233,6 @@ xf86ClaimPciSlot(struct pci_device * d, DriverPtr drvp,
xf86AddDevToEntity(num, dev);
pciSlotClaimed = TRUE;
if (active) {
/* Map in this domain's I/O space */
p->domainIO = xf86MapLegacyIO(d);
}
return num;
} else
return -1;
@ -1357,3 +1350,15 @@ xf86PciConfigureNewDev(void *busData, struct pci_device *pVideo,
if (*chipset < 0)
*chipset = (pVideo->vendor_id << 16) | pVideo->device_id;
}
struct pci_io_handle *
xf86MapLegacyIO(struct pci_device *dev)
{
return pci_legacy_open_io(dev, 0, 64 * 1024);
}
void
xf86UnmapLegacyIO(struct pci_device *dev, struct pci_io_handle *handle)
{
pci_device_close_io(dev, handle);
}

View File

@ -41,9 +41,6 @@
#include "colormapst.h"
#include "xf86Module.h"
#include "xf86Opt.h"
#include "xf86Pci.h"
#include <pciaccess.h>
/**
* Integer type that is of the size of the addressable memory (machine size).
@ -309,6 +306,8 @@ typedef struct {
struct _SymTabRec;
struct _PciChipsets;
struct pci_device;
typedef struct _DriverRec {
int driverVersion;
char * driverName;
@ -350,8 +349,6 @@ typedef enum {
BUS_last /* Keep last */
} BusType;
struct pci_device;
typedef struct {
int fbNum;
} SbusBusId;
@ -742,7 +739,6 @@ typedef struct _ScrnInfoRec {
unsigned long biosBase; /* Base address of video BIOS */
unsigned long memPhysBase; /* Physical address of FB */
unsigned long fbOffset; /* Offset of FB in the above */
IOADDRESS domainIOBase; /* Domain I/O base address */
int memClk; /* memory clock */
int textClockFreq; /* clock of text mode */
Bool flipPixels; /* swap default black/white */

View File

@ -30,21 +30,21 @@ INCLUDES = @XORG_INCS@ \
-I$(top_srcdir)/miext/shadow \
-I$(top_srcdir)/glx
libdbe_la_LDFLAGS = -avoid-version
libdbe_la_LDFLAGS = -module -avoid-version
libdbe_la_LIBADD = $(top_builddir)/dbe/libdbe.la
libdbe_la_SOURCES = dbemodule.c
libfb_la_LDFLAGS = -avoid-version
libfb_la_LDFLAGS = -module -avoid-version
libfb_la_LIBADD = $(top_builddir)/fb/libfb.la
libfb_la_SOURCES = $(top_builddir)/fb/fbcmap_mi.c fbmodule.c
libfb_la_CFLAGS = $(AM_CFLAGS)
libwfb_la_LDFLAGS = -avoid-version
libwfb_la_LDFLAGS = -module -avoid-version
libwfb_la_LIBADD = $(top_builddir)/fb/libwfb.la
libwfb_la_SOURCES = $(top_builddir)/fb/fbcmap_mi.c fbmodule.c
libwfb_la_CFLAGS = $(AM_CFLAGS) -DFB_ACCESS_WRAPPER
libglx_la_LDFLAGS = -avoid-version
libglx_la_LDFLAGS = -module -avoid-version
if AIGLX_DRI_LOADER
GLXDRI_LIBRARY = $(top_builddir)/glx/libglxdri.la
endif
@ -53,11 +53,11 @@ libglx_la_LIBADD = \
$(GLXDRI_LIBRARY)
libglx_la_SOURCES = glxmodule.c
librecord_la_LDFLAGS = -avoid-version
librecord_la_LDFLAGS = -module -avoid-version
librecord_la_LIBADD = $(top_builddir)/record/librecord.la
librecord_la_SOURCES = recordmod.c
libshadow_la_LDFLAGS = -avoid-version
libshadow_la_LDFLAGS = -module -avoid-version
libshadow_la_LIBADD = $(top_builddir)/miext/shadow/libshadow.la
libshadow_la_SOURCES = shmodule.c

View File

@ -21,7 +21,7 @@ INCLUDES = @XORG_INCS@ \
-I$(top_srcdir)/hw/xfree86/loader \
-I$(top_srcdir)/miext/shadow
libextmod_la_LDFLAGS = -avoid-version
libextmod_la_LDFLAGS = -module -avoid-version
libextmod_la_SOURCES = modinit.c \
modinit.h \
$(DGA_SRCS) \

View File

@ -2,7 +2,7 @@ SUBDIRS = man
module_LTLIBRARIES = libexa.la
libexa_la_LDFLAGS = -avoid-version
libexa_la_LDFLAGS = -module -avoid-version
INCLUDES = \
$(XORG_INCS) \

View File

@ -2,7 +2,7 @@ SUBDIRS = man
module_LTLIBRARIES = libfbdevhw.la
libfbdevhw_la_LDFLAGS = -avoid-version
libfbdevhw_la_LDFLAGS = -module -avoid-version
if FBDEVHW
libfbdevhw_la_SOURCES = fbdevhw.c

View File

@ -5,8 +5,6 @@
#include "xf86str.h"
#include "colormapst.h"
#include <pciaccess.h>
#define FBDEVHW_PACKED_PIXELS 0 /* Packed Pixels */
#define FBDEVHW_PLANES 1 /* Non interleaved planes */
#define FBDEVHW_INTERLEAVED_PLANES 2 /* Interleaved planes */

View File

@ -62,62 +62,6 @@ static void UnmapVRam(xf86Int10InfoPtr pInt);
static void *sysMem = NULL;
/**
* Read legacy VGA video BIOS associated with specified domain.
*
* Attempts to read up to 128KiB of legacy VGA video BIOS.
*
* \return
* The number of bytes read on success or -1 on failure.
*
* \bug
* PCI ROMs can contain multiple BIOS images (e.g., OpenFirmware, x86 VGA,
* etc.). How do we know that \c pci_device_read_rom will return the
* legacy VGA BIOS image?
*/
#ifndef _PC
static int
read_legacy_video_BIOS(struct pci_device *dev, unsigned char *Buf)
{
const ADDRESS Base = 0xC0000;
const int Len = 0x10000 * 2;
const int pagemask = getpagesize() - 1;
const ADDRESS offset = Base & ~pagemask;
const unsigned long size = ((Base + Len + pagemask) & ~pagemask) - offset;
unsigned char *ptr, *src;
int len;
/* Try to use the civilized PCI interface first.
*/
if (pci_device_read_rom(dev, Buf) == 0) {
return dev->rom_size;
}
ptr = xf86MapDomainMemory(-1, VIDMEM_READONLY, dev, offset, size);
if (!ptr)
return -1;
/* Using memcpy() here can hang the system */
src = ptr + (Base - offset);
for (len = 0; len < (Len / 2); len++) {
Buf[len] = src[len];
}
if ((Buf[0] == 0x55) && (Buf[1] == 0xAA) && (Buf[2] > 0x80)) {
for ( /* empty */ ; len < Len; len++) {
Buf[len] = src[len];
}
}
xf86UnMapVidMem(-1, ptr, size);
return Len;
}
#endif /* _PC */
xf86Int10InfoPtr
xf86ExtendedInitInt10(int entityIndex, int Flags)
{
@ -159,8 +103,8 @@ xf86ExtendedInitInt10(int entityIndex, int Flags)
MapVRam(pInt);
#ifdef _PC
if (!sysMem)
sysMem = xf86MapVidMem(screen, VIDMEM_MMIO, V_BIOS,
BIOS_SIZE + SYS_BIOS - V_BIOS);
pci_device_map_legacy(pInt->dev, V_BIOS, BIOS_SIZE + SYS_BIOS - V_BIOS,
PCI_DEV_MAP_FLAG_WRITABLE, &sysMem);
INTPriv(pInt)->sysMem = sysMem;
if (xf86ReadBIOS(0, 0, base, LOW_PAGE_SIZE) < 0) {
@ -232,7 +176,7 @@ xf86ExtendedInitInt10(int entityIndex, int Flags)
*/
vbiosMem = (char *)base + V_BIOS;
memset(vbiosMem, 0, 2 * V_BIOS_SIZE);
if (read_legacy_video_BIOS(pInt->dev, vbiosMem) < V_BIOS_SIZE) {
if (pci_device_read_rom(pInt->dev, vbiosMem) < V_BIOS_SIZE) {
xf86DrvMsg(screen, X_WARNING,
"Unable to retrieve all of segment 0x0C0000.\n");
}
@ -294,10 +238,8 @@ MapVRam(xf86Int10InfoPtr pInt)
int pagesize = getpagesize();
int size = ((VRAM_SIZE + pagesize - 1) / pagesize) * pagesize;
INTPriv(pInt)->vRam = xf86MapDomainMemory(pInt->scrnIndex, VIDMEM_MMIO,
pInt->dev, V_RAM, size);
pInt->ioBase = xf86Screens[pInt->scrnIndex]->domainIOBase;
pci_device_map_legacy(pInt->dev, V_RAM, size, PCI_DEV_MAP_FLAG_WRITABLE, &(INTPriv(pInt)->vRam));
pInt->io = pci_legacy_open_io(pInt->dev, 0, 64 * 1024);
}
static void
@ -307,7 +249,9 @@ UnmapVRam(xf86Int10InfoPtr pInt)
int pagesize = getpagesize();
int size = ((VRAM_SIZE + pagesize - 1)/pagesize) * pagesize;
xf86UnMapVidMem(screen, INTPriv(pInt)->vRam, size);
pci_device_unmap_legacy(pInt->dev, INTPriv(pInt)->vRam, size);
pci_device_close_io(pInt->dev, pInt->io);
pInt->io = NULL;
}
Bool

View File

@ -331,7 +331,7 @@ x_inb(CARD16 port)
}
#endif /* __NOT_YET__ */
} else if (!pciCfg1inb(port, &val)) {
val = inb(Int10Current->ioBase + port);
val = pci_io_read8(Int10Current->io, port);
if (PRINT_PORT && DEBUG_IO_TRACE())
ErrorF(" inb(%#x) = %2.2x\n", port, val);
}
@ -353,7 +353,7 @@ x_inw(CARD16 port)
X_GETTIMEOFDAY(&tv);
val = (CARD16)(tv.tv_usec / 3);
} else if (!pciCfg1inw(port, &val)) {
val = inw(Int10Current->ioBase + port);
val = pci_io_read16(Int10Current->io, port);
if (PRINT_PORT && DEBUG_IO_TRACE())
ErrorF(" inw(%#x) = %4.4x\n", port, val);
}
@ -387,7 +387,7 @@ x_outb(CARD16 port, CARD8 val)
} else if (!pciCfg1outb(port, val)) {
if (PRINT_PORT && DEBUG_IO_TRACE())
ErrorF(" outb(%#x, %2.2x)\n", port, val);
outb(Int10Current->ioBase + port, val);
pci_io_write8(Int10Current->io, port, val);
}
}
@ -398,7 +398,7 @@ x_outw(CARD16 port, CARD16 val)
if (!pciCfg1outw(port, val)) {
if (PRINT_PORT && DEBUG_IO_TRACE())
ErrorF(" outw(%#x, %4.4x)\n", port, val);
outw(Int10Current->ioBase + port, val);
pci_io_write16(Int10Current->io, port, val);
}
}
@ -408,7 +408,7 @@ x_inl(CARD16 port)
CARD32 val;
if (!pciCfg1in(port, &val)) {
val = inl(Int10Current->ioBase + port);
val = pci_io_read32(Int10Current->io, port);
if (PRINT_PORT && DEBUG_IO_TRACE())
ErrorF(" inl(%#x) = %8.8" PRIx32 "\n", port, val);
}
@ -421,7 +421,7 @@ x_outl(CARD16 port, CARD32 val)
if (!pciCfg1out(port, val)) {
if (PRINT_PORT && DEBUG_IO_TRACE())
ErrorF(" outl(%#x, %8.8" PRIx32 ")\n", port, val);
outl(Int10Current->ioBase + port, val);
pci_io_write32(Int10Current->io, port, val);
}
}
@ -475,7 +475,7 @@ static struct pci_device*
pci_device_for_cfg_address (CARD32 addr)
{
struct pci_device *dev = NULL;
PCITAG tag = PCI_TAG(addr);
CARD32 tag = PCI_TAG(addr);
struct pci_slot_match slot_match = {
.domain = PCI_DOM_FROM_TAG(tag),
.bus = PCI_BUS_NO_DOMAIN(PCI_BUS_FROM_TAG(tag)),
@ -650,29 +650,29 @@ bios_checksum(const CARD8 *start, int size)
void
LockLegacyVGA(xf86Int10InfoPtr pInt, legacyVGAPtr vga)
{
vga->save_msr = inb(pInt->ioBase + 0x03CC);
vga->save_vse = inb(pInt->ioBase + 0x03C3);
vga->save_msr = pci_io_read8(pInt->io, 0x03CC);
vga->save_vse = pci_io_read8(pInt->io, 0x03C3);
#ifndef __ia64__
vga->save_46e8 = inb(pInt->ioBase + 0x46E8);
vga->save_46e8 = pci_io_read8(pInt->io, 0x46E8);
#endif
vga->save_pos102 = inb(pInt->ioBase + 0x0102);
outb(pInt->ioBase + 0x03C2, ~(CARD8)0x03 & vga->save_msr);
outb(pInt->ioBase + 0x03C3, ~(CARD8)0x01 & vga->save_vse);
vga->save_pos102 = pci_io_read8(pInt->io, 0x0102);
pci_io_write8(pInt->io, 0x03C2, ~(CARD8)0x03 & vga->save_msr);
pci_io_write8(pInt->io, 0x03C3, ~(CARD8)0x01 & vga->save_vse);
#ifndef __ia64__
outb(pInt->ioBase + 0x46E8, ~(CARD8)0x08 & vga->save_46e8);
pci_io_write8(pInt->io, 0x46E8, ~(CARD8)0x08 & vga->save_46e8);
#endif
outb(pInt->ioBase + 0x0102, ~(CARD8)0x01 & vga->save_pos102);
pci_io_write8(pInt->io, 0x0102, ~(CARD8)0x01 & vga->save_pos102);
}
void
UnlockLegacyVGA(xf86Int10InfoPtr pInt, legacyVGAPtr vga)
{
outb(pInt->ioBase + 0x0102, vga->save_pos102);
pci_io_write8(pInt->io, 0x0102, vga->save_pos102);
#ifndef __ia64__
outb(pInt->ioBase + 0x46E8, vga->save_46e8);
pci_io_write8(pInt->io, 0x46E8, vga->save_46e8);
#endif
outb(pInt->ioBase + 0x03C3, vga->save_vse);
outb(pInt->ioBase + 0x03C2, vga->save_msr);
pci_io_write8(pInt->io, 0x03C3, vga->save_vse);
pci_io_write8(pInt->io, 0x03C2, vga->save_msr);
}
#if defined (_PC)
@ -680,10 +680,12 @@ static void
SetResetBIOSVars(xf86Int10InfoPtr pInt, Bool set)
{
int pagesize = getpagesize();
unsigned char* base = xf86MapVidMem(pInt->scrnIndex,
VIDMEM_MMIO, 0, pagesize);
unsigned char* base;
int i;
if (pci_device_map_legacy(pInt->dev, 0, pagesize, PCI_DEV_MAP_FLAG_WRITABLE, (void **)&base))
return; /* eek */
if (set) {
for (i = BIOS_SCRATCH_OFF; i < BIOS_SCRATCH_END; i++)
MEM_WW(pInt, i, *(base + i));
@ -692,7 +694,7 @@ SetResetBIOSVars(xf86Int10InfoPtr pInt, Bool set)
*(base + i) = MEM_RW(pInt, i);
}
xf86UnMapVidMem(pInt->scrnIndex,base,pagesize);
pci_device_unmap_legacy(pInt->dev, base, pagesize);
}
void
@ -706,7 +708,9 @@ xf86Int10SaveRestoreBIOSVars(xf86Int10InfoPtr pInt, Bool save)
|| (!save && !pInt->BIOSScratch))
return;
base = xf86MapVidMem(pInt->scrnIndex, VIDMEM_MMIO, 0, pagesize);
if (pci_device_map_legacy(pInt->dev, 0, pagesize, PCI_DEV_MAP_FLAG_WRITABLE, (void **)&base))
return; /* eek */
base += BIOS_SCRATCH_OFF;
if (save) {
if ((pInt->BIOSScratch
@ -722,7 +726,7 @@ xf86Int10SaveRestoreBIOSVars(xf86Int10InfoPtr pInt, Bool save)
}
}
xf86UnMapVidMem(pInt->scrnIndex,base - BIOS_SCRATCH_OFF ,pagesize);
pci_device_unmap_legacy(pInt->dev, base, pagesize);
}
#endif

View File

@ -84,7 +84,7 @@ int42_handler(xf86Int10InfoPtr pInt)
/* Leave: Nothing */
/* Implemented (except for clearing the screen) */
{ /* Localise */
IOADDRESS ioport;
unsigned int ioport;
int i;
CARD16 int1d, regvals, tmp;
CARD8 mode, cgamode, cgacolour;
@ -172,18 +172,15 @@ int42_handler(xf86Int10InfoPtr pInt)
/* Rows */
MEM_WB(pInt, 0x0484, (25 - 1));
/* Remap I/O port number into its domain */
ioport += pInt->ioBase;
/* Programme the mode */
outb(ioport + 4, cgamode & 0x37); /* Turn off screen */
/* Program the mode */
pci_io_write8(pInt->io, ioport + 4, cgamode & 0x37); /* Turn off screen */
for (i = 0; i < 0x10; i++) {
tmp = MEM_RB(pInt, regvals + i);
outb(ioport, i);
outb(ioport + 1, tmp);
pci_io_write8(pInt->io, ioport, i);
pci_io_write8(pInt->io, ioport + 1, tmp);
}
outb(ioport + 5, cgacolour); /* Select colour mode */
outb(ioport + 4, cgamode); /* Turn on screen */
pci_io_write8(pInt->io, ioport + 5, cgacolour); /* Select colour mode */
pci_io_write8(pInt->io, ioport + 4, cgamode); /* Turn on screen */
}
break;
@ -194,15 +191,15 @@ int42_handler(xf86Int10InfoPtr pInt)
/* Leave: Nothing */
/* Implemented */
{ /* Localise */
IOADDRESS ioport = MEM_RW(pInt, 0x0463) + pInt->ioBase;
unsigned int ioport = MEM_RW(pInt, 0x0463);
MEM_WB(pInt, 0x0460, X86_CL);
MEM_WB(pInt, 0x0461, X86_CH);
outb(ioport, 0x0A);
outb(ioport + 1, X86_CH);
outb(ioport, 0x0B);
outb(ioport + 1, X86_CL);
pci_io_write8(pInt->io, ioport, 0x0A);
pci_io_write8(pInt->io, ioport + 1, X86_CH);
pci_io_write8(pInt->io, ioport, 0x0B);
pci_io_write8(pInt->io, ioport + 1, X86_CL);
}
break;
@ -214,7 +211,7 @@ int42_handler(xf86Int10InfoPtr pInt)
/* Leave: Nothing */
/* Implemented */
{ /* Localise */
IOADDRESS ioport;
unsigned int ioport;
CARD16 offset;
MEM_WB(pInt, (X86_BH << 1) + 0x0450, X86_DL);
@ -226,11 +223,11 @@ int42_handler(xf86Int10InfoPtr pInt)
offset = (X86_DH * MEM_RW(pInt, 0x044A)) + X86_DL;
offset += MEM_RW(pInt, 0x044E) << 1;
ioport = MEM_RW(pInt, 0x0463) + pInt->ioBase;
outb(ioport, 0x0E);
outb(ioport + 1, offset >> 8);
outb(ioport, 0x0F);
outb(ioport + 1, offset & 0xFF);
ioport = MEM_RW(pInt, 0x0463);
pci_io_write8(pInt->io, ioport, 0x0E);
pci_io_write8(pInt->io, ioport + 1, offset >> 8);
pci_io_write8(pInt->io, ioport, 0x0F);
pci_io_write8(pInt->io, ioport + 1, offset & 0xFF);
}
break;
@ -276,7 +273,7 @@ int42_handler(xf86Int10InfoPtr pInt)
/* Leave: Nothing */
/* Implemented */
{ /* Localise */
IOADDRESS ioport = MEM_RW(pInt, 0x0463) + pInt->ioBase;
unsigned int ioport = MEM_RW(pInt, 0x0463);
CARD16 start;
CARD8 x, y;
@ -287,10 +284,10 @@ int42_handler(xf86Int10InfoPtr pInt)
start <<= 1;
/* Update start address */
outb(ioport, 0x0C);
outb(ioport + 1, start >> 8);
outb(ioport, 0x0D);
outb(ioport + 1, start & 0xFF);
pci_io_write8(pInt->io, ioport, 0x0C);
pci_io_write8(pInt->io, ioport + 1, start >> 8);
pci_io_write8(pInt->io, ioport, 0x0D);
pci_io_write8(pInt->io, ioport + 1, start & 0xFF);
/* Switch cursor position */
y = MEM_RB(pInt, (X86_AL << 1) + 0x0450);
@ -298,10 +295,10 @@ int42_handler(xf86Int10InfoPtr pInt)
start += (y * MEM_RW(pInt, 0x044A)) + x;
/* Update cursor position */
outb(ioport, 0x0E);
outb(ioport + 1, start >> 8);
outb(ioport, 0x0F);
outb(ioport + 1, start & 0xFF);
pci_io_write8(pInt->io, ioport, 0x0E);
pci_io_write8(pInt->io, ioport + 1, start >> 8);
pci_io_write8(pInt->io, ioport, 0x0F);
pci_io_write8(pInt->io, ioport + 1, start & 0xFF);
}
break;
@ -426,7 +423,7 @@ int42_handler(xf86Int10InfoPtr pInt)
/* Leave: Nothing */
/* Implemented */
{ /* Localise */
IOADDRESS ioport = MEM_RW(pInt, 0x0463) + 5 + pInt->ioBase;
unsigned int ioport = MEM_RW(pInt, 0x0463) + 5;
CARD8 cgacolour = MEM_RB(pInt, 0x0466);
if (X86_BH) {
@ -438,7 +435,7 @@ int42_handler(xf86Int10InfoPtr pInt)
}
MEM_WB(pInt, 0x0466, cgacolour);
outb(ioport, cgacolour);
pci_io_write8(pInt->io, ioport, cgacolour);
}
break;

View File

@ -41,7 +41,7 @@ typedef struct {
int flags;
int stackseg;
struct pci_device *dev;
IOADDRESS ioBase;
struct pci_io_handle *io;
} xf86Int10InfoRec, *xf86Int10InfoPtr;
typedef struct _int10Mem {

View File

@ -3090,6 +3090,7 @@ xf86_crtc_box_area(BoxPtr box)
return (int) (box->x2 - box->x1) * (int) (box->y2 - box->y1);
}
#ifdef XV
/*
* Return the crtc covering 'box'. If two crtcs cover a portion of
* 'box', then prefer 'desired'. If 'desired' is NULL, then prefer the crtc
@ -3178,6 +3179,7 @@ xf86_crtc_clip_video_helper(ScrnInfoPtr pScrn,
return ret;
}
#endif
xf86_crtc_notify_proc_ptr
xf86_wrap_crtc_notify (ScreenPtr screen, xf86_crtc_notify_proc_ptr new)

View File

@ -956,6 +956,7 @@ xf86_cursors_fini (ScreenPtr screen);
extern _X_EXPORT void
xf86CrtcTransformCursorPos (xf86CrtcPtr crtc, int *x, int *y);
#ifdef XV
/*
* For overlay video, compute the relevant CRTC and
* clip video to that.
@ -974,6 +975,7 @@ xf86_crtc_clip_video_helper(ScrnInfoPtr pScrn,
RegionPtr reg,
INT32 width,
INT32 height);
#endif
extern _X_EXPORT xf86_crtc_notify_proc_ptr
xf86_wrap_crtc_notify (ScreenPtr pScreen, xf86_crtc_notify_proc_ptr new);

View File

@ -33,6 +33,7 @@
#include <string.h>
#include <stdio.h>
#include <X11/Xarch.h>
#include "xf86.h"
#include "xf86DDC.h"
#include "xf86Crtc.h"

View File

@ -1,5 +1,5 @@
SUBDIRS = bus @XORG_OS_SUBDIR@ misc $(DRI_SUBDIRS)
DIST_SUBDIRS = bsd bus misc linux solaris hurd
DIST_SUBDIRS = bsd bus misc linux solaris stub hurd
sdk_HEADERS = xf86_OSproc.h xf86_OSlib.h
@ -16,6 +16,3 @@ libxorgos_la_LIBADD = @XORG_OS_SUBDIR@/lib@XORG_OS_SUBDIR@.la \
AM_CFLAGS = $(DIX_CFLAGS)
# FIXME: These don't seem to be used anywhere
EXTRA_DIST += \
shared/bios_devmem.c

View File

@ -202,10 +202,8 @@ xf86OSInitVidMem(VidMemInfoPtr pVidMem)
pVidMem->mapMem = mapVidMem;
pVidMem->unmapMem = unmapVidMem;
#if HAVE_PCI_SYSTEM_INIT_DEV_MEM
if (useDevMem)
pci_system_init_dev_mem(devMemFd);
#endif
#ifdef HAS_MTRR_SUPPORT
if (useDevMem) {

View File

@ -1,10 +1,9 @@
noinst_LTLIBRARIES = libbus.la
sdk_HEADERS = xf86Pci.h
PCI_SOURCES = Pci.c Pci.h
if XORG_BUS_LINUXPCI
PCI_SOURCES += linuxPci.c
PCI_SOURCES =
if XORG_BUS_PCI
PCI_SOURCES += Pci.c Pci.h
endif
if XORG_BUS_BSDPCI
@ -16,7 +15,7 @@ PLATFORM_SOURCES = Sbus.c
sdk_HEADERS += xf86Sbus.h
endif
libbus_la_SOURCES = $(PCI_SOURCES) $(PLATFORM_SOURCES)
libbus_la_SOURCES = $(PCI_SOURCES) $(PLATFORM_SOURCES) nobus.c
INCLUDES = $(XORG_INCS)

View File

@ -126,12 +126,6 @@
#include "Pci.h"
PCITAG
pciTag(int busnum, int devnum, int funcnum)
{
return(PCI_MAKE_TAG(busnum,devnum,funcnum));
}
Bool
xf86scanpci(void)
{
@ -140,7 +134,7 @@ xf86scanpci(void)
success = (pci_system_init() == 0);
/* choose correct platform/OS specific PCI init routine */
ARCH_PCI_INIT();
osPciInit();
return success;
}

View File

@ -137,20 +137,14 @@
#define PCI_BUS_NO_DOMAIN(bus) ((bus) & 0xffu)
#define PCI_TAG_NO_DOMAIN(tag) ((tag) & 0x00ffff00u)
#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || \
#if defined(linux)
#define osPciInit(x) do {} while (0)
#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || \
defined(__OpenBSD__) || defined(__NetBSD__) || \
defined(__DragonFly__) || defined(__sun) || defined(__GNU__)
#define ARCH_PCI_INIT bsdPciInit
#endif
#if defined(linux)
#define ARCH_PCI_INIT linuxPciInit
#endif /* defined(linux) */
#ifndef ARCH_PCI_INIT
extern void osPciInit(void);
#else
#error No PCI support available for this architecture/OS combination
#endif
extern void ARCH_PCI_INIT(void);
#endif /* _PCI_H */

View File

@ -48,22 +48,8 @@
#include "pciaccess.h"
pointer
xf86MapDomainMemory(int ScreenNum, int Flags, struct pci_device *dev,
ADDRESS Base, unsigned long Size)
{
return xf86MapVidMem(ScreenNum, Flags, Base, Size);
}
IOADDRESS
xf86MapLegacyIO(struct pci_device *dev)
{
(void)dev;
return 0;
}
void
bsdPciInit(void)
osPciInit(void)
{
xf86InitVidMem();
}

View File

@ -1,450 +0,0 @@
/*
* Copyright 1998 by Concurrent Computer Corporation
*
* Permission to use, copy, modify, distribute, and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and that
* both that copyright notice and this permission notice appear in
* supporting documentation, and that the name of Concurrent Computer
* Corporation not be used in advertising or publicity pertaining to
* distribution of the software without specific, written prior
* permission. Concurrent Computer Corporation makes no representations
* about the suitability of this software for any purpose. It is
* provided "as is" without express or implied warranty.
*
* CONCURRENT COMPUTER CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD
* TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
* AND FITNESS, IN NO EVENT SHALL CONCURRENT COMPUTER CORPORATION BE
* LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
* DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
* ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
* SOFTWARE.
*
* Copyright 1998 by Metro Link Incorporated
*
* Permission to use, copy, modify, distribute, and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and that
* both that copyright notice and this permission notice appear in
* supporting documentation, and that the name of Metro Link
* Incorporated not be used in advertising or publicity pertaining to
* distribution of the software without specific, written prior
* permission. Metro Link Incorporated makes no representations
* about the suitability of this software for any purpose. It is
* provided "as is" without express or implied warranty.
*
* METRO LINK INCORPORATED DISCLAIMS ALL WARRANTIES WITH REGARD
* TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
* AND FITNESS, IN NO EVENT SHALL METRO LINK INCORPORATED BE
* LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
* DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
* ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
* SOFTWARE.
*/
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
#endif
#include <stdio.h>
#include "xf86_OSlib.h"
#include "Pci.h"
static const struct pci_id_match match_host_bridge = {
PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_MATCH_ANY,
(PCI_CLASS_BRIDGE << 16) | (PCI_SUBCLASS_BRIDGE_HOST << 8),
0x0000ffff00, 0
};
#define MAX_DOMAINS 257
static pointer DomainMmappedIO[MAX_DOMAINS];
void
linuxPciInit(void)
{
memset(DomainMmappedIO, 0, sizeof(DomainMmappedIO));
}
/**
* \bug
* The generation of the procfs file name for the domain != 0 case may not be
* correct.
*/
static int
linuxPciOpenFile(struct pci_device *dev, Bool write)
{
static struct pci_device *last_dev = NULL;
static int fd = -1,is_write = 0;
char file[64];
struct stat ignored;
static int is26 = -1;
if (dev == NULL) {
return -1;
}
if (is26 == -1) {
is26 = (stat("/sys/bus/pci", &ignored) < 0) ? 0 : 1;
}
if (fd == -1 || (write && (!is_write)) || (last_dev != dev)) {
if (fd != -1) {
close(fd);
fd = -1;
}
if (is26) {
sprintf(file,"/sys/bus/pci/devices/%04u:%02x:%02x.%01x/config",
dev->domain, dev->bus, dev->dev, dev->func);
} else {
if (dev->domain == 0) {
sprintf(file,"/proc/bus/pci/%02x", dev->bus);
if (stat(file, &ignored) < 0) {
sprintf(file, "/proc/bus/pci/0000:%02x/%02x.%1x",
dev->bus, dev->dev, dev->func);
} else {
sprintf(file, "/proc/bus/pci/%02x/%02x.%1x",
dev->bus, dev->dev, dev->func);
}
} else {
sprintf(file,"/proc/bus/pci/%02x%02x", dev->domain, dev->bus);
if (stat(file, &ignored) < 0) {
sprintf(file, "/proc/bus/pci/%04x:%04x/%02x.%1x",
dev->domain, dev->bus, dev->dev, dev->func);
} else {
sprintf(file, "/proc/bus/pci/%02x%02x/%02x.%1x",
dev->domain, dev->bus, dev->dev, dev->func);
}
}
}
if (write) {
fd = open(file,O_RDWR);
if (fd != -1) is_write = TRUE;
} else {
switch (is_write) {
case TRUE:
fd = open(file,O_RDWR);
if (fd > -1)
break;
default:
fd = open(file,O_RDONLY);
is_write = FALSE;
}
}
last_dev = dev;
}
return fd;
}
/*
* Compiling the following simply requires the presence of <linux/pci.c>.
* Actually running this is another matter altogether...
*
* This scheme requires that the kernel allow mmap()'ing of a host bridge's I/O
* and memory spaces through its /proc/bus/pci/BUS/DFN entry. Which one is
* determined by a prior ioctl().
*
* For the sparc64 port, this means 2.4.12 or later. For ppc, this
* functionality is almost, but not quite there yet. Alpha and other kernel
* ports to multi-domain architectures still need to implement this.
*
* This scheme is also predicated on the use of an IOADDRESS compatible type to
* designate I/O addresses. Although IOADDRESS is defined as an unsigned
* integral type, it is actually the virtual address of, i.e. a pointer to, the
* I/O port to access. And so, the inX/outX macros in "compiler.h" need to be
* #define'd appropriately (as is done on SPARC's).
*
* Another requirement to port this scheme to another multi-domain architecture
* is to add the appropriate entries in the pciControllerSizes array below.
*
* TO DO: Address the deleterious reaction some host bridges have to master
* aborts. This is already done for secondary PCI buses, but not yet
* for accesses to primary buses (except for the SPARC port, where
* master aborts are avoided during PCI scans).
*/
#include <linux/pci.h>
#ifndef PCIIOC_BASE /* Ioctls for /proc/bus/pci/X/Y nodes. */
#define PCIIOC_BASE ('P' << 24 | 'C' << 16 | 'I' << 8)
/* Get controller for PCI device. */
#define PCIIOC_CONTROLLER (PCIIOC_BASE | 0x00)
/* Set mmap state to I/O space. */
#define PCIIOC_MMAP_IS_IO (PCIIOC_BASE | 0x01)
/* Set mmap state to MEM space. */
#define PCIIOC_MMAP_IS_MEM (PCIIOC_BASE | 0x02)
/* Enable/disable write-combining. */
#define PCIIOC_WRITE_COMBINE (PCIIOC_BASE | 0x03)
#endif
/* This probably shouldn't be Linux-specific */
static struct pci_device *
get_parent_bridge(struct pci_device *dev)
{
struct pci_id_match bridge_match = {
PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_MATCH_ANY,
(PCI_CLASS_BRIDGE << 16) | (PCI_SUBCLASS_BRIDGE_PCI << 8),
0
};
struct pci_device *bridge;
struct pci_device_iterator *iter;
if (dev == NULL) {
return NULL;
}
iter = pci_id_match_iterator_create(& bridge_match);
if (iter == NULL) {
return NULL;
}
while ((bridge = pci_device_next(iter)) != NULL) {
if (bridge->domain == dev->domain) {
const struct pci_bridge_info *info =
pci_device_get_bridge_info(bridge);
if (info != NULL) {
if (info->secondary_bus == dev->bus) {
break;
}
}
}
}
pci_iterator_destroy(iter);
return bridge;
}
/*
* This is ugly, but until I can extract this information from the kernel,
* it'll have to do. The default I/O space size is 64K, and 4G for memory.
* Anything else needs to go in this table. (PowerPC folk take note.)
*
* Note that Linux/SPARC userland is 32-bit, so 4G overflows to zero here.
*
* Please keep this table in ascending vendor/device order.
*/
static const struct pciSizes {
unsigned short vendor, device;
unsigned long io_size, mem_size;
} pciControllerSizes[] = {
{
PCI_VENDOR_SUN, PCI_CHIP_PSYCHO,
1U << 16, 1U << 31
},
{
PCI_VENDOR_SUN, PCI_CHIP_SCHIZO,
1U << 24, 1U << 31 /* ??? */
},
{
PCI_VENDOR_SUN, PCI_CHIP_SABRE,
1U << 24, (unsigned long)(1ULL << 32)
},
{
PCI_VENDOR_SUN, PCI_CHIP_HUMMINGBIRD,
1U << 24, (unsigned long)(1ULL << 32)
}
};
#define NUM_SIZES (sizeof(pciControllerSizes) / sizeof(pciControllerSizes[0]))
static const struct pciSizes *
linuxGetSizesStruct(const struct pci_device *dev)
{
static const struct pciSizes default_size = {
0, 0, 1U << 16, (unsigned long)(1ULL << 32)
};
int i;
/* Look up vendor/device */
if (dev != NULL) {
for (i = 0; i < NUM_SIZES; i++) {
if ((dev->vendor_id == pciControllerSizes[i].vendor)
&& (dev->device_id == pciControllerSizes[i].device)) {
return & pciControllerSizes[i];
}
}
}
/* Default to 64KB I/O and 4GB memory. */
return & default_size;
}
static __inline__ unsigned long
linuxGetIOSize(const struct pci_device *dev)
{
const struct pciSizes * const sizes = linuxGetSizesStruct(dev);
return sizes->io_size;
}
static pointer
linuxMapPci(int ScreenNum, int Flags, struct pci_device *dev,
ADDRESS Base, unsigned long Size, int mmap_ioctl)
{
/* Align to page boundary */
const ADDRESS realBase = Base & ~(getpagesize() - 1);
const ADDRESS Offset = Base - realBase;
do {
unsigned char *result;
int fd, mmapflags, prot;
xf86InitVidMem();
/* If dev is NULL, linuxPciOpenFile will return -1, and this routine
* will fail gracefully.
*/
prot = ((Flags & VIDMEM_READONLY) == 0);
if (((fd = linuxPciOpenFile(dev, prot)) < 0) ||
(ioctl(fd, mmap_ioctl, 0) < 0))
break;
/* Note: IA-64 doesn't compile this and doesn't need to */
#ifdef __ia64__
# ifndef MAP_WRITECOMBINED
# define MAP_WRITECOMBINED 0x00010000
# endif
# ifndef MAP_NONCACHED
# define MAP_NONCACHED 0x00020000
# endif
if (Flags & VIDMEM_FRAMEBUFFER)
mmapflags = MAP_SHARED | MAP_WRITECOMBINED;
else
mmapflags = MAP_SHARED | MAP_NONCACHED;
#else /* !__ia64__ */
mmapflags = (Flags & VIDMEM_FRAMEBUFFER) / VIDMEM_FRAMEBUFFER;
if (ioctl(fd, PCIIOC_WRITE_COMBINE, mmapflags) < 0)
break;
mmapflags = MAP_SHARED;
#endif /* ?__ia64__ */
if (Flags & VIDMEM_READONLY)
prot = PROT_READ;
else
prot = PROT_READ | PROT_WRITE;
result = mmap(NULL, Size + Offset, prot, mmapflags, fd, realBase);
if (!result || ((pointer)result == MAP_FAILED))
return NULL;
xf86MakeNewMapping(ScreenNum, Flags, realBase, Size + Offset, result);
return result + Offset;
} while (0);
if (mmap_ioctl == PCIIOC_MMAP_IS_MEM)
return xf86MapVidMem(ScreenNum, Flags, Base, Size);
return NULL;
}
static int
linuxOpenLegacy(struct pci_device *dev, char *name)
{
static const char PREFIX[] = "/sys/class/pci_bus/%04x:%02x/%s";
char path[sizeof(PREFIX) + 10];
int fd = -1;
while (dev != NULL) {
snprintf(path, sizeof(path) - 1, PREFIX, dev->domain, dev->bus, name);
fd = open(path, O_RDWR);
if (fd >= 0) {
return fd;
}
dev = get_parent_bridge(dev);
}
return fd;
}
/*
* xf86MapDomainMemory - memory map PCI domain memory
*
* This routine maps the memory region in the domain specified by Tag and
* returns a pointer to it. The pointer is saved for future use if it's in
* the legacy ISA memory space (memory in a domain between 0 and 1MB).
*/
pointer
xf86MapDomainMemory(int ScreenNum, int Flags, struct pci_device *dev,
ADDRESS Base, unsigned long Size)
{
int fd = -1;
pointer addr;
/*
* We use /proc/bus/pci on non-legacy addresses or if the Linux sysfs
* legacy_mem interface is unavailable.
*/
if ((Base > 1024*1024) || ((fd = linuxOpenLegacy(dev, "legacy_mem")) < 0))
return linuxMapPci(ScreenNum, Flags, dev, Base, Size,
PCIIOC_MMAP_IS_MEM);
else
addr = mmap(NULL, Size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, Base);
if (fd >= 0)
close(fd);
if (addr == NULL || addr == MAP_FAILED) {
perror("mmap failure");
FatalError("xf86MapDomainMem(): mmap() failure\n");
}
return addr;
}
/**
* Map I/O space in this domain
*
* Each domain has a legacy ISA I/O space. This routine will try to
* map it using the Linux sysfs legacy_io interface. If that fails,
* it'll fall back to using /proc/bus/pci.
*
* If the legacy_io interface \b does exist, the file descriptor (\c fd below)
* will be saved in the \c DomainMmappedIO array in the upper bits of the
* pointer. Callers will do I/O with small port numbers (<64k values), so
* the platform I/O code can extract the port number and the \c fd, \c lseek
* to the port number in the legacy_io file, and issue the read or write.
*
* This has no means of returning failure, so all errors are fatal
*/
IOADDRESS
xf86MapLegacyIO(struct pci_device *dev)
{
const int domain = dev->domain;
struct pci_device *bridge = get_parent_bridge(dev);
int fd;
if (domain >= MAX_DOMAINS)
FatalError("xf86MapLegacyIO(): domain out of range\n");
if (DomainMmappedIO[domain] == NULL) {
/* Permanently map all of I/O space */
fd = linuxOpenLegacy(bridge, "legacy_io");
if (fd < 0) {
DomainMmappedIO[domain] = linuxMapPci(-1, VIDMEM_MMIO, bridge,
0, linuxGetIOSize(bridge),
PCIIOC_MMAP_IS_IO);
}
else { /* legacy_io file exists, encode fd */
DomainMmappedIO[domain] = (pointer)(intptr_t)(fd << 24);
}
}
return (IOADDRESS)DomainMmappedIO[domain];
}

View File

@ -0,0 +1 @@
static void __noop_to_appease_ar__() { return; }

View File

@ -235,8 +235,8 @@
/* Primitive Types */
typedef unsigned long ADDRESS; /* Memory/PCI address */
typedef unsigned long IOADDRESS; /* Must be large enough for a pointer */
typedef unsigned long PCITAG;
typedef unsigned long IOADDRESS _X_DEPRECATED; /* Must be large enough for a pointer */
typedef CARD32 PCITAG _X_DEPRECATED;
typedef enum {
PCI_MEM,
@ -251,12 +251,10 @@ typedef enum {
/* Public PCI access functions */
extern _X_EXPORT PCITAG pciTag(int busnum, int devnum, int funcnum);
extern _X_EXPORT Bool xf86scanpci(void);
/* Domain access functions. Some of these probably shouldn't be public */
extern _X_EXPORT pointer xf86MapDomainMemory(int ScreenNum, int Flags, struct pci_device *dev,
ADDRESS Base, unsigned long Size);
extern _X_EXPORT IOADDRESS xf86MapLegacyIO(struct pci_device *dev);
extern _X_EXPORT struct pci_io_handle *xf86MapLegacyIO(struct pci_device *dev);
extern _X_EXPORT void xf86UnmapLegacyIO(struct pci_device *, struct pci_io_handle *);
#endif /* _XF86PCI_H */

View File

@ -1,9 +1,5 @@
noinst_LTLIBRARIES = liblinux.la
if LINUX_IA64
PLATFORM_PCI_SUPPORT = $(srcdir)/../shared/ia64Pci.c
PLATFORM_INCLUDES = -I$(srcdir)/../shared
endif
if LINUX_ALPHA
noinst_LTLIBRARIES += liblinuxev56.la
PLATFORM_PCI_SUPPORT = \

View File

@ -261,10 +261,7 @@ xf86ExtendedInitInt10(int entityIndex, int Flags)
struct pci_device *rom_device =
xf86GetPciInfoForEntity(pInt->entityIndex);
#if HAVE_PCI_DEVICE_ENABLE
pci_device_enable(rom_device);
#endif
err = pci_device_read_rom(rom_device, (unsigned char *)(V_BIOS));
if (err) {
xf86DrvMsg(screen,X_ERROR,"Cannot read V_BIOS (%s)\n",

View File

@ -1,75 +0,0 @@
/*
* Copyright 1993 by David Wexelblat <dwex@goblin.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation, and that the name of David Wexelblat not be used in
* advertising or publicity pertaining to distribution of the software without
* specific, written prior permission. David Wexelblat makes no representations
* about the suitability of this software for any purpose. It is provided
* "as is" without express or implied warranty.
*
* DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
* EVENT SHALL DAVID WEXELBLAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*
*/
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
#endif
#include <X11/X.h>
#include "xf86.h"
#include "xf86Priv.h"
#include "xf86_OSlib.h"
#include <string.h>
/*
* Read BIOS via /dev/mem.
*/
#ifndef DEV_MEM
# define DEV_MEM "/dev/mem"
#endif
int
xf86ReadBIOS(unsigned long Base, unsigned long Offset, unsigned char *Buf,
int Len)
{
int fd;
#ifdef __ia64__
if ((fd = open(DEV_MEM, O_RDONLY | O_SYNC)) < 0)
#else
if ((fd = open(DEV_MEM, O_RDONLY)) < 0)
#endif
{
xf86Msg(X_WARNING, "xf86ReadBIOS: Failed to open %s (%s)\n",
DEV_MEM, strerror(errno));
return -1;
}
if (lseek(fd, (Base+Offset), SEEK_SET) < 0)
{
xf86Msg(X_WARNING, "xf86ReadBIOS: %s seek failed (%s)\n",
DEV_MEM, strerror(errno));
close(fd);
return -1;
}
if (read(fd, Buf, Len) != Len)
{
xf86Msg(X_WARNING, "xf86ReadBIOS: %s read failed (%s)\n",
DEV_MEM, strerror(errno));
close(fd);
return -1;
}
close(fd);
return Len;
}

View File

@ -1,188 +0,0 @@
/*
* Copyright (C) 2002-2003 The XFree86 Project, Inc. All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to
* deal in the Software without restriction, including without limitation the
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Except as contained in this notice, the name of the XFree86 Project shall
* not be used in advertising or otherwise to promote the sale, use or other
* dealings in this Software without prior written authorization from the
* XFree86 Project.
*/
/*
* This file contains the glue needed to support various IA-64 chipsets.
*/
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
#endif
#include <fcntl.h>
#include <unistd.h>
#include <signal.h>
#include <dirent.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <linux/pci.h>
#include "compiler.h"
#include "Pci.h"
/*
* We use special in/out routines here since Altix platforms require the
* use of the sysfs legacy_io interface. The legacy_io file maps to the I/O
* space of a given PCI domain; reads and writes are used to do port I/O.
* The file descriptor for the file is stored in the upper bits of the
* value passed in by the caller, and is created and populated by
* xf86MapLegacyIO.
*
* If the legacy_io interface doesn't exist, we fall back to the glibc in/out
* routines, which are prefixed by an underscore (e.g. _outb).
*/
static int ia64_port_to_fd(unsigned long port)
{
return (port >> 24) & 0xffffffff;
}
void outb(unsigned long port, unsigned char val)
{
int fd = ia64_port_to_fd(port);
if (!fd) {
_outb(val, port & 0xffff);
goto out;
}
if (lseek(fd, port & 0xffff, SEEK_SET) == -1) {
ErrorF("I/O lseek failed\n");
goto out;
}
if (write(fd, &val, 1) != 1) {
ErrorF("I/O write failed\n");
goto out;
}
out:
return;
}
void outw(unsigned long port, unsigned short val)
{
int fd = ia64_port_to_fd(port);
if (!fd) {
_outw(val, port & 0xffff);
goto out;
}
if (lseek(fd, port & 0xffff, SEEK_SET) == -1) {
ErrorF("I/O lseek failed\n");
goto out;
}
if (write(fd, &val, 2) != 2) {
ErrorF("I/O write failed\n");
goto out;
}
out:
return;
}
void outl(unsigned long port, unsigned int val)
{
int fd = ia64_port_to_fd(port);
if (!fd) {
_outl(val, port & 0xffff);
goto out;
}
if (lseek(fd, port & 0xffff, SEEK_SET) == -1) {
ErrorF("I/O lseek failed\n");
goto out;
}
if (write(fd, &val, 4) != 4) {
ErrorF("I/O write failed\n");
goto out;
}
out:
return;
}
unsigned int inb(unsigned long port)
{
int fd = ia64_port_to_fd(port);
unsigned char val;
if (!fd)
return _inb(port & 0xffff);
if (lseek(fd, port & 0xffff, SEEK_SET) == -1) {
ErrorF("I/O lseek failed\n");
val = -1;
goto out;
}
if (read(fd, &val, 1) != 1) {
ErrorF("I/O read failed\n");
val = -1;
goto out;
}
out:
return val;
}
unsigned int inw(unsigned long port)
{
int fd = ia64_port_to_fd(port);
unsigned short val;
if (!fd)
return _inw(port & 0xffff);
if (lseek(fd, port & 0xffff, SEEK_SET) == -1) {
ErrorF("I/O lseek failed\n");
val = -1;
goto out;
}
if (read(fd, &val, 2) != 2) {
ErrorF("I/O read failed\n");
val = -1;
goto out;
}
out:
return val;
}
unsigned int inl(unsigned long port)
{
int fd = ia64_port_to_fd(port);
unsigned int val;
if (!fd)
return _inl(port & 0xffff);
if (lseek(fd, port & 0xffff, SEEK_SET) == -1) {
ErrorF("I/O lseek failed\n");
val = -1;
goto out;
}
if (read(fd, &val, 4) != 4) {
ErrorF("I/O read failed\n");
val = -1;
goto out;
}
out:
return val;
}

View File

@ -51,11 +51,9 @@
*/
typedef struct {
unsigned long physBase;
unsigned long size;
pointer virtBase;
pointer mtrrInfo;
int flags;
} MappingRec, *MappingPtr;
typedef struct {
@ -169,10 +167,8 @@ xf86MakeNewMapping(int ScreenNum, int Flags, unsigned long Base, unsigned long S
vp = getVidMapRec(ScreenNum);
mp = newMapping(vp);
mp->physBase = Base;
mp->size = Size;
mp->virtBase = Vbase;
mp->flags = Flags;
}
void
@ -206,10 +202,8 @@ xf86MapVidMem(int ScreenNum, int Flags, unsigned long Base, unsigned long Size)
vp = getVidMapRec(ScreenNum);
mp = newMapping(vp);
mp->physBase = Base;
mp->size = Size;
mp->virtBase = vbase;
mp->flags = Flags;
/*
* Check the "mtrr" option even when MTRR isn't supported to avoid

View File

@ -0,0 +1,19 @@
noinst_LTLIBRARIES = libstub.la
AM_CFLAGS = $(XORG_CFLAGS) $(DIX_CFLAGS)
INCLUDES = $(XORG_INCS)
libstub_la_SOURCES = \
$(srcdir)/../shared/VTsw_noop.c \
$(srcdir)/../shared/agp_noop.c \
$(srcdir)/../shared/ioperm_noop.c \
$(srcdir)/../shared/kmod_noop.c \
$(srcdir)/../shared/pm_noop.c \
$(srcdir)/../shared/vidmem.c \
$(srcdir)/../shared/posix_tty.c \
$(srcdir)/../shared/sigio.c \
stub_bell.c \
stub_bios.c \
stub_init.c \
stub_video.c

View File

@ -0,0 +1,10 @@
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
#endif
#include "xf86_OSlib.h"
void
xf86OSRingBell(int loudness, int pitch, int duration)
{
}

View File

@ -0,0 +1,12 @@
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
#endif
#include "xf86_OSlib.h"
int
xf86ReadBIOS(unsigned long Base, unsigned long Offset, unsigned char *Buf,
int Len)
{
return -1;
}

View File

@ -0,0 +1,26 @@
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
#endif
#include "xf86_OSlib.h"
void
xf86OpenConsole()
{
}
void
xf86CloseConsole()
{
}
int
xf86ProcessArgument(int argc, char *argv[], int i)
{
return 0;
}
void
xf86UseMsg()
{
}

View File

@ -0,0 +1,13 @@
#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
#endif
#include "xf86_OSlib.h"
#include "xf86OSpriv.h"
void
xf86OSInitVidMem(VidMemInfoPtr pVidMem)
{
pVidMem->initialised = TRUE;
return;
}

View File

@ -132,10 +132,10 @@ _XFUNCPROTOBEGIN
/* public functions */
extern _X_EXPORT Bool xf86LinearVidMem(void);
extern _X_EXPORT Bool xf86CheckMTRR(int);
extern _X_EXPORT pointer xf86MapVidMem(int, int, unsigned long, unsigned long);
extern _X_EXPORT void xf86UnMapVidMem(int, pointer, unsigned long);
extern _X_EXPORT void xf86MapReadSideEffects(int, int, pointer, unsigned long);
extern _X_EXPORT _X_DEPRECATED Bool xf86CheckMTRR(int);
extern _X_EXPORT _X_DEPRECATED pointer xf86MapVidMem(int, int, unsigned long, unsigned long);
extern _X_EXPORT _X_DEPRECATED void xf86UnMapVidMem(int, pointer, unsigned long);
extern _X_EXPORT _X_DEPRECATED void xf86MapReadSideEffects(int, int, pointer, unsigned long);
extern _X_EXPORT int xf86ReadBIOS(unsigned long, unsigned long, unsigned char *, int);
extern _X_EXPORT Bool xf86EnableIO(void);
extern _X_EXPORT void xf86DisableIO(void);
@ -209,7 +209,7 @@ extern _X_EXPORT int xf86ProcessArgument(int, char **, int);
extern _X_EXPORT void xf86UseMsg(void);
extern _X_EXPORT PMClose xf86OSPMOpen(void);
extern _X_EXPORT void xf86MakeNewMapping(int, int, unsigned long, unsigned long, pointer);
extern _X_EXPORT _X_DEPRECATED void xf86MakeNewMapping(int, int, unsigned long, unsigned long, pointer);
extern _X_EXPORT void xf86InitVidMem(void);
#endif /* XF86_OS_PRIVS */

View File

@ -52,7 +52,9 @@ cat > sdksyms.c << EOF
*/
#include "geext.h"
#include "geint.h"
#ifdef MITSHM
#include "shmint.h"
#endif
#include "syncsdk.h"
#if XINERAMA
# include "panoramiXsrv.h"
@ -118,14 +120,16 @@ cat > sdksyms.c << EOF
#include "xf86.h"
#include "xf86Module.h"
#include "xf86Opt.h"
#include "xf86PciInfo.h"
#ifdef XSERVER_LIBPCIACCESS
#include "xf86PciInfo.h"
#include "xf86VGAarbiter.h"
#endif
#include "xf86Priv.h"
#include "xf86Privstr.h"
#include "xf86cmap.h"
#include "xf86fbman.h"
#include "xf86str.h"
#include "xf86Xinput.h"
#include "xf86VGAarbiter.h"
#include "xisb.h"
#if XV
# include "xf86xv.h"
@ -170,7 +174,9 @@ cat > sdksyms.c << EOF
/* hw/xfree86/os-support/bus/Makefile.am */
#include "xf86Pci.h"
#ifdef XSERVER_LIBPCIACCESS
# include "xf86Pci.h"
#endif
#if defined(__sparc__) || defined(__sparc)
# include "xf86Sbus.h"
#endif

View File

@ -1,5 +1,5 @@
module_LTLIBRARIES = libshadowfb.la
libshadowfb_la_LDFLAGS = -avoid-version
libshadowfb_la_LDFLAGS = -module -avoid-version
libshadowfb_la_SOURCES = sfbmodule.c shadow.c
sdk_HEADERS = shadowfb.h

View File

@ -25,13 +25,6 @@
#include "xf86.h"
/* Error implementation used by the server code we built in */
void
Error(const char *str)
{
perror(str);
}
/* FatalError implementation used by the server code we built in */
void
FatalError(const char *f, ...)

View File

@ -1,5 +1,5 @@
module_LTLIBRARIES = libvbe.la
libvbe_la_LDFLAGS = -avoid-version
libvbe_la_LDFLAGS = -module -avoid-version
libvbe_la_SOURCES = vbe.c vbeModes.c vbe_module.c
sdk_HEADERS = vbe.h vbeModes.h

View File

@ -163,67 +163,67 @@ static CARD8 defaultDAC[768] =
static void
stdWriteCrtc(vgaHWPtr hwp, CARD8 index, CARD8 value)
{
outb(hwp->IOBase + hwp->PIOOffset + VGA_CRTC_INDEX_OFFSET, index);
outb(hwp->IOBase + hwp->PIOOffset + VGA_CRTC_DATA_OFFSET, value);
pci_io_write8(hwp->io, hwp->IOBase + VGA_CRTC_INDEX_OFFSET, index);
pci_io_write8(hwp->io, hwp->IOBase + VGA_CRTC_DATA_OFFSET, value);
}
static CARD8
stdReadCrtc(vgaHWPtr hwp, CARD8 index)
{
outb(hwp->IOBase + hwp->PIOOffset + VGA_CRTC_INDEX_OFFSET, index);
return inb(hwp->IOBase + hwp->PIOOffset + VGA_CRTC_DATA_OFFSET);
pci_io_write8(hwp->io, hwp->IOBase + VGA_CRTC_INDEX_OFFSET, index);
return pci_io_read8(hwp->io, hwp->IOBase + VGA_CRTC_DATA_OFFSET);
}
static void
stdWriteGr(vgaHWPtr hwp, CARD8 index, CARD8 value)
{
outb(hwp->PIOOffset + VGA_GRAPH_INDEX, index);
outb(hwp->PIOOffset + VGA_GRAPH_DATA, value);
pci_io_write8(hwp->io, VGA_GRAPH_INDEX, index);
pci_io_write8(hwp->io, VGA_GRAPH_DATA, value);
}
static CARD8
stdReadGr(vgaHWPtr hwp, CARD8 index)
{
outb(hwp->PIOOffset + VGA_GRAPH_INDEX, index);
return inb(hwp->PIOOffset + VGA_GRAPH_DATA);
pci_io_write8(hwp->io, VGA_GRAPH_INDEX, index);
return pci_io_read8(hwp->io, VGA_GRAPH_DATA);
}
static void
stdWriteSeq(vgaHWPtr hwp, CARD8 index, CARD8 value)
{
outb(hwp->PIOOffset + VGA_SEQ_INDEX, index);
outb(hwp->PIOOffset + VGA_SEQ_DATA, value);
pci_io_write8(hwp->io, VGA_SEQ_INDEX, index);
pci_io_write8(hwp->io, VGA_SEQ_DATA, value);
}
static CARD8
stdReadSeq(vgaHWPtr hwp, CARD8 index)
{
outb(hwp->PIOOffset + VGA_SEQ_INDEX, index);
return inb(hwp->PIOOffset + VGA_SEQ_DATA);
pci_io_write8(hwp->io, VGA_SEQ_INDEX, index);
return pci_io_read8(hwp->io, VGA_SEQ_DATA);
}
static CARD8
stdReadST00(vgaHWPtr hwp)
{
return inb(hwp->PIOOffset + VGA_IN_STAT_0);
return pci_io_read8(hwp->io, VGA_IN_STAT_0);
}
static CARD8
stdReadST01(vgaHWPtr hwp)
{
return inb(hwp->IOBase + hwp->PIOOffset + VGA_IN_STAT_1_OFFSET);
return pci_io_read8(hwp->io, hwp->IOBase + VGA_IN_STAT_1_OFFSET);
}
static CARD8
stdReadFCR(vgaHWPtr hwp)
{
return inb(hwp->PIOOffset + VGA_FEATURE_R);
return pci_io_read8(hwp->io, VGA_FEATURE_R);
}
static void
stdWriteFCR(vgaHWPtr hwp, CARD8 value)
{
outb(hwp->IOBase + hwp->PIOOffset + VGA_FEATURE_W_OFFSET,value);
pci_io_write8(hwp->io, hwp->IOBase + VGA_FEATURE_W_OFFSET,value);
}
static void
@ -234,9 +234,9 @@ stdWriteAttr(vgaHWPtr hwp, CARD8 index, CARD8 value)
else
index |= 0x20;
(void) inb(hwp->IOBase + hwp->PIOOffset + VGA_IN_STAT_1_OFFSET);
outb(hwp->PIOOffset + VGA_ATTR_INDEX, index);
outb(hwp->PIOOffset + VGA_ATTR_DATA_W, value);
(void) pci_io_read8(hwp->io, hwp->IOBase + VGA_IN_STAT_1_OFFSET);
pci_io_write8(hwp->io, VGA_ATTR_INDEX, index);
pci_io_write8(hwp->io, VGA_ATTR_DATA_W, value);
}
static CARD8
@ -247,85 +247,85 @@ stdReadAttr(vgaHWPtr hwp, CARD8 index)
else
index |= 0x20;
(void) inb(hwp->IOBase + hwp->PIOOffset + VGA_IN_STAT_1_OFFSET);
outb(hwp->PIOOffset + VGA_ATTR_INDEX, index);
return inb(hwp->PIOOffset + VGA_ATTR_DATA_R);
(void) pci_io_read8(hwp->io, hwp->IOBase + VGA_IN_STAT_1_OFFSET);
pci_io_write8(hwp->io, VGA_ATTR_INDEX, index);
return pci_io_read8(hwp->io, VGA_ATTR_DATA_R);
}
static void
stdWriteMiscOut(vgaHWPtr hwp, CARD8 value)
{
outb(hwp->PIOOffset + VGA_MISC_OUT_W, value);
pci_io_write8(hwp->io, VGA_MISC_OUT_W, value);
}
static CARD8
stdReadMiscOut(vgaHWPtr hwp)
{
return inb(hwp->PIOOffset + VGA_MISC_OUT_R);
return pci_io_read8(hwp->io, VGA_MISC_OUT_R);
}
static void
stdEnablePalette(vgaHWPtr hwp)
{
(void) inb(hwp->IOBase + hwp->PIOOffset + VGA_IN_STAT_1_OFFSET);
outb(hwp->PIOOffset + VGA_ATTR_INDEX, 0x00);
(void) pci_io_read8(hwp->io, hwp->IOBase + VGA_IN_STAT_1_OFFSET);
pci_io_write8(hwp->io, VGA_ATTR_INDEX, 0x00);
hwp->paletteEnabled = TRUE;
}
static void
stdDisablePalette(vgaHWPtr hwp)
{
(void) inb(hwp->IOBase + hwp->PIOOffset + VGA_IN_STAT_1_OFFSET);
outb(hwp->PIOOffset + VGA_ATTR_INDEX, 0x20);
(void) pci_io_read8(hwp->io, hwp->IOBase + VGA_IN_STAT_1_OFFSET);
pci_io_write8(hwp->io, VGA_ATTR_INDEX, 0x20);
hwp->paletteEnabled = FALSE;
}
static void
stdWriteDacMask(vgaHWPtr hwp, CARD8 value)
{
outb(hwp->PIOOffset + VGA_DAC_MASK, value);
pci_io_write8(hwp->io, VGA_DAC_MASK, value);
}
static CARD8
stdReadDacMask(vgaHWPtr hwp)
{
return inb(hwp->PIOOffset + VGA_DAC_MASK);
return pci_io_read8(hwp->io, VGA_DAC_MASK);
}
static void
stdWriteDacReadAddr(vgaHWPtr hwp, CARD8 value)
{
outb(hwp->PIOOffset + VGA_DAC_READ_ADDR, value);
pci_io_write8(hwp->io, VGA_DAC_READ_ADDR, value);
}
static void
stdWriteDacWriteAddr(vgaHWPtr hwp, CARD8 value)
{
outb(hwp->PIOOffset + VGA_DAC_WRITE_ADDR, value);
pci_io_write8(hwp->io, VGA_DAC_WRITE_ADDR, value);
}
static void
stdWriteDacData(vgaHWPtr hwp, CARD8 value)
{
outb(hwp->PIOOffset + VGA_DAC_DATA, value);
pci_io_write8(hwp->io, VGA_DAC_DATA, value);
}
static CARD8
stdReadDacData(vgaHWPtr hwp)
{
return inb(hwp->PIOOffset + VGA_DAC_DATA);
return pci_io_read8(hwp->io, VGA_DAC_DATA);
}
static CARD8
stdReadEnable(vgaHWPtr hwp)
{
return inb(hwp->PIOOffset + VGA_ENABLE);
return pci_io_read8(hwp->io, VGA_ENABLE);
}
static void
stdWriteEnable(vgaHWPtr hwp, CARD8 value)
{
outb(hwp->PIOOffset + VGA_ENABLE, value);
pci_io_write8(hwp->io, VGA_ENABLE, value);
}
void
@ -353,9 +353,10 @@ vgaHWSetStdFuncs(vgaHWPtr hwp)
hwp->writeDacReadAddr = stdWriteDacReadAddr;
hwp->writeDacData = stdWriteDacData;
hwp->readDacData = stdReadDacData;
hwp->PIOOffset = 0;
hwp->readEnable = stdReadEnable;
hwp->writeEnable = stdWriteEnable;
hwp->io = pci_legacy_open_io(hwp->dev, 0, 64 * 1024);
}
/*
@ -1706,10 +1707,6 @@ vgaHWGetHWRec(ScrnInfoPtr scrp)
hwp->MapSize = 0;
hwp->pScrn = scrp;
/* Initialise the function pointers with the standard VGA versions */
vgaHWSetStdFuncs(hwp);
hwp->PIOOffset = scrp->domainIOBase;
hwp->dev = xf86GetPciInfoForEntity(scrp->entityList[0]);
return TRUE;
@ -1723,7 +1720,9 @@ vgaHWFreeHWRec(ScrnInfoPtr scrp)
vgaHWPtr hwp = VGAHWPTR(scrp);
if (!hwp)
return;
return;
pci_device_close_io(hwp->dev, hwp->io);
free(hwp->FontInfo1);
free(hwp->FontInfo2);
@ -1742,7 +1741,6 @@ Bool
vgaHWMapMem(ScrnInfoPtr scrp)
{
vgaHWPtr hwp = VGAHWPTR(scrp);
int scr_index = scrp->scrnIndex;
if (hwp->Base)
return TRUE;
@ -1760,8 +1758,7 @@ vgaHWMapMem(ScrnInfoPtr scrp)
* for now.
*/
DebugF("Mapping VGAMem\n");
hwp->Base = xf86MapDomainMemory(scr_index, VIDMEM_MMIO_32BIT, hwp->dev,
hwp->MapPhys, hwp->MapSize);
pci_device_map_legacy(hwp->dev, hwp->MapPhys, hwp->MapSize, PCI_DEV_MAP_FLAG_WRITABLE, &hwp->Base);
return hwp->Base != NULL;
}
@ -1770,13 +1767,12 @@ void
vgaHWUnmapMem(ScrnInfoPtr scrp)
{
vgaHWPtr hwp = VGAHWPTR(scrp);
int scr_index = scrp->scrnIndex;
if (hwp->Base == NULL)
return;
DebugF("Unmapping VGAMem\n");
xf86UnMapVidMem(scr_index, hwp->Base, hwp->MapSize);
pci_device_unmap_legacy(hwp->dev, hwp->Base, hwp->MapSize);
hwp->Base = NULL;
}
@ -1793,8 +1789,7 @@ vgaHWGetIOBase(vgaHWPtr hwp)
hwp->IOBase = (hwp->readMiscOut(hwp) & 0x01) ?
VGA_IOBASE_COLOR : VGA_IOBASE_MONO;
xf86DrvMsgVerb(hwp->pScrn->scrnIndex, X_INFO, 3,
"vgaHWGetIOBase: hwp->IOBase is 0x%04x, hwp->PIOOffset is 0x%04lx\n",
hwp->IOBase, hwp->PIOOffset);
"vgaHWGetIOBase: hwp->IOBase is 0x%04x\n", hwp->IOBase);
}
@ -1992,3 +1987,94 @@ SaveScreenProcPtr vgaHWSaveScreenWeak(void)
{
return vgaHWSaveScreen;
}
/*
* xf86GetClocks -- get the dot-clocks via a BIG BAD hack ...
*/
void
xf86GetClocks(ScrnInfoPtr pScrn, int num, Bool (*ClockFunc)(ScrnInfoPtr, int),
void (*ProtectRegs)(ScrnInfoPtr, Bool),
void (*BlankScreen)(ScrnInfoPtr, Bool), unsigned long vertsyncreg,
int maskval, int knownclkindex, int knownclkvalue)
{
register int status = vertsyncreg;
unsigned long i, cnt, rcnt, sync;
vgaHWPtr hwp = VGAHWPTR(pScrn);
/* First save registers that get written on */
(*ClockFunc)(pScrn, CLK_REG_SAVE);
if (num > MAXCLOCKS)
num = MAXCLOCKS;
for (i = 0; i < num; i++)
{
if (ProtectRegs)
(*ProtectRegs)(pScrn, TRUE);
if (!(*ClockFunc)(pScrn, i))
{
pScrn->clock[i] = -1;
continue;
}
if (ProtectRegs)
(*ProtectRegs)(pScrn, FALSE);
if (BlankScreen)
(*BlankScreen)(pScrn, FALSE);
usleep(50000); /* let VCO stabilise */
cnt = 0;
sync = 200000;
while ((pci_io_read8(hwp->io, status) & maskval) == 0x00)
if (sync-- == 0) goto finish;
/* Something appears to be happening, so reset sync count */
sync = 200000;
while ((pci_io_read8(hwp->io, status) & maskval) == maskval)
if (sync-- == 0) goto finish;
/* Something appears to be happening, so reset sync count */
sync = 200000;
while ((pci_io_read8(hwp->io, status) & maskval) == 0x00)
if (sync-- == 0) goto finish;
for (rcnt = 0; rcnt < 5; rcnt++)
{
while (!(pci_io_read8(hwp->io, status) & maskval))
cnt++;
while ((pci_io_read8(hwp->io, status) & maskval))
cnt++;
}
finish:
pScrn->clock[i] = cnt ? cnt : -1;
if (BlankScreen)
(*BlankScreen)(pScrn, TRUE);
}
for (i = 0; i < num; i++)
{
if (i != knownclkindex)
{
if (pScrn->clock[i] == -1)
{
pScrn->clock[i] = 0;
}
else
{
pScrn->clock[i] = (int)(0.5 +
(((float)knownclkvalue) * pScrn->clock[knownclkindex]) /
(pScrn->clock[i]));
/* Round to nearest 10KHz */
pScrn->clock[i] += 5;
pScrn->clock[i] /= 10;
pScrn->clock[i] *= 10;
}
}
}
pScrn->clock[knownclkindex] = knownclkvalue;
pScrn->numClocks = num;
/* Restore registers that were written on */
(*ClockFunc)(pScrn, CLK_REG_RESTORE);
}

View File

@ -151,17 +151,13 @@ typedef struct _vgaHWRec {
vgaHWWriteProcPtr writeDacData;
vgaHWReadProcPtr readDacData;
pointer ddc;
IOADDRESS PIOOffset; /* offset + vgareg
= pioreg */
struct pci_io_handle *io;
vgaHWReadProcPtr readEnable;
vgaHWWriteProcPtr writeEnable;
struct pci_device *dev;
} vgaHWRec;
/* Some macros that VGA drivers can use in their ChipProbe() function */
#define VGAHW_GET_IOBASE() ((inb(VGA_MISC_OUT_R) & 0x01) ? \
VGA_IOBASE_COLOR : VGA_IOBASE_MONO)
#define OVERSCAN 0x11 /* Index of OverScan register */
/* Flags that define how overscan correction should take place */
@ -174,15 +170,11 @@ typedef struct _vgaHWRec {
#define BITS_PER_GUN 6
#define COLORMAP_SIZE 256
#if defined(__powerpc__) || defined(__arm__) || defined(__s390__) || defined(__nds32__)
#define DACDelay(hw) /* No legacy VGA support */
#else
#define DACDelay(hw) \
do { \
(void)inb((hw)->PIOOffset + (hw)->IOBase + VGA_IN_STAT_1_OFFSET); \
(void)inb((hw)->PIOOffset + (hw)->IOBase + VGA_IN_STAT_1_OFFSET); \
#define DACDelay(hw) \
do { \
pci_io_read8((hw)->io, (hw)->IOBase + VGA_IN_STAT_1_OFFSET); \
pci_io_read8((hw)->io, (hw)->IOBase + VGA_IN_STAT_1_OFFSET); \
} while (0)
#endif
/* Function Prototypes */
@ -231,5 +223,11 @@ extern _X_EXPORT Bool vgaHWAllocDefaultRegs(vgaRegPtr regp);
extern _X_EXPORT DDC1SetSpeedProc vgaHWddc1SetSpeedWeak(void);
extern _X_EXPORT SaveScreenProcPtr vgaHWSaveScreenWeak(void);
extern _X_EXPORT void xf86GetClocks(ScrnInfoPtr pScrn, int num,
Bool (*ClockFunc)(ScrnInfoPtr, int),
void (*ProtectRegs)(ScrnInfoPtr, Bool),
void (*BlankScreen)(ScrnInfoPtr, Bool),
unsigned long vertsyncreg, int maskval,
int knownclkindex, int knownclkvalue);
#endif /* _VGAHW_H */

View File

@ -8,7 +8,7 @@ MSB_FIXED = mf-xaaBitmap.c mf-xaaStipple.c mf-xaaTEGlyph.c
MSB_3_FIXED = mf3-xaaBitmap.c mf3-xaaStipple.c
POLYSEG = s-xaaLine.c s-xaaDashLine.c
libxaa_la_LDFLAGS = -avoid-version
libxaa_la_LDFLAGS = -module -avoid-version
if COMPOSITE
libxaa_la_LIBADD = $(top_builddir)/miext/cw/libcw.la
endif

View File

@ -17,6 +17,9 @@ is" without express or implied warranty.
#include <xnest-config.h>
#endif
#include <string.h>
#include <errno.h>
#include <X11/X.h>
#include <X11/Xproto.h>
#include "screenint.h"
@ -52,6 +55,14 @@ Pixmap xnestScreenSaverPixmap;
XlibGC xnestBitmapGC;
unsigned long xnestEventMask;
static int _X_NORETURN
x_io_error_handler (Display *dpy) {
ErrorF("Lost connection to X server: %s\n", strerror(errno));
CloseWellKnownConnections();
OsCleanup(1);
exit(1);
}
void
xnestOpenDisplay(int argc, char *argv[])
{
@ -60,7 +71,9 @@ xnestOpenDisplay(int argc, char *argv[])
int i, j;
if (!xnestDoFullGeneration) return;
XSetIOErrorHandler(x_io_error_handler);
xnestCloseDisplay();
xnestDisplay = XOpenDisplay(xnestDisplayName);

View File

@ -198,6 +198,8 @@ xnestCollectEvents(void)
case DestroyNotify:
if (xnestParentWindow != (Window) 0 &&
X.xdestroywindow.window == xnestParentWindow)
CloseWellKnownConnections();
OsCleanup(1);
exit (0);
break;

View File

@ -30,6 +30,7 @@
#define INPUTUTILS_H
#include "input.h"
#include <X11/extensions/XI2proto.h>
struct _ValuatorMask {
int8_t last_bit; /* highest bit set in mask */
@ -40,4 +41,9 @@ struct _ValuatorMask {
extern void verify_internal_event(const InternalEvent *ev);
extern void init_device_event(DeviceEvent *event, DeviceIntPtr dev, Time ms);
FP3232 double_to_fp3232(double in);
FP1616 double_to_fp1616(double in);
double fp1616_to_double(FP1616 in);
double fp3232_to_double(FP3232 in);
#endif

View File

@ -551,7 +551,6 @@ extern _X_EXPORT void FatalError(const char *f, ...) _X_ATTRIBUTE_PRINTF(1,2) _X
extern _X_EXPORT void VErrorF(const char *f, va_list args) _X_ATTRIBUTE_PRINTF(1,0);
extern _X_EXPORT void ErrorF(const char *f, ...) _X_ATTRIBUTE_PRINTF(1,2);
extern _X_EXPORT void Error(const char *str);
extern _X_EXPORT void LogPrintMarkers(void);
extern _X_EXPORT void xorg_backtrace(void);

View File

@ -118,18 +118,6 @@
/* Have execinfo.h */
#undef HAVE_EXECINFO_H
/* Have pci_system_init_dev_mem() */
#undef HAVE_PCI_SYSTEM_INIT_DEV_MEM
/* Define to 1 if you have the `pci_device_is_boot_vga' function. */
#undef HAVE_PCI_DEVICE_IS_BOOT_VGA
/* Have pci_enable_device */
#undef HAVE_PCI_DEVICE_ENABLE
/* Define to 1 if you have the `pci_device_vgaarb_init' function. */
#undef HAVE_PCI_DEVICE_VGAARB_INIT
/* Path to text files containing PCI IDs */
#undef PCI_TXT_IDS_PATH
@ -139,4 +127,7 @@
/* Build with libdrm support */
#undef WITH_LIBDRM
/* Use libpciaccess */
#undef XSERVER_LIBPCIACCESS
#endif /* _XORG_CONFIG_H_ */

View File

@ -143,12 +143,12 @@ is platform and configuration specific.
disables named extension. If an unknown extension name is specified,
a list of accepted extension names is printed.
.TP 8
.BI \+extension extensionName
.BI +extension extensionName
enables named extension. If an unknown extension name is specified,
a list of accepted extension names is printed.
.TP 8
.B \-f \fIvolume\fP
sets feep (bell) volume (allowable range: 0-100).
sets beep (bell) volume (allowable range: 0-100).
.TP 8
.B \-fc \fIcursorFont\fP
sets default cursor font.
@ -524,8 +524,8 @@ An example configuration:
.fi
This will add /usr/share/X11/fonts/misc as the first FPE with the attribute
'unscaled', second FPE will be /usr/share/X11/fonts/75dpi, also with
the attribute unscaled etc. This is functionally equivalent to setting
\N'39'unscaled', second FPE will be /usr/share/X11/fonts/75dpi, also with
the attribute 'unscaled' etc. This is functionally equivalent to setting
the following font path:
.nf

View File

@ -27,6 +27,8 @@
#include "os.h"
#include "misc.h"
#include <errno.h>
#include <string.h>
#ifdef HAVE_BACKTRACE
#ifndef _GNU_SOURCE
@ -199,9 +201,8 @@ void xorg_backtrace(void) {
walkcontext(&u, xorg_backtrace_frame, &depth);
else
# endif
Error("Failed to get backtrace info");
ErrorF("Failed to get backtrace info: %s\n", strerror(errno));
}
ErrorF("\n");
}
# else

View File

@ -87,7 +87,6 @@ OR PERFORMANCE OF THIS SOFTWARE.
#include <sys/stat.h>
#include <stdarg.h>
#include <stdlib.h> /* for malloc() */
#include <errno.h>
#include "input.h"
#include "site.h"
@ -638,19 +637,6 @@ ErrorF(const char * f, ...)
va_end(args);
}
/* A perror() workalike. */
void
Error(const char *str)
{
const char *err = strerror(errno);
if (str)
LogWrite(-1, "%s: %s", str, err);
else
LogWrite(-1, "%s", err);
}
void
LogPrintMarkers(void)
{

View File

@ -64,6 +64,8 @@
#include "os.h"
#include <stdarg.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#ifdef asprintf
# undef asprintf
@ -154,8 +156,7 @@ XNFvasprintf(char **ret, const char * _X_RESTRICT_KYWD format, va_list va)
{
int size = vasprintf(ret, format, va);
if ((size == -1) || (*ret == NULL)) {
Error("XNFvasprintf");
FatalError("XNFvasprintf failed");
FatalError("XNFvasprintf failed: %s", strerror(errno));
}
return size;
}

View File

@ -1309,17 +1309,17 @@ static void dix_get_master(void)
SpriteInfoRec ptr_sprite, kbd_sprite;
SpriteInfoRec floating_sprite;
memset(&vcp, 0, sizeof(DeviceIntRec));
memset(&vck, 0, sizeof(DeviceIntRec));
memset(&ptr, 0, sizeof(DeviceIntRec));
memset(&kbd, 0, sizeof(DeviceIntRec));
memset(&floating, 0, sizeof(DeviceIntRec));
memset(&vcp, 0, sizeof(vcp));
memset(&vck, 0, sizeof(vck));
memset(&ptr, 0, sizeof(ptr));
memset(&kbd, 0, sizeof(kbd));
memset(&floating, 0, sizeof(floating));
memset(&vcp_sprite, 0, sizeof(DeviceIntRec));
memset(&vck_sprite, 0, sizeof(DeviceIntRec));
memset(&ptr_sprite, 0, sizeof(DeviceIntRec));
memset(&kbd_sprite, 0, sizeof(DeviceIntRec));
memset(&floating_sprite, 0, sizeof(DeviceIntRec));
memset(&vcp_sprite, 0, sizeof(vcp_sprite));
memset(&vck_sprite, 0, sizeof(vck_sprite));
memset(&ptr_sprite, 0, sizeof(ptr_sprite));
memset(&kbd_sprite, 0, sizeof(kbd_sprite));
memset(&floating_sprite, 0, sizeof(floating_sprite));
vcp.type = MASTER_POINTER;
vck.type = MASTER_KEYBOARD;
@ -1462,9 +1462,137 @@ static void input_option_test(void)
assert(list == NULL);
}
static void
_test_double_fp16_values(double orig_d)
{
FP1616 first_fp16, final_fp16;
double final_d;
char first_fp16_s[64];
char final_fp16_s[64];
if (orig_d > 0x7FFF) {
printf("Test out of range\n");
assert(0);
}
first_fp16 = double_to_fp1616(orig_d);
final_d = fp1616_to_double(first_fp16);
final_fp16 = double_to_fp1616(final_d);
snprintf(first_fp16_s, sizeof(first_fp16_s), "%d + %u * 2^-16", (first_fp16 & 0xffff0000) >> 16, first_fp16 & 0xffff);
snprintf(final_fp16_s, sizeof(final_fp16_s), "%d + %u * 2^-16", (final_fp16 & 0xffff0000) >> 16, final_fp16 & 0xffff);
printf("FP16: original double: %f first fp16: %s, re-encoded double: %f, final fp16: %s\n", orig_d, first_fp16_s, final_d, final_fp16_s);
/* since we lose precision, we only do rough range testing */
assert(final_d > orig_d - 0.1);
assert(final_d < orig_d + 0.1);
assert(memcmp(&first_fp16, &final_fp16, sizeof(FP1616)) == 0);
if (orig_d > 0)
_test_double_fp16_values(-orig_d);
}
static void
_test_double_fp32_values(double orig_d)
{
FP3232 first_fp32, final_fp32;
double final_d;
if (orig_d > 0x7FFFFFFF) {
printf("Test out of range\n");
assert(0);
}
first_fp32 = double_to_fp3232(orig_d);
final_d = fp3232_to_double(first_fp32);
final_fp32 = double_to_fp3232(final_d);
/* {
* char first_fp32_s[64];
* char final_fp32_s[64];
* snprintf(first_fp32_s, sizeof(first_fp32_s), "%d + %u * 2^-32", first_fp32.integral, first_fp32.frac);
* snprintf(final_fp32_s, sizeof(final_fp32_s), "%d + %u * 2^-32", first_fp32.integral, final_fp32.frac);
*
* printf("FP32: original double: %f first fp32: %s, re-encoded double: %f, final fp32: %s\n", orig_d, first_fp32_s, final_d, final_fp32_s);
* }
*/
/* since we lose precision, we only do rough range testing */
assert(final_d > orig_d - 0.1);
assert(final_d < orig_d + 0.1);
assert(memcmp(&first_fp32, &final_fp32, sizeof(FP3232)) == 0);
if (orig_d > 0)
_test_double_fp32_values(-orig_d);
}
static void
dix_double_fp_conversion(void)
{
uint32_t i;
printf("Testing double to FP1616/FP3232 conversions\n");
_test_double_fp16_values(0);
for (i = 1; i < 0x7FFF; i <<= 1) {
double val;
val = i;
_test_double_fp16_values(val);
_test_double_fp32_values(val);
/* and some pseudo-random floating points */
val = i - 0.00382;
_test_double_fp16_values(val);
_test_double_fp32_values(val);
val = i + 0.00382;
_test_double_fp16_values(val);
_test_double_fp32_values(val);
val = i + 0.05234;
_test_double_fp16_values(val);
_test_double_fp32_values(val);
val = i + 0.12342;
_test_double_fp16_values(val);
_test_double_fp32_values(val);
val = i + 0.27583;
_test_double_fp16_values(val);
_test_double_fp32_values(val);
val = i + 0.50535;
_test_double_fp16_values(val);
_test_double_fp32_values(val);
val = i + 0.72342;
_test_double_fp16_values(val);
_test_double_fp32_values(val);
val = i + 0.80408;
_test_double_fp16_values(val);
_test_double_fp32_values(val);
}
for (i = 0x7FFFF; i < 0x7FFFFFFF; i <<= 1) {
_test_double_fp32_values(i);
/* and a few more random floating points, obtained
* by faceplanting into the numpad repeatedly */
_test_double_fp32_values(i + 0.010177);
_test_double_fp32_values(i + 0.213841);
_test_double_fp32_values(i + 0.348720);
_test_double_fp32_values(i + 0.472020);
_test_double_fp32_values(i + 0.572020);
_test_double_fp32_values(i + 0.892929);
}
}
int main(int argc, char** argv)
{
dix_double_fp_conversion();
dix_input_valuator_masks();
dix_input_attributes();
dix_init_valuators();

View File

@ -15,7 +15,6 @@ abi_extension=@abi_extension@
Name: xorg-server
Description: Modular X.Org X Server
Version: @PACKAGE_VERSION@
Requires: pixman-1 pciaccess
Requires.private: @SDK_REQUIRED_MODULES@
Cflags: -I${sdkdir} @symbol_visibility@
Libs: -L${libdir}