xserver/hw/xorg/os-support/shared VTsw_noop.c, NONE, 1.1 VTsw_usl.c, NONE, 1.1 agp_noop.c, NONE, 1.1 at_scancode.c, NONE, 1.1 bios_devmem.c, NONE, 1.1 bios_mmap.c, NONE, 1.1 inout.S, NONE, 1.1 ioperm_noop.c, NONE, 1.1 kbd.c, NONE, 1.1 kmod_noop.c, NONE, 1.1 libc_wrapper.c, NONE, 1.1 pm_noop.c, NONE, 1.1 posix_tty.c, NONE, 1.1 sigio.c, NONE, 1.1 sigiostubs.c, NONE, 1.1 stdPci.c, NONE, 1.1 stdResource.c, NONE, 1.1 std_kbdEv.c, NONE, 1.1 sysv_kbd.c, NONE, 1.1 vidmem.c, NONE, 1.1 xf86Axp.c, NONE, 1.1 xf86Axp.h, NONE, 1.1

Daniel Stone xserver-commit at pdx.freedesktop.org
Sun Apr 25 23:52:23 EST 2004


Committed by: daniel

Update of /cvs/xserver/xserver/hw/xorg/os-support/shared
In directory pdx:/tmp/cvs-serv17025/hw/xorg/os-support/shared

Added Files:
	VTsw_noop.c VTsw_usl.c agp_noop.c at_scancode.c bios_devmem.c 
	bios_mmap.c inout.S ioperm_noop.c kbd.c kmod_noop.c 
	libc_wrapper.c pm_noop.c posix_tty.c sigio.c sigiostubs.c 
	stdPci.c stdResource.c std_kbdEv.c sysv_kbd.c vidmem.c 
	xf86Axp.c xf86Axp.h 
Log Message:
Xizzle is dead, long live Xorg.

Re-import the DDX from X11R6.7, complete with automakey goodness, and do the
requisite configure.ac, et al, updates; also import the XKB extension from the
6.7 DIX.

Currently it'll link and then hang solid in RADEONInitAccel(), or the next
function if you enable NoAccel.


--- NEW FILE: VTsw_noop.c ---
/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/VTsw_noop.c,v 3.1.4.1 1998/06/05 16:23:20 dawes Exp $ */
/*
 * Copyright 1993 by David Wexelblat <dwex at XFree86.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.
 *
 */
/* $XConsortium: VTsw_noop.c /main/3 1996/02/21 17:53:25 kaleb $ */

#include <X11/X.h>

#include "xf86.h"
#include "xf86Priv.h"
#include "xf86_OSlib.h"

/*
 * No-op functions for OSs without VTs
 */

Bool
xf86VTSwitchPending()
{
	return(FALSE);
}

Bool
xf86VTSwitchAway()
{
	return(FALSE);
}

Bool
xf86VTSwitchTo()
{
	return(TRUE);
}

--- NEW FILE: VTsw_usl.c ---
/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/VTsw_usl.c,v 3.1.4.1 1998/06/05 16:23:21 dawes Exp $ */
/*
 * Copyright 1993 by David Wexelblat <dwex at XFree86.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.
 *
 */
/* $XConsortium: VTsw_usl.c /main/3 1996/02/21 17:53:28 kaleb $ */

#include <X11/X.h>

#include "xf86.h"
#include "xf86Priv.h"
#include "xf86_OSlib.h"

/*
 * Handle the VT-switching interface for OSs that use USL-style ioctl()s
 * (the sysv, sco, and linux subdirs).
 */

/*
 * This function is the signal handler for the VT-switching signal.  It
 * is only referenced inside the OS-support layer.
 */
void
xf86VTRequest(int sig)
{
	signal(sig, (void(*)(int))xf86VTRequest);
	xf86Info.vtRequestsPending = TRUE;
	return;
}

Bool
xf86VTSwitchPending()
{
    return(xf86Info.vtRequestsPending ? TRUE : FALSE);
}

Bool
xf86VTSwitchAway()
{
	xf86Info.vtRequestsPending = FALSE;
	if (ioctl(xf86Info.consoleFd, VT_RELDISP, 1) < 0)
	{
		return(FALSE);
	}
	else
	{
		return(TRUE);
	}
}

Bool
xf86VTSwitchTo()
{
	xf86Info.vtRequestsPending = FALSE;
	if (ioctl(xf86Info.consoleFd, VT_RELDISP, VT_ACKACQ) < 0)
	{
		return(FALSE);
	}
	else
	{
		return(TRUE);
	}
}

--- NEW FILE: agp_noop.c ---
/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/agp_noop.c,v 1.5 2003/08/24 17:37:05 dawes Exp $ */
/*
 * Copyright (c) 2000-2003 by The XFree86 Project, Inc.
 *
 * 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
 * and author(s) 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 copyright holder(s) and author(s).
 */

/*
 * Abstraction of the AGP GART interface.  Stubs for platforms without
 * AGP GART support.
 */

#ifdef __UNIXOS2__
# define I_NEED_OS2_H
#endif
#include <X11/X.h>
#include "xf86.h"
#include "xf86Priv.h"
#include "xf86_OSlib.h"
#include "xf86OSpriv.h"

Bool
xf86GARTCloseScreen(int screenNum)
{
	return FALSE;
}

Bool
xf86AgpGARTSupported()
{
	return FALSE;
}

AgpInfoPtr
xf86GetAGPInfo(int screenNum)
{
	return NULL;
}

Bool
xf86AcquireGART(int screenNum)
{
	return FALSE;
}

Bool
xf86ReleaseGART(int screenNum)
{
	return FALSE;
}

int
xf86AllocateGARTMemory(int screenNum, unsigned long size, int type,
			unsigned long *physical)
{
	return -1;
}


Bool
xf86BindGARTMemory(int screenNum, int key, unsigned long offset)
{
	return FALSE;
}


Bool
xf86UnbindGARTMemory(int screenNum, int key)
{
	return FALSE;
}

Bool
xf86EnableAGP(int screenNum, CARD32 mode)
{
	return FALSE;
}

--- NEW FILE: at_scancode.c ---
/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/at_scancode.c,v 1.4 2003/08/24 17:37:05 dawes Exp $ */
/*
 * Copyright (c) 2002-2003 by The XFree86 Project, Inc.
 *
 * 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
 * and author(s) 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 copyright holder(s) and author(s).
 */

#include "xf86.h"
#include "xf86Xinput.h"
#include "xf86OSKbd.h"
#include "atKeynames.h"

