From f4092abdf94af6a99aff944d6264bc1284e8bdd4 Mon Sep 17 00:00:00 2001 From: Reinhard Tartler Date: Mon, 10 Oct 2011 17:43:39 +0200 Subject: Imported nx-X11-3.1.0-1.tar.gz Summary: Imported nx-X11-3.1.0-1.tar.gz Keywords: Imported nx-X11-3.1.0-1.tar.gz into Git repository --- .../Xserver/hw/xfree86/os-support/qnx4/qnx_video.c | 183 +++++++++++++++++++++ 1 file changed, 183 insertions(+) create mode 100644 nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_video.c (limited to 'nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_video.c') diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_video.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_video.c new file mode 100644 index 000000000..578d33ea0 --- /dev/null +++ b/nx-X11/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_video.c @@ -0,0 +1,183 @@ +/* + * (c) Copyright 1998 by Sebastien Marineau + * + * + * 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 + * SEBASTIEN MARINEAU 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 Sebastien Marineau shall not be + * used in advertising or otherwise to promote the sale, use or other dealings + * in this Software without prior written authorization from Sebastien Marineau. + * + * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/qnx4/qnx_video.c,v 1.3tsi Exp $ + */ + +/* This module contains the qnx-specific functions to deal with video + * framebuffer access and interrupts. + */ + +#ifdef HAVE_XORG_CONFIG_H +#include +#endif + +#include +#include +#include +#include +#include + +#include +#include "xf86.h" +#include "xf86Priv.h" +#include "xf86_OSlib.h" + + +/* These are the interrupt enabling/disabling functions. Simply call + * the Watcom equivalents. + */ + +void xf86EnableInterrupts() +{ + _enable(); +} + +void xf86DisableInterrupts() +{ + xf86ErrorF("Disable interrupts: not yet...\n"); + /* _disable(); */ +} + +/* These are the routines to map/unmap video memory... */ + +Bool xf86LinearVidMem() +{ + /* Yes we can... */ + xf86ErrorF("xf86LinearMem: called\n"); + return(TRUE); +} + +/* This is our shmem "Physical" handle */ +int QNX_PhMem_fd = -1; + + +/* Map a chunk of physical video memory, using mmap */ + +pointer xf86MapVidMem(ScreenNum, Flags, Base, Size) +int ScreenNum; +int Flags; +unsigned long Base; +unsigned long Size; +{ +int fd; +void *base; + xf86ErrorF("xf86MapVidMem called\n"); + if(QNX_PhMem_fd < 0) { + if ((fd = shm_open("Physical", O_RDWR, 0777)) < 0) { + FatalError("xf86MapVidMem: Failed to open /dev/shmem\n"); + } + QNX_PhMem_fd = fd; + } + base = mmap((caddr_t)0, Size, + (Flags & VIDMEM_READONLY) ? + PROT_READ : (PROT_READ | PROT_WRITE), + MAP_SHARED, QNX_PhMem_fd, (off_t)Base); + xf86ErrorF("MapVidMem: addr %08x size %08x addr %08x\n", Base, + Size, base); + if ((long)base == -1) + { + FatalError("xf86MapVidMem: Failed to mmap video memory\n"); + } + return(base); + +} + +void xf86UnMapVidMem(ScreenNum, Base, Size) +int ScreenNum; +pointer Base; +unsigned long Size; +{ + + xf86ErrorF("xf86UnmapVidMem called\n"); + munmap((caddr_t) Base, Size); + +} + +/* Finally, this function allows us to read the video BIOS content */ + +int +xf86ReadBIOS(Base, Offset, Buf, Len) +unsigned long Base, Offset; +unsigned char *Buf; +int Len; +{ + unsigned char * VirtBase; + + xf86ErrorF("xf86ReadBIOS called\n"); + if (QNX_PhMem_fd == -1) + { + if ((QNX_PhMem_fd = shm_open("Physical", O_RDWR, 0777)) < 0) + { + FatalError("xf86ReadBIOS: cannot open Physical memory\n"); + } + } + + /* Use mmap to map BIOS region. Note the restrictions on + * mmap alignement of offset variable (which must be on a page + * boundary). + */ + VirtBase = (unsigned char *) mmap(0, (size_t)((Offset & 0x7fff) + Len), PROT_READ, + MAP_SHARED, QNX_PhMem_fd, + (off_t) (Base + (Offset & 0xffff8000))); + if((long)VirtBase == -1) { + FatalError( + "xf86ReadBIOS: Could not mmap BIOS memory space, errno=%i\n", + errno); + } + + /* So now we have our mapping to the BIOS region */ + /* Do a sanity check on what we have just mapped */ + if (((off_t)((off_t)Offset & 0x7FFF) != (off_t)0) && + (VirtBase[0] != 0x55) && + (VirtBase[1] != 0xaa)) { + xf86ErrorF( + "xf86ReadBIOS: BIOS sanity check failed, addr=%x\n", + (int)Base + Offset); + munmap(VirtBase, (Offset & 0x7fff) + Len); + return(-1); + } + + /* Things look good: copy BIOS data */ + memcpy(Buf, VirtBase + (Offset & 0x7fff), Len); + munmap(VirtBase, (Offset & 0x7fff) + Len); + return(Len); + +} + +void +xf86MapReadSideEffects(int ScreenNum, int Flags, pointer Base, + unsigned long Size) +{ + return; +} + +Bool +xf86CheckMTRR(int s) +{ + return FALSE; +} + -- cgit v1.2.3