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
- Previous message: xserver/hw/xorg/os-support/misc BUSmemcpy.S, NONE, 1.1 BUSmemcpy.c,
NONE, 1.1 Delay.c, NONE, 1.1 IODelay.S, NONE, 1.1 IODelay.c,
NONE, 1.1 Imakefile, NONE, 1.1 PortIO.S, NONE, 1.1 SlowBcopy.S,
NONE, 1.1 SlowBcopy.c, NONE, 1.1 xf86_IlHack.c, NONE,
1.1 xf86_Util.c, NONE, 1.1
- Next message: xserver/hw/xorg/parser Configint.h, NONE, 1.1 DRI.c, NONE,
1.1 Device.c, NONE, 1.1 Files.c, NONE, 1.1 Flags.c, NONE,
1.1 Input.c, NONE, 1.1 Keyboard.c, NONE, 1.1 Layout.c, NONE,
1.1 Makefile.am, NONE, 1.1 Module.c, NONE, 1.1 Monitor.c, NONE,
1.1 Pointer.c, NONE, 1.1 Screen.c, NONE, 1.1 Vendor.c, NONE,
1.1 Video.c, NONE, 1.1 configProcs.h, NONE, 1.1 cpconfig.c,
NONE, 1.1 read.c, NONE, 1.1 scan.c, NONE, 1.1 write.c, NONE,
1.1 xf86Optrec.h, NONE, 1.1 xf86Parser.h, NONE,
1.1 xf86tokens.h, NONE, 1.1
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
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
- Previous message: xserver/hw/xorg/os-support/misc BUSmemcpy.S, NONE, 1.1 BUSmemcpy.c,
NONE, 1.1 Delay.c, NONE, 1.1 IODelay.S, NONE, 1.1 IODelay.c,
NONE, 1.1 Imakefile, NONE, 1.1 PortIO.S, NONE, 1.1 SlowBcopy.S,
NONE, 1.1 SlowBcopy.c, NONE, 1.1 xf86_IlHack.c, NONE,
1.1 xf86_Util.c, NONE, 1.1
- Next message: xserver/hw/xorg/parser Configint.h, NONE, 1.1 DRI.c, NONE,
1.1 Device.c, NONE, 1.1 Files.c, NONE, 1.1 Flags.c, NONE,
1.1 Input.c, NONE, 1.1 Keyboard.c, NONE, 1.1 Layout.c, NONE,
1.1 Makefile.am, NONE, 1.1 Module.c, NONE, 1.1 Monitor.c, NONE,
1.1 Pointer.c, NONE, 1.1 Screen.c, NONE, 1.1 Vendor.c, NONE,
1.1 Video.c, NONE, 1.1 configProcs.h, NONE, 1.1 cpconfig.c,
NONE, 1.1 read.c, NONE, 1.1 scan.c, NONE, 1.1 write.c, NONE,
1.1 xf86Optrec.h, NONE, 1.1 xf86Parser.h, NONE,
1.1 xf86tokens.h, NONE, 1.1
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the xserver-commit
mailing list