Bool
ATScancode(InputInfoPtr pInfo, int *scanCode)
{
    KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;

    switch (pKbd->scanPrefix) {
       case 0:
          switch (*scanCode) {
             case KEY_Prefix0:
             case KEY_Prefix1:
                  pKbd->scanPrefix = *scanCode;  /* special prefixes */
                  return TRUE;
             case 0x59: *scanCode = KEY_0x59; break;
             case 0x5a: *scanCode = KEY_0x5A; break;
             case 0x5b: *scanCode = KEY_0x5B; break;
             case 0x5c: *scanCode = KEY_KP_Equal; break; /* Keypad Equal */
             case 0x5d: *scanCode = KEY_0x5D; break;
             case 0x5e: *scanCode = KEY_0x5E; break;
             case 0x5f: *scanCode = KEY_0x5F; break;
             case 0x62: *scanCode = KEY_0x62; break;
             case 0x63: *scanCode = KEY_0x63; break;
             case 0x64: *scanCode = KEY_0x64; break;
             case 0x65: *scanCode = KEY_0x65; break;
             case 0x66: *scanCode = KEY_0x66; break;
             case 0x67: *scanCode = KEY_0x67; break;
             case 0x68: *scanCode = KEY_0x68; break;
             case 0x69: *scanCode = KEY_0x69; break;
             case 0x6a: *scanCode = KEY_0x6A; break;
             case 0x6b: *scanCode = KEY_0x6B; break;
             case 0x6c: *scanCode = KEY_0x6C; break;
             case 0x6d: *scanCode = KEY_0x6D; break;
             case 0x6e: *scanCode = KEY_0x6E; break;
             case 0x6f: *scanCode = KEY_0x6F; break;
             case 0x70: *scanCode = KEY_0x70; break;
             case 0x71: *scanCode = KEY_0x71; break;
             case 0x72: *scanCode = KEY_0x72; break;
             case 0x73: *scanCode = KEY_0x73; break;
             case 0x74: *scanCode = KEY_0x74; break;
             case 0x75: *scanCode = KEY_0x75; break;
             case 0x76: *scanCode = KEY_0x76; break;
          }
          break;
       case KEY_Prefix0:
          pKbd->scanPrefix = 0;
          switch (*scanCode) {
            case KEY_KP_7:        *scanCode = KEY_Home;      break;  /* curs home */
            case KEY_KP_8:        *scanCode = KEY_Up;        break;  /* curs up */
            case KEY_KP_9:        *scanCode = KEY_PgUp;      break;  /* curs pgup */
            case KEY_KP_4:        *scanCode = KEY_Left;      break;  /* curs left */
            case KEY_KP_5:        *scanCode = KEY_Begin;     break;  /* curs begin */
            case KEY_KP_6:        *scanCode = KEY_Right;     break;  /* curs right */
            case KEY_KP_1:        *scanCode = KEY_End;       break;  /* curs end */
            case KEY_KP_2:        *scanCode = KEY_Down;      break;  /* curs down */
            case KEY_KP_3:        *scanCode = KEY_PgDown;    break;  /* curs pgdown */
            case KEY_KP_0:        *scanCode = KEY_Insert;    break;  /* curs insert */
            case KEY_KP_Decimal:  *scanCode = KEY_Delete;    break;  /* curs delete */
            case KEY_Enter:       *scanCode = KEY_KP_Enter;  break;  /* keypad enter */
            case KEY_LCtrl:       *scanCode = KEY_RCtrl;     break;  /* right ctrl */
            case KEY_KP_Multiply: *scanCode = KEY_Print;     break;  /* print */
            case KEY_Slash:       *scanCode = KEY_KP_Divide; break;  /* keyp divide */
            case KEY_Alt:         *scanCode = KEY_AltLang;   break;  /* right alt */
            case KEY_ScrollLock:  *scanCode = KEY_Break;     break;  /* curs break */
            case 0x5b:            *scanCode = KEY_LMeta;     break;
            case 0x5c:            *scanCode = KEY_RMeta;     break;
            case 0x5d:            *scanCode = KEY_Menu;      break;
            case KEY_F3:          *scanCode = KEY_F13;       break;
            case KEY_F4:          *scanCode = KEY_F14;       break;
            case KEY_F5:          *scanCode = KEY_F15;       break;
            case KEY_F6:          *scanCode = KEY_F16;       break;
            case KEY_F7:          *scanCode = KEY_F17;       break;
            case KEY_KP_Plus:     *scanCode = KEY_KP_DEC;    break;
            case 0x2A:
            case 0x36:
	         return TRUE;
            default:
                 xf86MsgVerb(X_INFO, 4, "Unreported Prefix0 scancode: 0x%02x\n",
		             *scanCode);
                 *scanCode += 0x78;
          }
       break;
       case KEY_Prefix1: 
            pKbd->scanPrefix = (*scanCode == KEY_LCtrl) ? KEY_LCtrl : 0;
            return TRUE;
       case KEY_LCtrl:
            pKbd->scanPrefix = 0;
            if (*scanCode != KEY_NumLock)
                return TRUE;
            *scanCode = KEY_Pause;       /* pause */
    }
    return FALSE;
}

--- NEW FILE: bios_devmem.c ---
/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/bios_devmem.c,v 3.5 1998/09/13 00:51:32 dawes Exp $ */
/*
 * Copyright 1993 by David Wexelblat <dwex at 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.
 *
 */
/* $XConsortium: bios_devmem.c /main/5 1996/10/19 18:07:41 kaleb $ */

#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);
}

--- NEW FILE: bios_mmap.c ---
/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/bios_mmap.c,v 1.8 2000/11/19 16:38:06 tsi Exp $ */
/*
 * Copyright 1993 by David Wexelblat <dwex at 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.
 *
 */
/* $XConsortium: bios_V4mmap.c /main/4 1996/02/21 17:54:27 kaleb $ */

#include <X11/X.h>

#include "xf86.h"
#include "xf86Priv.h"
#include "xf86_OSlib.h"

#ifndef MAP_FAILED
#define MAP_FAILED ((void *)-1)
#endif

/*
 * Read BIOS via mmap()ing DEV_MEM
 */

#ifndef __alpha__
int
xf86ReadBIOS(unsigned long Base, unsigned long Offset, unsigned char *Buf,
	     int Len)
{
	int fd;
	unsigned char *ptr;
	int psize;
	int mlen;

	if ((fd = open(DEV_MEM, O_RDONLY)) < 0)
	{
		xf86Msg(X_WARNING, "xf86ReadBIOS: Failed to open %s (%s)\n",
			DEV_MEM, strerror(errno));
		return(-1);
	}
	psize = xf86getpagesize();
	Offset += Base & (psize - 1);
	Base &= ~(psize - 1);
	mlen = (Offset + Len + psize - 1) & ~(psize - 1);
	ptr = (unsigned char *)mmap((caddr_t)0, mlen, PROT_READ,
					MAP_SHARED, fd, (off_t)Base);
	if (ptr == MAP_FAILED)
	{
		xf86Msg(X_WARNING, "xf86ReadBIOS: %s mmap failed (%s)\n",
			DEV_MEM, strerror(errno));
		close(fd);
		return(-1);
	}
#ifdef DEBUG
	ErrorF("xf86ReadBIOS: BIOS at 0x%08x has signature 0x%04x\n",
		Base, ptr[0] | (ptr[1] << 8));
#endif
	(void)memcpy(Buf, (void *)(ptr + Offset), Len);
	(void)munmap((caddr_t)ptr, mlen);
	(void)close(fd);
	return(Len);
}

#else /* __alpha__ */

  /*
   *  We trick "mmap" into mapping BUS memory for us via BUS_BASE,
   *  which is the KSEG address of the start of the DENSE memory
   *  area.
   */

  /*
   * NOTE: there prolly ought to be more validity checks and all
   *  re: boundaries and sizes and such...
   */

/*
 * The Jensen lacks dense memory, thus we have to address the bus via
 * the sparse addressing scheme.
 *
 * Martin Ostermann (ost at comnets.rwth-aachen.de) - Apr.-Sep. 1996
 */

#ifdef linux

#ifdef TEST_JENSEN_CODE /* define to test the Sparse addressing on a non-Jensen */
#define SPARSE (5)
#define isJensen (1)
#else
#define isJensen (!_bus_base())
#define SPARSE (7)
#endif

extern unsigned long _bus_base(void);
extern unsigned long _bus_base_sparse(void);
#define BUS_BASE (isJensen ? _bus_base_sparse() : _bus_base())
#define JENSEN_SHIFT(x) (isJensen ? ((long)x<<SPARSE) : (long)x)

#else

extern u_int64_t dense_base(void);
#define BUS_BASE dense_base()
#define JENSEN_SHIFT(x) ((long) x)

#endif

int
xf86ReadBIOS(unsigned long Base, unsigned long Offset, unsigned char *Buf,
	     int Len)
{
	caddr_t base;
 	int fd;
	int psize;
	int mlen;

	if ((fd = open(DEV_MEM, O_RDONLY)) < 0)
	{
		xf86Msg(X_WARNING, "xf86ReadBIOS: Failed to open %s (%s)\n",
			DEV_MEM, strerror(errno));
		return(-1);
	}

	psize = xf86getpagesize();
	Offset += Base & (psize - 1);
	Base &= ~(psize - 1);
	mlen = (Offset + Len + psize - 1) & ~(psize - 1);
	base = mmap((caddr_t)0, JENSEN_SHIFT(mlen), PROT_READ,
		    MAP_SHARED, fd, (off_t)(JENSEN_SHIFT(Base) + BUS_BASE));

	if (base == MAP_FAILED)
	{
		xf86Msg(X_WARNING, "xf86ReadBIOS: Failed to mmap %s (%s)\n",
			DEV_MEM, strerror(errno));
		return(-1);
	}

	xf86SlowBCopyFromBus((unsigned char *)(base+JENSEN_SHIFT(Offset)), 
								    Buf, Len);

	munmap((caddr_t)JENSEN_SHIFT(base), JENSEN_SHIFT(mlen));
	close(fd);
	return(Len);
}

#endif /* __alpha__ */

--- NEW FILE: inout.S ---
/* $XConsortium: inout.s /main/6 1996/02/21 17:53:35 kaleb $ */





/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/inout.s,v 3.5 1996/12/23 06:50:58 dawes Exp $ */

#include "assyntax.h"

/*
 *	Make i80386 io primitives available at C-level.
 */

	FILE("inout.s")
	AS_BEGIN
	SEG_TEXT

/*
 *-----------------------------------------------------------------------
 * inb ---
 *	Input one byte.
 *
 * Results:
 *      Byte in al.
 *-----------------------------------------------------------------------
 */
	GLOBL	GLNAME(inb)
GLNAME(inb):
	MOV_L	(REGOFF(4,ESP),EDX)
	SUB_L	(EAX,EAX)
	IN_B
	RET

/*
 *-----------------------------------------------------------------------
 * outb ---
 *	Output one byte.
 *
 * Results:
 *      None.
 *-----------------------------------------------------------------------
 */
	GLOBL	GLNAME(outb)
