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;
 | 
			
		||||
#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;
 | 
			
		||||
| 
						 | 
				
			
			@ -1725,6 +1722,8 @@ vgaHWFreeHWRec(ScrnInfoPtr scrp)
 | 
			
		|||
	if (!hwp)
 | 
			
		||||
            return;
 | 
			
		||||
 | 
			
		||||
        pci_device_close_io(hwp->dev, hwp->io);
 | 
			
		||||
 | 
			
		||||
	free(hwp->FontInfo1);
 | 
			
		||||
	free(hwp->FontInfo2);
 | 
			
		||||
	free(hwp->TextInfo);
 | 
			
		||||
| 
						 | 
				
			
			@ -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); \
 | 
			
		||||
	    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[])
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -61,6 +72,8 @@ xnestOpenDisplay(int argc, char *argv[])
 | 
			
		|||
 | 
			
		||||
  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