Merge remote-tracking branch 'jeremyhu/master'
This commit is contained in:
commit
64d2d1bef1
90
configure.ac
90
configure.ac
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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__)
|
||||
|
|
|
@ -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 \
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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__)
|
||||
|
|
|
@ -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 "
|
||||
|
|
|
@ -58,7 +58,6 @@ typedef struct {
|
|||
DevUnion * entityPrivates;
|
||||
int numInstances;
|
||||
GDevPtr * devices;
|
||||
IOADDRESS domainIO;
|
||||
} EntityRec, *EntityPtr;
|
||||
|
||||
#define ACCEL_IS_SHARABLE 0x100
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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) \
|
||||
|
|
|
@ -2,7 +2,7 @@ SUBDIRS = man
|
|||
|
||||
module_LTLIBRARIES = libexa.la
|
||||
|
||||
libexa_la_LDFLAGS = -avoid-version
|
||||
libexa_la_LDFLAGS = -module -avoid-version
|
||||
|
||||
INCLUDES = \
|
||||
$(XORG_INCS) \
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -33,6 +33,7 @@
|
|||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include <X11/Xarch.h>
|
||||
#include "xf86.h"
|
||||
#include "xf86DDC.h"
|
||||
#include "xf86Crtc.h"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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];
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
static void __noop_to_appease_ar__() { return; }
|
|
@ -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 */
|
||||
|
|
|
@ -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 = \
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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;
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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)
|
||||
{
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -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()
|
||||
{
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -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 */
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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, ...)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -198,6 +198,8 @@ xnestCollectEvents(void)
|
|||
case DestroyNotify:
|
||||
if (xnestParentWindow != (Window) 0 &&
|
||||
X.xdestroywindow.window == xnestParentWindow)
|
||||
CloseWellKnownConnections();
|
||||
OsCleanup(1);
|
||||
exit (0);
|
||||
break;
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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_ */
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
14
os/log.c
14
os/log.c
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
148
test/input.c
148
test/input.c
|
@ -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();
|
||||
|
|
|
@ -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}
|
||||
|
|
Loading…
Reference in New Issue