GLNAME(outb):
	MOV_L	(REGOFF(4,sp),EDX)
	MOV_L	(REGOFF(8,sp),EAX)
	OUT_B
	RET
/*
 *-----------------------------------------------------------------------
 * inw ---
 *	Input one 16-bit word.
 *
 * Results:
 *      Word in ax.
 *-----------------------------------------------------------------------
 */
	GLOBL	GLNAME(inw)
GLNAME(inw):
	MOV_L	(REGOFF(4,ESP),EDX)
	IN_W
	RET

/*
 *-----------------------------------------------------------------------
 * outw ---
 *	Output one 16-bit word.
 *
 * Results:
 *      None.
 *-----------------------------------------------------------------------
 */
	GLOBL	GLNAME(outw)
GLNAME(outw):
	MOV_L	(REGOFF(4,ESP),EDX)
	MOV_L	(REGOFF(8,ESP),EAX)
	OUT_W
	RET

/*
 *-----------------------------------------------------------------------
 * inl ---
 *	Input one 32-bit longword.
 *
 * Results:
 *      Word in eax.
 *-----------------------------------------------------------------------
 */
	GLOBL	GLNAME(inl)
GLNAME(inl):
	MOV_L	(REGOFF(4,ESP),EDX)
	IN_L
	RET

/*
 *-----------------------------------------------------------------------
 * outl ---
 *	Output one 32-bit longword.
 *
 * Results:
 *      None.
 *-----------------------------------------------------------------------
 */
	GLOBL	GLNAME(outl)
GLNAME(outl):
	MOV_L	(REGOFF(4,ESP),EDX)
	MOV_L	(REGOFF(8,ESP),EAX)
	OUT_L
	RET


--- NEW FILE: ioperm_noop.c ---
/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/ioperm_noop.c,v 3.3 1998/07/25 16:57:00 dawes Exp $ */
/*
 * Copyright 1993 by David Wexelblat <dwex at XFree86.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.
 *
 */
/* $XConsortium: ioperm_noop.c /main/3 1996/02/21 17:53:39 kaleb $ */

/*
 * Some platforms don't bother with I/O permissions, 
 * or the permissions are implicit with opening/enabling the console.
 */

#include <X11/X.h>
#include "xf86.h"
#include "xf86Priv.h"
#include "xf86_OSlib.h"

void
xf86EnableIO()
{
	return;
}

void
xf86DisableIO()
{
	return;
}


--- NEW FILE: kbd.c ---
/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/kbd.c,v 1.3 2003/08/24 17:37:05 dawes Exp $ */
/*
 * Copyright (c) 2001-2003 by The XFree86 Project, Inc.
 *
 * 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
 * and author(s) 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 copyright holder(s) and author(s).
 */

#include "xf86OSKbd.h"

Bool
xf86OSKbdPreInit(InputInfoPtr pInfo)
{
    return FALSE;
}

--- NEW FILE: kmod_noop.c ---
/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/kmod_noop.c,v 1.2 2003/08/24 17:37:05 dawes Exp $ */
/*
 * Copyright (c) 2000 by The XFree86 Project, Inc.
 *
 * 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
 * and author(s) 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 copyright holder(s) and author(s).
 */

#include "xf86_OSproc.h"

int xf86LoadKernelModule(const char *pathname)
{
    (void) pathname;
    return 0;  /* failure */
}

--- NEW FILE: libc_wrapper.c ---
/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/libc_wrapper.c,v 1.102 2003/11/19 03:52:58 dawes Exp $ */
/*
 * Copyright 1997-2003 by The XFree86 Project, Inc.
 *
 * 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 names of Orest Zborowski and David Wexelblat 
 * not be used in advertising or publicity pertaining to distribution of 
 * the software without specific, written prior permission.  Orest Zborowski
 * and David Wexelblat make no representations about the suitability of this 
 * software for any purpose.  It is provided "as is" without express or 
 * implied warranty.
 *
 * THE XFREE86 PROJECT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD 
 * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND 
 * FITNESS, IN NO EVENT SHALL OREST ZBOROWSKI OR DAVID WEXELBLAT BE LIABLE 
 * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 
[...1991 lines suppressed...]
xf86setjmp1(xf86jmp_buf env, int arg2)
{
    FatalError("setjmp: type 1 called instead of type %d", xf86getjmptype());
}

#endif  /* HAS_GLIBC_SIGSETJMP */

int
xf86setjmp1_arg2()
{
    return 1;
}

int
xf86setjmperror(xf86jmp_buf env)
{
    FatalError("setjmp: don't know how to handle setjmp() type %d",
	       xf86getjmptype());
}


--- NEW FILE: pm_noop.c ---
/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/pm_noop.c,v 1.2 2003/08/24 17:37:06 dawes Exp $ */
/*
 * Copyright (c) 2000 by The XFree86 Project, Inc.
 *
 * 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
 * and author(s) 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 copyright holder(s) and author(s).
 */

/* Stubs for the OS-support layer power-management functions. */

#include <X11/X.h>
#include "os.h"
#include "xf86.h"
#include "xf86Priv.h"
#define XF86_OS_PRIVS
#include "xf86_OSproc.h"

PMClose
xf86OSPMOpen(void)
{
	return NULL;
}



--- NEW FILE: posix_tty.c ---
/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/posix_tty.c,v 3.30 2003/08/24 17:37:06 dawes Exp $ */
/*
 * Copyright 1993-2003 by The XFree86 Project, Inc.
 *
 * 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.
 */
/*
 *
 * Copyright (c) 1997  Metro Link Incorporated
 *
 * 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 X CONSORTIUM 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 Metro Link shall not be
 * used in advertising or otherwise to promote the sale, use or other dealings
 * in this Software without prior written authorization from Metro Link.
 *
 */

/* $XConsortium: posix_tty.c /main/7 1996/10/19 18:07:47 kaleb $ */

#include <X11/X.h>
#include "xf86.h"
#include "xf86Priv.h"
#include "xf86_OSlib.h"

static int 
GetBaud (int baudrate)
{
#ifdef B300
	if (baudrate == 300)
		return B300;
#endif
#ifdef B1200
	if (baudrate == 1200)
		return B1200;
#endif
#ifdef B2400
	if (baudrate == 2400)
		return B2400;
#endif
#ifdef B4800
	if (baudrate == 4800)
		return B4800;
#endif
#ifdef B9600
	if (baudrate == 9600)
		return B9600;
#endif
#ifdef B19200
	if (baudrate == 19200)
		return B19200;
#endif
#ifdef B38400
	if (baudrate == 38400)
		return B38400;
#endif
#ifdef B57600
	if (baudrate == 57600)
		return B57600;
#endif
#ifdef B115200
	if (baudrate == 115200)
		return B115200;
#endif
#ifdef B230400
	if (baudrate == 230400)
		return B230400;
#endif
#ifdef B460800
	if (baudrate == 460800)
		return B460800;
#endif
	return (0);
}

int
xf86OpenSerial (pointer options)
{
#ifdef Lynx
	struct sgttyb ms_sgtty;
#endif
	struct termios t;
	int fd, i;
	char *dev;

	dev = xf86SetStrOption (options, "Device", NULL);
	if (!dev)
	{
		xf86Msg (X_ERROR, "xf86OpenSerial: No Device specified.\n");
		return (-1);
	}

	SYSCALL (fd = open (dev, O_RDWR | O_NONBLOCK));
	if (fd == -1)
	{
		xf86Msg (X_ERROR,
			 "xf86OpenSerial: Cannot open device %s\n\t%s.\n",
			 dev, strerror (errno));
		xfree(dev);
		return (-1);
	}

	if (!isatty (fd))
	{
#if 1
		/* Allow non-tty devices to be opened. */
		xfree(dev);
		return (fd);
#else
		xf86Msg (X_WARNING,
			 "xf86OpenSerial: Specified device %s is not a tty\n",
			 dev);
		SYSCALL (close (fd));
		errno = EINVAL;
		xfree(dev);
		return (-1);
#endif
	}

#ifdef Lynx
	/* LynxOS does not assert DTR without this */
	ioctl (fd, TIOCGETP, (char *) &ms_sgtty);
	ioctl (fd, TIOCSDTR, (char *) &ms_sgtty);
#endif

	/* set up default port parameters */
	SYSCALL (tcgetattr (fd, &t));
	t.c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP|INLCR\
						|IGNCR|ICRNL|IXON);
	t.c_oflag &= ~OPOST;
	t.c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN);
	t.c_cflag &= ~(CSIZE|PARENB);
	t.c_cflag |= CS8|CLOCAL;

	cfsetispeed (&t, B9600);
	cfsetospeed (&t, B9600);
	t.c_cc[VMIN] = 1;
	t.c_cc[VTIME] = 0;

	SYSCALL (tcsetattr (fd, TCSANOW, &t));

	if (xf86SetSerial (fd, options) == -1)
	{
		SYSCALL (close (fd));
		xfree(dev);
		return (-1);
	}

	SYSCALL (i = fcntl (fd, F_GETFL, 0));
	if (i == -1)
	{
		SYSCALL (close (fd));
		xfree(dev);
		return (-1);
	}
	i &= ~O_NONBLOCK;
	SYSCALL (i = fcntl (fd, F_SETFL, i));
	if (i == -1)
	{
		SYSCALL (close (fd));
		xfree(dev);
		return (-1);
	}
	xfree(dev);
	return (fd);
}

int
xf86SetSerial (int fd, pointer options)
{
	struct termios t;
	int val;
	const char *s;
	int baud, r;

	if (fd < 0)
		return -1;

	/* Don't try to set parameters for non-tty devices. */
	if (!isatty(fd))
		return 0;

	SYSCALL (tcgetattr (fd, &t));

	if ((val = xf86SetIntOption (options, "BaudRate", 0)))
	{
		if ((baud = GetBaud (val)))
		{
			cfsetispeed (&t, baud);
			cfsetospeed (&t, baud);
		}
		else
		{
			xf86Msg (X_ERROR,
				 "Invalid Option BaudRate value: %d\n", val);
			return (-1);
		}
	}

	if ((val = xf86SetIntOption (options, "StopBits", 0)))
	{
		switch (val)
		{
		case 1:
			t.c_cflag &= ~(CSTOPB);
			break;
		case 2:
			t.c_cflag |= CSTOPB;
			break;
		default:
			xf86Msg (X_ERROR,
				 "Invalid Option StopBits value: %d\n", val);
			return (-1);
			break;
		}
	}

	if ((val = xf86SetIntOption (options, "DataBits", 0)))
	{
		switch (val)
		{
		case 5:
			t.c_cflag &= ~(CSIZE);
			t.c_cflag |= CS5;
			break;
		case 6:
			t.c_cflag &= ~(CSIZE);
			t.c_cflag |= CS6;
			break;
		case 7:
			t.c_cflag &= ~(CSIZE);
			t.c_cflag |= CS7;
			break;
		case 8:
			t.c_cflag &= ~(CSIZE);
			t.c_cflag |= CS8;
			break;
		default:
			xf86Msg (X_ERROR,
				 "Invalid Option DataBits value: %d\n", val);
			return (-1);
			break;
		}
	}

	if ((s = xf86SetStrOption (options, "Parity", NULL)))
	{
		if (xf86NameCmp (s, "Odd") == 0)
		{
			t.c_cflag |= PARENB | PARODD;
		}
		else if (xf86NameCmp (s, "Even") == 0)
		{
			t.c_cflag |= PARENB;
			t.c_cflag &= ~(PARODD);
		}
		else if (xf86NameCmp (s, "None") == 0)
		{
			t.c_cflag &= ~(PARENB);
		}
		else
		{
			xf86Msg (X_ERROR, "Invalid Option Parity value: %s\n",
				 s);
			return (-1);
		}
	}

	if ((val = xf86SetIntOption (options, "Vmin", -1)) != -1)
	{
		t.c_cc[VMIN] = val;
	}
	if ((val = xf86SetIntOption (options, "Vtime", -1)) != -1)
	{
		t.c_cc[VTIME] = val;
	}

	if ((s = xf86SetStrOption (options, "FlowControl", NULL)))
	{
		xf86MarkOptionUsedByName (options, "FlowControl");
		if (xf86NameCmp (s, "Xoff") == 0)
		{
			t.c_iflag |= IXOFF;
		}
		else if (xf86NameCmp (s, "Xon") == 0)
		{
			t.c_iflag |= IXON;
		}
		else if (xf86NameCmp (s, "XonXoff") == 0)
		{
			t.c_iflag |= IXON|IXOFF;
		}
		else if (xf86NameCmp (s, "None") == 0)
		{
			t.c_iflag &= ~(IXON | IXOFF);
		}
		else
		{
			xf86Msg (X_ERROR,
				 "Invalid Option FlowControl value: %s\n", s);
			return (-1);
		}
	}

	if ((xf86SetBoolOption (options, "ClearDTR", FALSE)))
	{
#ifdef CLEARDTR_SUPPORT
# if !defined(Lynx) || defined(TIOCMBIC)
		val = TIOCM_DTR;
		SYSCALL (ioctl(fd, TIOCMBIC, &val));
# else
		SYSCALL (ioctl(fd, TIOCCDTR, NULL));
# endif
#else
		xf86Msg (X_WARNING,
			 "Option ClearDTR not supported on this OS\n");
			return (-1);
#endif
		xf86MarkOptionUsedByName (options, "ClearDTR");
	}

	if ((xf86SetBoolOption (options, "ClearRTS", FALSE)))
	{
#ifdef CLEARRTS_SUPPORT
		val = TIOCM_RTS;
		SYSCALL (ioctl(fd, TIOCMBIC, &val));
#else
		xf86Msg (X_WARNING,
			 "Option ClearRTS not supported on this OS\n");
			return (-1);
#endif
		xf86MarkOptionUsedByName (options, "ClearRTS");
	}

	SYSCALL (r = tcsetattr (fd, TCSANOW, &t));
	return (r);
}

int
xf86SetSerialSpeed (int fd, int speed)
{
	struct termios t;
	int baud, r;

	if (fd < 0)
		return -1;

	/* Don't try to set parameters for non-tty devices. */
	if (!isatty(fd))
		return 0;

	SYSCALL (tcgetattr (fd, &t));

	if ((baud = GetBaud (speed)))
	{
		cfsetispeed (&t, baud);
		cfsetospeed (&t, baud);
	}
	else
	{
		xf86Msg (X_ERROR,
			 "Invalid Option BaudRate value: %d\n", speed);
		return (-1);
	}

	SYSCALL (r = tcsetattr (fd, TCSANOW, &t));
	return (r);
}

int
xf86ReadSerial (int fd, void *buf, int count)
{
	int r;
#ifdef DEBUG
	int i;
#endif
	SYSCALL (r = read (fd, buf, count));
#ifdef DEBUG
	ErrorF("ReadingSerial: 0x%x",
	       (unsigned char)*(((unsigned char *)buf)));
	for (i = 1; i < r; i++)
	    ErrorF(", 0x%x",(unsigned char)*(((unsigned char *)buf) + i));
	ErrorF("\n");
#endif
	return (r);
}

int
xf86WriteSerial (int fd, const void *buf, int count)
{
	int r;
#ifdef DEBUG
	int i;

	ErrorF("WritingSerial: 0x%x",(unsigned char)*(((unsigned char *)buf)));
	for (i = 1; i < count; i++)
	    ErrorF(", 0x%x",(unsigned char)*(((unsigned char *)buf) + i));
	ErrorF("\n");
#endif
	SYSCALL (r = write (fd, buf, count));
	return (r);
}

int
xf86CloseSerial (int fd)
{
	int r;

	SYSCALL (r = close (fd));
	return (r);
}

int
xf86WaitForInput (int fd, int timeout)
{
	fd_set readfds;
	struct timeval to;
	int r;

	FD_ZERO(&readfds);

	if (fd >= 0) {
	    FD_SET(fd, &readfds);
	}
	
	to.tv_sec = timeout / 1000000;
	to.tv_usec = timeout % 1000000;

	if (fd >= 0) {
	    SYSCALL (r = select (FD_SETSIZE, &readfds, NULL, NULL, &to));
	}
	else {
	    SYSCALL (r = select (FD_SETSIZE, NULL, NULL, NULL, &to));
	}
	xf86ErrorFVerb (9,"select returned %d\n", r);
	return (r);
}

int
xf86SerialSendBreak (int fd, int duration)
{
	int r;

	SYSCALL (r = tcsendbreak (fd, duration));
	return (r);
	
}

int
xf86FlushInput(int fd)
{
	fd_set fds;
	struct timeval timeout;
	char c[4];

#ifdef DEBUG
	ErrorF("FlushingSerial\n");
#endif
	if (tcflush(fd, TCIFLUSH) == 0)
		return 0;

	timeout.tv_sec = 0;
	timeout.tv_usec = 0;
	FD_ZERO(&fds);
	FD_SET(fd, &fds);
	while (select(FD_SETSIZE, &fds, NULL, NULL, &timeout) > 0) {
		if (read(fd, &c, sizeof(c)) < 1)
		    return 0;
		FD_ZERO(&fds);
		FD_SET(fd, &fds);
	}
	return 0;
}

static struct states {
	int xf;
	int os;
} modemStates[] = {
#ifdef TIOCM_LE
	{ XF86_M_LE, TIOCM_LE },
#endif
#ifdef TIOCM_DTR
	{ XF86_M_DTR, TIOCM_DTR },
#endif
#ifdef TIOCM_RTS
	{ XF86_M_RTS, TIOCM_RTS },
#endif
#ifdef TIOCM_ST
	{ XF86_M_ST, TIOCM_ST },
#endif
#ifdef TIOCM_SR
	{ XF86_M_SR, TIOCM_SR },
#endif
#ifdef TIOCM_CTS
	{ XF86_M_CTS, TIOCM_CTS },
#endif
#ifdef TIOCM_CAR
	{ XF86_M_CAR, TIOCM_CAR },
#elif defined(TIOCM_CD)
	{ XF86_M_CAR, TIOCM_CD },
#endif
#ifdef TIOCM_RNG
	{ XF86_M_RNG, TIOCM_RNG },
#elif defined(TIOCM_RI)
	{ XF86_M_CAR, TIOCM_RI },
#endif
#ifdef TIOCM_DSR
	{ XF86_M_DSR, TIOCM_DSR },
#endif
};

static int numStates = sizeof(modemStates) / sizeof(modemStates[0]);

static int
xf2osState(int state)
{
	int i;
	int ret = 0;

	for (i = 0; i < numStates; i++)
		if (state & modemStates[i].xf)
			ret |= modemStates[i].os;
	return ret;
}

static int
os2xfState(int state)
{
	int i;
	int ret = 0;

	for (i = 0; i < numStates; i++)
		if (state & modemStates[i].os)
			ret |= modemStates[i].xf;
	return ret;
}

static int
getOsStateMask(void)
{
	int i;
	int ret = 0;
	for (i = 0; i < numStates; i++)
		ret |= modemStates[i].os;
	return ret;
}

static int osStateMask = 0;

int
xf86SetSerialModemState(int fd, int state)
{
	int ret;
	int s;

	if (fd < 0)
		return -1;

	/* Don't try to set parameters for non-tty devices. */
	if (!isatty(fd))
		return 0;

#ifndef TIOCMGET
	return -1;
#else
	if (!osStateMask)
		osStateMask = getOsStateMask();

	state = xf2osState(state);
	SYSCALL((ret = ioctl(fd, TIOCMGET, &s)));
	if (ret < 0)
		return -1;
	s &= ~osStateMask;
	s |= state;
	SYSCALL((ret = ioctl(fd, TIOCMSET, &s)));
	if (ret < 0)
		return -1;
	else
		return 0;
#endif
}

int
xf86GetSerialModemState(int fd)
{
	int ret;
	int s;

	if (fd < 0)
		return -1;

	/* Don't try to set parameters for non-tty devices. */
	if (!isatty(fd))
		return 0;

#ifndef TIOCMGET
	return -1;
#else
	SYSCALL((ret = ioctl(fd, TIOCMGET, &s)));
	if (ret < 0)
		return -1;
	return os2xfState(s);
#endif
}

int
xf86SerialModemSetBits(int fd, int bits)
{
	int ret;
	int s;

	if (fd < 0)
		return -1;

	/* Don't try to set parameters for non-tty devices. */
	if (!isatty(fd))
		return 0;

#ifndef TIOCMGET
	return -1;
#else
	s = xf2osState(bits);
	SYSCALL((ret = ioctl(fd, TIOCMBIS, &s)));
	return ret;
#endif
}

int
xf86SerialModemClearBits(int fd, int bits)
{
	int ret;
	int s;

	if (fd < 0)
		return -1;

	/* Don't try to set parameters for non-tty devices. */
	if (!isatty(fd))
		return 0;

#ifndef TIOCMGET
	return -1;
#else
	s = xf2osState(bits);
	SYSCALL((ret = ioctl(fd, TIOCMBIC, &s)));
	return ret;
#endif
}

--- NEW FILE: sigio.c ---
/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/sigio.c,v 1.16 2003/09/04 00:21:17 dawes Exp $ */

/* sigio.c -- Support for SIGIO handler installation and removal
 * Created: Thu Jun  3 15:39:18 1999 by faith at precisioninsight.com
 *
 * Copyright 1999 Precision Insight, Inc., Cedar Park, Texas.
 * 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 (including the next
 * paragraph) 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
 * PRECISION INSIGHT AND/OR ITS SUPPLIERS 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.
 * 
 * Authors: Rickard E. (Rik) Faith <faith at valinux.com>
 */
/*
 * Copyright (c) 2002 by The XFree86 Project, Inc.
 *
 * 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
 * and author(s) 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 copyright holder(s) and author(s).
 */

#ifdef XFree86Server
# include <X11/X.h>
# include "xf86.h"
# include "xf86drm.h"
# include "xf86Priv.h"
# include "xf86_OSlib.h"
# include "xf86drm.h"
# include "inputstr.h"
#else
# include <unistd.h>
# include <signal.h>
# include <fcntl.h>
# include <sys/time.h>
# include <errno.h>
# include <stdio.h>
# include <string.h>
# define SYSCALL(call) while(((call) == -1) && (errno == EINTR))
#endif

/*
 * Linux libc5 defines FASYNC, but not O_ASYNC.  Don't know if it is
 * functional or not.
 */
#if defined(FASYNC) && !defined(O_ASYNC)
#  define O_ASYNC FASYNC
#endif

#ifdef MAX_DEVICES
/* MAX_DEVICES represents the maximimum number of input devices usable
 * at the same time plus one entry for DRM support.
 */
# define MAX_FUNCS   (MAX_DEVICES + 1)
#else
# define MAX_FUNCS 16
#endif

typedef struct _xf86SigIOFunc {
    void    (*f) (int, void *);
    int	    fd;
    void    *closure;
} Xf86SigIOFunc;

static Xf86SigIOFunc	xf86SigIOFuncs[MAX_FUNCS];
static int		xf86SigIOMax;
static int		xf86SigIOMaxFd;
static fd_set		xf86SigIOMask;

/*
 * SIGIO gives no way of discovering which fd signalled, select
 * to discover
 */
static void
xf86SIGIO (int sig)
{
    int	    i;
    fd_set  ready;
    struct timeval  to;
    int	    r;

    ready = xf86SigIOMask;
    to.tv_sec = 0;
    to.tv_usec = 0;
    SYSCALL (r = select (xf86SigIOMaxFd, &ready, 0, 0, &to));
    for (i = 0; r > 0 && i < xf86SigIOMax; i++)
	if (xf86SigIOFuncs[i].f && FD_ISSET (xf86SigIOFuncs[i].fd, &ready))
	{
	    (*xf86SigIOFuncs[i].f)(xf86SigIOFuncs[i].fd,
				   xf86SigIOFuncs[i].closure);
	    r--;
	}
#ifdef XFree86Server
    if (r > 0) {
      xf86Msg(X_ERROR, "SIGIO %d descriptors not handled\n", r);
    }
#endif
}

static int
xf86IsPipe (int fd)
{
    struct stat	buf;
    
    if (fstat (fd, &buf) < 0)
	return 0;
    return S_ISFIFO(buf.st_mode);
}

int
xf86InstallSIGIOHandler(int fd, void (*f)(int, void *), void *closure)
{
    struct sigaction sa;
    struct sigaction osa;
    int	i;
    int blocked;

    for (i = 0; i < MAX_FUNCS; i++)
    {
	if (!xf86SigIOFuncs[i].f)
	{
	    if (xf86IsPipe (fd))
		return 0;
	    blocked = xf86BlockSIGIO();
	    if (fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) | O_ASYNC) == -1) {
#ifdef XFree86Server
		xf86Msg(X_WARNING, "fcntl(%d, O_ASYNC): %s\n", 
			fd, strerror(errno));
#else
		fprintf(stderr,"fcntl(%d, O_ASYNC): %s\n", 
			fd, strerror(errno));
#endif
		xf86UnblockSIGIO(blocked);
		return 0;
	    }
	    if (fcntl(fd, F_SETOWN, getpid()) == -1) {
#ifdef XFree86Server
		xf86Msg(X_WARNING, "fcntl(%d, F_SETOWN): %s\n", 
			fd, strerror(errno));
#else
		fprintf(stderr,"fcntl(%d, F_SETOWN): %s\n", 
			fd, strerror(errno));
#endif
		xf86UnblockSIGIO(blocked);
		return 0;
	    }
	    sigemptyset(&sa.sa_mask);
	    sigaddset(&sa.sa_mask, SIGIO);
	    sa.sa_flags   = 0;
	    sa.sa_handler = xf86SIGIO;
	    sigaction(SIGIO, &sa, &osa);
	    xf86SigIOFuncs[i].fd = fd;
	    xf86SigIOFuncs[i].closure = closure;
	    xf86SigIOFuncs[i].f = f;
	    if (i >= xf86SigIOMax)
		xf86SigIOMax = i+1;
	    if (fd >= xf86SigIOMaxFd)
		xf86SigIOMaxFd = fd + 1;
	    FD_SET (fd, &xf86SigIOMask);
	    xf86UnblockSIGIO(blocked);
	    return 1;
	}
 	/* Allow overwriting of the closure and callback */
 	else if (xf86SigIOFuncs[i].fd == fd)
 	{
 	    xf86SigIOFuncs[i].closure = closure;
 	    xf86SigIOFuncs[i].f = f;
 	    return 1;
 	}
    }
    return 0;
}

int
xf86RemoveSIGIOHandler(int fd)
{
    struct sigaction sa;
    struct sigaction osa;
    int	i;
    int max;
    int maxfd;
    int ret;

    max = 0;
    maxfd = -1;
    ret = 0;
    for (i = 0; i < MAX_FUNCS; i++)
    {
	if (xf86SigIOFuncs[i].f)
	{
	    if (xf86SigIOFuncs[i].fd == fd)
	    {
		xf86SigIOFuncs[i].f = 0;
		xf86SigIOFuncs[i].fd = 0;
		xf86SigIOFuncs[i].closure = 0;
		FD_CLR (fd, &xf86SigIOMask);
		ret = 1;
	    }
	    else
	    {
		max = i + 1;
		if (xf86SigIOFuncs[i].fd >= maxfd)
		    maxfd = xf86SigIOFuncs[i].fd + 1;
	    }
	}
    }
    if (ret)
    {
	fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) & ~O_ASYNC);
	xf86SigIOMax = max;
	xf86SigIOMaxFd = maxfd;
	if (!max)
	{
	    sigemptyset(&sa.sa_mask);
	    sigaddset(&sa.sa_mask, SIGIO);
	    sa.sa_flags   = 0;
	    sa.sa_handler = SIG_DFL;
	    sigaction(SIGIO, &sa, &osa);
	}
    }
    return ret;
}

int
xf86BlockSIGIO (void)
{
    sigset_t	set, old;

    sigemptyset (&set);
    sigaddset (&set, SIGIO);
    sigprocmask (SIG_BLOCK, &set, &old);
    return sigismember (&old, SIGIO);
}

void
xf86UnblockSIGIO (int wasset)
{
    sigset_t	set;

    if (!wasset)
    {
	sigemptyset (&set);
	sigaddset (&set, SIGIO);
	sigprocmask (SIG_UNBLOCK, &set, NULL);
    }
}

#ifdef XFree86Server
void
xf86AssertBlockedSIGIO (char *where)
{
    sigset_t	set, old;

    sigemptyset (&set);
    sigprocmask (SIG_BLOCK, &set, &old);
    if (!sigismember (&old, SIGIO))
	xf86Msg (X_ERROR, "SIGIO not blocked at %s\n", where);
}

/* XXX This is a quick hack for the benefit of xf86SetSilkenMouse() */

int
xf86SIGIOSupported (void)
{
    return 1;
}

#endif

--- NEW FILE: sigiostubs.c ---
/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/sigiostubs.c,v 1.4 2003/08/24 17:37:06 dawes Exp $ */
/*
 * Copyright (c) 1999-2003 by The XFree86 Project, Inc.
 *
 * 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
 * and author(s) 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 copyright holder(s) and author(s).
 */

#ifdef XFree86Server
#ifdef __UNIXOS2__
# define I_NEED_OS2_H
#endif
# include <X11/X.h>
# include "xf86.h"
# include "xf86drm.h"
# include "xf86Priv.h"
# include "xf86_OSlib.h"
# include "xf86drm.h"
#else
# include <unistd.h>
# include <signal.h>
# include <fcntl.h>
# include <sys/time.h>
# include <errno.h>
#endif

int
xf86InstallSIGIOHandler(int fd, void (*f)(int, void *), void *closure)
{
    return 0;
}

int
xf86RemoveSIGIOHandler(int fd)
{
    return 0;
}

int
xf86BlockSIGIO (void)
{
    return 0;
}

void
xf86UnblockSIGIO (int wasset)
{
}

#ifdef XFree86Server
void
xf86AssertBlockedSIGIO (char *where)
{
}
#endif

/* XXX This is a quick hack for the benefit of xf86SetSilkenMouse() */
Bool
xf86SIGIOSupported ()
{
    return FALSE;
}


--- NEW FILE: stdPci.c ---
/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/stdPci.c,v 3.4 2003/08/24 17:37:06 dawes Exp $ */
/*
 * Copyright (c) 1999-2003 by The XFree86 Project, Inc.
 *
 * 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
 * and author(s) 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 copyright holder(s) and author(s).
 */

#ifdef __UNIXOS2__
# define I_NEED_OS2_H
#endif
#include <X11/X.h>
#include "xf86.h"
#include "xf86Priv.h"
#include "xf86Privstr.h"
#include "xf86Pci.h"
#define NEED_OS_RAC_PROTOS
#include "xf86_OSlib.h"

#ifndef HAVE_PCI_SIZE_FUNC
#define xf86StdGetPciSizeFromOS xf86GetPciSizeFromOS
#endif

Bool
xf86StdGetPciSizeFromOS(PCITAG tag, int index, int* bits)
{
    return FALSE;
}

--- NEW FILE: stdResource.c ---
/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/stdResource.c,v 1.22 2003/08/24 17:37:06 dawes Exp $ */
/*
 * Copyright (c) 1999-2003 by The XFree86 Project, Inc.
 *
 * 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
 * and author(s) 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 copyright holder(s) and author(s).
 */

/* Standard resource information code */

#ifdef __UNIXOS2__
# define I_NEED_OS2_H
#endif
#include <X11/X.h>
#include "xf86.h"
#include "xf86Priv.h"
#include "xf86Privstr.h"
#include "xf86Pci.h"
#define NEED_OS_RAC_PROTOS
#include "xf86_OSlib.h"
#include "xf86Resources.h"

#ifdef __UNIXOS2__
# undef ADDRESS
#endif
/* Avoid Imakefile changes */
#include "bus/Pci.h"

#ifdef USESTDRES
#define xf86StdBusAccWindowsFromOS xf86BusAccWindowsFromOS
#define xf86StdAccResFromOS xf86AccResFromOS
#define xf86StdPciBusAccWindowsFromOS xf86PciBusAccWindowsFromOS
#define xf86StdIsaBusAccWindowsFromOS xf86IsaBusAccWindowsFromOS

resRange PciAvoid[] = {_PCI_AVOID_PC_STYLE, _END};
#endif

#ifdef INCLUDE_XF86_NO_DOMAIN

resPtr
xf86StdBusAccWindowsFromOS(void)
{
    /* Fallback is to allow addressing of all memory space */
    resPtr ret = NULL;
    resRange range;

    RANGE(range, 0x00000000, 0xffffffff, ResExcMemBlock);
    ret = xf86AddResToList(ret, &range, -1);

    /* Fallback is to allow addressing of all I/O space */
    RANGE(range, 0x00000000, 0x0000ffff, ResExcIoBlock);
    ret = xf86AddResToList(ret, &range, -1);
    return ret;
}

resPtr
xf86StdPciBusAccWindowsFromOS(void)
{
    /* Fallback is to allow addressing of all memory space */
    resPtr ret = NULL;
    resRange range;

    RANGE(range, 0x00000000, 0xffffffff, ResExcMemBlock);
    ret = xf86AddResToList(ret, &range, -1);

    /* Fallback is to allow addressing of all I/O space */
    RANGE(range, 0x00000000, 0x0000ffff, ResExcIoBlock);
    ret = xf86AddResToList(ret, &range, -1);
    return ret;
}

#ifdef INCLUDE_UNUSED

resPtr
xf86StdIsaBusAccWindowsFromOS(void)
{
    /* Fallback is to allow addressing of all memory space */
    resPtr ret = NULL;
    resRange range;

    RANGE(range, 0x00000000, 0xffffffff, ResExcMemBlock);
    ret = xf86AddResToList(ret, &range, -1);

    /* Fallback is to allow addressing of all I/O space */
    RANGE(range, 0x00000000, 0x0000ffff, ResExcIoBlock);
    ret = xf86AddResToList(ret, &range, -1);
    return ret;
}

#endif /* INCLUDE_UNUSED */

resPtr
xf86StdAccResFromOS(resPtr ret)
{
    resRange range;

    /*
     * Fallback is to claim the following areas:
     *
     * 0x00000000 - 0x0009ffff	low 640k host memory
     * 0x000c0000 - 0x000effff  location of VGA and other extensions ROMS
     * 0x000f0000 - 0x000fffff	system BIOS
     * 0x00100000 - 0x3fffffff	low 1G - 1MB host memory
     * 0xfec00000 - 0xfecfffff	default I/O APIC config space
     * 0xfee00000 - 0xfeefffff	default Local APIC config space
     * 0xffe00000 - 0xffffffff	high BIOS area (should this be included?)
     *
     * reference: Intel 440BX AGP specs
     *
     * The two APIC spaces appear to be BX-specific and should be dealt with
     * elsewhere.
     */

    /* Fallback is to claim 0x0 - 0x9ffff and 0x100000 - 0x7fffffff */
    RANGE(range, 0x00000000, 0x0009ffff, ResExcMemBlock);
    ret = xf86AddResToList(ret, &range, -1);
    RANGE(range, 0x000c0000, 0x000effff, ResExcMemBlock);
    ret = xf86AddResToList(ret, &range, -1);
    RANGE(range, 0x000f0000, 0x000fffff, ResExcMemBlock);
    ret = xf86AddResToList(ret, &range, -1);
    RANGE(range, 0x00100000, 0x3fffffff,
	ResExcMemBlock | ResBios | ResEstimated);
    ret = xf86AddResToList(ret, &range, -1);
#if 0
    RANGE(range, 0xfec00000, 0xfecfffff, ResExcMemBlock | ResBios);
    ret = xf86AddResToList(ret, &range, -1);
    RANGE(range, 0xfee00000, 0xfeefffff, ResExcMemBlock | ResBios);
    ret = xf86AddResToList(ret, &range, -1);
#endif
    RANGE(range, 0xffe00000, 0xffffffff, ResExcMemBlock | ResBios);
    ret = xf86AddResToList(ret, &range, -1);

    /*
     * Fallback would be to claim well known ports in the 0x0 - 0x3ff range
     * along with their sparse I/O aliases, but that's too imprecise.  Instead
     * claim a bare minimum here.
     */
    RANGE(range, 0x00000000, 0x000000ff, ResExcIoBlock); /* For mainboard */
    ret = xf86AddResToList(ret, &range, -1);

    /*
     * At minimum, the top and bottom resources must be claimed, so that
     * resources that are (or appear to be) unallocated can be relocated.
     */
/*  RANGE(range, 0x00000000, 0x00000000, ResExcMemBlock);
    ret = xf86AddResToList(ret, &range, -1);
    RANGE(range, 0xffffffff, 0xffffffff, ResExcMemBlock);
    ret = xf86AddResToList(ret, &range, -1);
    RANGE(range, 0x00000000, 0x00000000, ResExcIoBlock);
    ret = xf86AddResToList(ret, &range, -1); */
    RANGE(range, 0x0000ffff, 0x0000ffff, ResExcIoBlock);
    ret = xf86AddResToList(ret, &range, -1);

    /* XXX add others */
    return ret;
}

#endif /* INCLUDE_XF86_NO_DOMAIN */

--- NEW FILE: std_kbdEv.c ---
/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/std_kbdEv.c,v 3.2 1998/07/25 16:57:01 dawes Exp $ */
/*
 * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany
 * Copyright 1993 by David Dawes <dawes at xfree86.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 names of Thomas Roell and David Dawes 
 * not be used in advertising or publicity pertaining to distribution of 
 * the software without specific, written prior permission.  Thomas Roell and
 * David Dawes makes no representations about the suitability of this 
 * software for any purpose.  It is provided "as is" without express or 
 * implied warranty.
 *
 * THOMAS ROELL AND DAVID DAWES DISCLAIMS ALL WARRANTIES WITH REGARD TO 
 * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND 
 * FITNESS, IN NO EVENT SHALL THOMAS ROELL OR DAVID DAWES 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.
 *
 */
/* $XConsortium: std_kbdEv.c /main/4 1996/03/11 10:47:33 kaleb $ */

#include <X11/X.h>
#include "xf86.h"
#include "xf86Priv.h"
#include "xf86_OSlib.h"

void
xf86KbdEvents()
{
	unsigned char rBuf[64];
	int nBytes, i;

	if ((nBytes = read( xf86Info.consoleFd, (char *)rBuf, sizeof(rBuf)))
	    > 0)
	{
		for (i = 0; i < nBytes; i++)
			xf86PostKbdEvent(rBuf[i]);
	}
}


--- NEW FILE: sysv_kbd.c ---
/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/sysv_kbd.c,v 3.3 1998/07/25 16:57:02 dawes Exp $ */
/*
 * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany
 * Copyright 1993 by David Dawes <dawes at XFree86.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 names of Thomas Roell and David Dawes 
 * not be used in advertising or publicity pertaining to distribution of 
 * the software without specific, written prior permission.  Thomas Roell and
 * David Dawes makes no representations about the suitability of this 
 * software for any purpose.  It is provided "as is" without express or 
 * implied warranty.
 *
 * THOMAS ROELL AND DAVID DAWES DISCLAIMS ALL WARRANTIES WITH REGARD TO 
 * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND 
 * FITNESS, IN NO EVENT SHALL THOMAS ROELL OR DAVID DAWES 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.
 *
 */
/* $XConsortium: sysv_kbd.c /main/3 1996/02/21 17:53:59 kaleb $ */

#include <X11/X.h>

#include "compiler.h"

#include "xf86.h"
#include "xf86Priv.h"
#include "xf86_OSlib.h"

int
xf86GetKbdLeds()
{
	int leds;

	ioctl(xf86Info.consoleFd, KDGETLED, &leds);
	return(leds);
}

void
xf86SetKbdRepeat(char rad)
{
#ifdef KDSETRAD
	ioctl(xf86Info.consoleFd, KDSETRAD, rad);
#endif
}

static int kbdtrans;
static struct termio kbdtty;
static char *kbdemap = NULL;

void
xf86KbdInit()
{
#ifdef KDGKBMODE
	ioctl (xf86Info.consoleFd, KDGKBMODE, &kbdtrans);
#endif
	ioctl (xf86Info.consoleFd, TCGETA, &kbdtty);
#if defined(E_TABSZ) && !defined(SCO325)
	kbdemap = xalloc(E_TABSZ);
	if (ioctl(xf86Info.consoleFd, LDGMAP, kbdemap) < 0)
	{
		xfree(kbdemap);
		kbdemap = NULL;
	}
#endif
}

int
xf86KbdOn()
{
	struct termio nTty;

	ioctl(xf86Info.consoleFd, KDSKBMODE, K_RAW);
	ioctl(xf86Info.consoleFd, LDNMAP, 0); /* disable mapping completely */
	nTty = kbdtty;
	nTty.c_iflag = (IGNPAR | IGNBRK) & (~PARMRK) & (~ISTRIP);
	nTty.c_oflag = 0;
	nTty.c_cflag = CREAD | CS8 | B9600;
	nTty.c_lflag = 0;
	nTty.c_cc[VTIME]=0;
	nTty.c_cc[VMIN]=1;
	ioctl(xf86Info.consoleFd, TCSETA, &nTty);
	return(xf86Info.consoleFd);
}

int
xf86KbdOff()
{
	if (kbdemap)
	{
		ioctl(xf86Info.consoleFd, LDSMAP, kbdemap);
	}
	ioctl(xf86Info.consoleFd, KDSKBMODE, kbdtrans);
	ioctl(xf86Info.consoleFd, TCSETA, &kbdtty);
	return(xf86Info.consoleFd);
}

--- NEW FILE: vidmem.c ---
/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/vidmem.c,v 1.17 2003/08/24 17:37:06 dawes Exp $ */
/*
 * Copyright (c) 1993-2003 by The XFree86 Project, Inc.
 *
 * 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
 * and author(s) 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 copyright holder(s) and author(s).
 */


#ifdef __UNIXOS2__
# define I_NEED_OS2_H
#endif
#include <X11/X.h>
#include "input.h"
#include "scrnintstr.h"

#include "xf86.h"
#include "xf86Priv.h"
#include "xf86_OSlib.h"
#include "xf86OSpriv.h"

/*
 * This file contains the common part of the video memory mapping functions
 */

/*
 * Get a piece of the ScrnInfoRec.  At the moment, this is only used to hold
 * the MTRR option information, but it is likely to be expanded if we do
 * auto unmapping of memory at VT switch.
 *
 */

typedef struct {
	unsigned long 	physBase;
	unsigned long 	size;
	pointer		virtBase;
	pointer 	mtrrInfo;
	int		flags;
} MappingRec, *MappingPtr;
	
typedef struct {
	int		numMappings;
	MappingPtr *	mappings;
	Bool		mtrrEnabled;
	MessageType	mtrrFrom;
	Bool		mtrrOptChecked;
	ScrnInfoPtr	pScrn;
} VidMapRec, *VidMapPtr;

static int vidMapIndex = -1;

#define VIDMAPPTR(p) ((VidMapPtr)((p)->privates[vidMapIndex].ptr))

static VidMemInfo vidMemInfo = {FALSE, };
static VidMapRec  vidMapRec  = {0, NULL, TRUE, X_DEFAULT, FALSE, NULL};

static VidMapPtr
getVidMapRec(int scrnIndex)
{
	VidMapPtr vp;
	ScrnInfoPtr pScrn;

	if ((scrnIndex < 0) ||
	    !(pScrn = xf86Screens[scrnIndex]))
		return &vidMapRec;

	if (vidMapIndex < 0)
		vidMapIndex = xf86AllocateScrnInfoPrivateIndex();

	if (VIDMAPPTR(pScrn) != NULL)
		return VIDMAPPTR(pScrn);

	vp = pScrn->privates[vidMapIndex].ptr = xnfcalloc(sizeof(VidMapRec), 1);
	vp->mtrrEnabled = TRUE;	/* default to enabled */
	vp->mtrrFrom = X_DEFAULT;
	vp->mtrrOptChecked = FALSE;
	vp->pScrn = pScrn;
	return vp;
}

static MappingPtr
newMapping(VidMapPtr vp)
{
	vp->mappings = xnfrealloc(vp->mappings, sizeof(MappingPtr) *
				  (vp->numMappings + 1));
	vp->mappings[vp->numMappings] = xnfcalloc(sizeof(MappingRec), 1);
	return vp->mappings[vp->numMappings++];
}

static MappingPtr
findMapping(VidMapPtr vp, pointer vbase, unsigned long size)
{
	int i;

	for (i = 0; i < vp->numMappings; i++) {
		if (vp->mappings[i]->virtBase == vbase &&
		    vp->mappings[i]->size == size)
			return vp->mappings[i];
	}
	return NULL;
}

static void
removeMapping(VidMapPtr vp, MappingPtr mp)
{
	int i, found = 0;

	for (i = 0; i < vp->numMappings; i++) {
		if (vp->mappings[i] == mp) {
			found = 1;
			xfree(vp->mappings[i]);
		} else if (found) {
			vp->mappings[i - 1] = vp->mappings[i];
		}
	}
	vp->numMappings--;
	vp->mappings[vp->numMappings] = NULL;
}

enum { OPTION_MTRR };
static const OptionInfoRec opts[] =
{
	{ OPTION_MTRR, "mtrr", OPTV_BOOLEAN, {0}, FALSE },
	{ -1, NULL, OPTV_NONE, {0}, FALSE }
};

static void
checkMtrrOption(VidMapPtr vp)
{
	if (!vp->mtrrOptChecked && vp->pScrn && vp->pScrn->options != NULL) {
		OptionInfoPtr options;

		options = xnfalloc(sizeof(opts));
		(void)memcpy(options, opts, sizeof(opts));
		xf86ProcessOptions(vp->pScrn->scrnIndex, vp->pScrn->options,
					options);
		if (xf86GetOptValBool(options, OPTION_MTRR, &vp->mtrrEnabled))
			vp->mtrrFrom = X_CONFIG;
		xfree(options);
		vp->mtrrOptChecked = TRUE;
	}
}

void
xf86MakeNewMapping(int ScreenNum, int Flags, unsigned long Base, unsigned long Size, pointer Vbase)
{
	VidMapPtr vp;
	MappingPtr mp;

	vp = getVidMapRec(ScreenNum);
	mp = newMapping(vp);
	mp->physBase = Base;
	mp->size = Size;
	mp->virtBase = Vbase;
	mp->flags = Flags;
}

void
xf86InitVidMem(void)
{
	if (!vidMemInfo.initialised) {
		memset(&vidMemInfo, 0, sizeof(VidMemInfo));
		xf86OSInitVidMem(&vidMemInfo);
	}
}

pointer
xf86MapVidMem(int ScreenNum, int Flags, unsigned long Base, unsigned long Size)
{
	pointer vbase = NULL;
	VidMapPtr vp;
	MappingPtr mp;

	if (((Flags & VIDMEM_FRAMEBUFFER) &&
	     (Flags & (VIDMEM_MMIO | VIDMEM_MMIO_32BIT))))
	    FatalError("Mapping memory with more than one type\n");
	    
	xf86InitVidMem();
	if (!vidMemInfo.initialised || !vidMemInfo.mapMem)
		return NULL;

	vbase = vidMemInfo.mapMem(ScreenNum, Base, Size, Flags);

	if (!vbase || vbase == (pointer)-1)
		return NULL;

	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
	 * warnings about unrecognised options.
	 */
	checkMtrrOption(vp);

	if (vp->mtrrEnabled && vidMemInfo.setWC) {
		if (Flags & (VIDMEM_MMIO | VIDMEM_MMIO_32BIT))
			mp->mtrrInfo =
				vidMemInfo.setWC(ScreenNum, Base, Size, FALSE,
						 vp->mtrrFrom);
		else if (Flags & VIDMEM_FRAMEBUFFER)
			mp->mtrrInfo =
				vidMemInfo.setWC(ScreenNum, Base, Size, TRUE,
						 vp->mtrrFrom);
	}
	return vbase;
}

void
xf86UnMapVidMem(int ScreenNum, pointer Base, unsigned long Size)
{
	VidMapPtr vp;
	MappingPtr mp;

	if (!vidMemInfo.initialised || !vidMemInfo.unmapMem) {
		xf86DrvMsg(ScreenNum, X_WARNING,
		  "xf86UnMapVidMem() called before xf86MapVidMem()\n");
		return;
	}

	vp = getVidMapRec(ScreenNum);
	mp = findMapping(vp, Base, Size);
	if (!mp) {
		xf86DrvMsg(ScreenNum, X_WARNING,
		  "xf86UnMapVidMem: cannot find region for [%p,0x%lx]\n",
		  Base, Size);
		return;
	}
	if (vp->mtrrEnabled && vidMemInfo.undoWC && mp)
		vidMemInfo.undoWC(ScreenNum, mp->mtrrInfo);

	vidMemInfo.unmapMem(ScreenNum, Base, Size);
	removeMapping(vp, mp);
}

Bool
xf86CheckMTRR(int ScreenNum)
{
	VidMapPtr vp = getVidMapRec(ScreenNum);

	/*
	 * Check the "mtrr" option even when MTRR isn't supported to avoid
	 * warnings about unrecognised options.
	 */
	checkMtrrOption(vp);

	if (vp->mtrrEnabled && vidMemInfo.setWC)
		return TRUE;
		
	return FALSE;
}

Bool
xf86LinearVidMem()
{
	xf86InitVidMem();
	return vidMemInfo.linearSupported;
}

void
xf86MapReadSideEffects(int ScreenNum, int Flags, pointer base,
			unsigned long Size)
{
	if (!(Flags & VIDMEM_READSIDEEFFECT))
		return;

	if (!vidMemInfo.initialised || !vidMemInfo.readSideEffects)
		return;

	vidMemInfo.readSideEffects(ScreenNum, base, Size);
}


--- NEW FILE: xf86Axp.c ---
/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/xf86Axp.c,v 1.3 2003/08/24 17:37:06 dawes Exp $ */
/*
 * Copyright (c) 2000 by The XFree86 Project, Inc.
 *
 * 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
 * and author(s) 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 copyright holder(s) and author(s).
 */

#include "xf86Axp.h"

axpParams xf86AXPParams[] = { 
  {SYS_NONE,     0,         0,         0},
  {TSUNAMI,      0,         0,         0},
  {LCA,      1<<24,0xf8000000, 1UL << 32},
  {APECS,    1<<24,0xf8000000, 1UL << 32},
  {T2,           0,0xFC000000, 1UL << 31},
  {T2_GAMMA,     0,0xFC000000, 1UL << 31},
  {CIA,          0,0xE0000000, 1UL << 34},
  {MCPCIA,       0,0xf8000000, 1UL << 31},
  {JENSEN,       0, 0xE000000, 1UL << 32},
  {POLARIS,      0,         0,         0},
  {PYXIS,        0,         0,         0},
  {PYXIS_CIA,    0,0xE0000000, 1UL << 34},
  {IRONGATE,     0,         0,         0}
};


--- NEW FILE: xf86Axp.h ---
/* $XFree86$ */

#ifndef _XF86_AXP_H_
#define _XF86_AXP_H_

typedef enum {
  SYS_NONE,
  TSUNAMI,
  LCA,
  APECS,
  T2,
  T2_GAMMA,
  CIA,
  MCPCIA,
  JENSEN,
  POLARIS,
  PYXIS,
  PYXIS_CIA,
  IRONGATE
} axpDevice;
  
typedef struct {
  axpDevice id;
  unsigned long hae_thresh;
  unsigned long hae_mask;
  unsigned long size;
} axpParams;

extern axpParams xf86AXPParams[];

#endif





More information about the xserver-commit mailing list