aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/programs/Xserver/hw/sunLynx/sunLyInit.c
diff options
context:
space:
mode:
Diffstat (limited to 'nx-X11/programs/Xserver/hw/sunLynx/sunLyInit.c')
-rw-r--r--nx-X11/programs/Xserver/hw/sunLynx/sunLyInit.c648
1 files changed, 0 insertions, 648 deletions
diff --git a/nx-X11/programs/Xserver/hw/sunLynx/sunLyInit.c b/nx-X11/programs/Xserver/hw/sunLynx/sunLyInit.c
deleted file mode 100644
index 941b363eb..000000000
--- a/nx-X11/programs/Xserver/hw/sunLynx/sunLyInit.c
+++ /dev/null
@@ -1,648 +0,0 @@
-/* $Xorg: sunLyInit.c,v 1.3 2000/08/17 19:48:36 cpqbld Exp $ */
-/*
- * This is sunInit.c modified for LynxOS
- * Copyright 1996 by Thomas Mueller
- *
- * 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 Thomas Mueller not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Thomas Mueller makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * THOMAS MUELLER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THOMAS MUELLER 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.
- *
- */
-/* $XFree86: xc/programs/Xserver/hw/sunLynx/sunLyInit.c,v 3.8 2001/01/17 22:36:53 dawes Exp $ */
-
-/*
- * Copyright 1987 by the Regents of the University of California
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies. The University of California
- * makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without
- * express or implied warranty.
- *
- *
- */
-
-/************************************************************
-Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright no-
-tice appear in all copies and that both that copyright no-
-tice and this permission notice appear in supporting docu-
-mentation, and that the names of Sun or The Open Group
-not be used in advertising or publicity pertaining to
-distribution of the software without specific prior
-written permission. Sun and The Open Group make no
-representations about the suitability of this software for
-any purpose. It is provided "as is" without any express or
-implied warranty.
-
-SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE LI-
-ABLE 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.
-
-*******************************************************/
-
-#include "sun.h"
-#include "gcstruct.h"
-#include "mi.h"
-#include "mibstore.h"
-#include "cfb.h"
-
-Bool onConsole = FALSE; /* wether stdin is /dev/con */
-
-/* maximum pixmap depth */
-#ifndef SUNMAXDEPTH
-#define SUNMAXDEPTH 8
-#endif
-
-extern Bool sunBW2Init(
- int /* screen */,
- ScreenPtr /* pScreen */,
- int /* argc */,
- char** /* argv */
-);
-#define BW2I sunBW2Init
-#if SUNMAXDEPTH == 1 /* { */
-#define CG3I NULL
-#define CG6I NULL
-#else /* }{ */
-extern Bool sunCG3Init(
- int /* screen */,
- ScreenPtr /* pScreen */,
- int /* argc */,
- char** /* argv */
-);
-#define CG3I sunCG3Init
-#ifdef FBTYPE_SUNFAST_COLOR /* { */
-extern Bool sunCG6Init(
- int /* screen */,
- ScreenPtr /* pScreen */,
- int /* argc */,
- char** /* argv */
-);
-#define CG6I sunCG6Init
-#else /* }{ */
-#define CG6I NULL
-#endif /* } */
-#endif /* } */
-
-extern KeySymsRec sunKeySyms[];
-extern SunModmapRec *sunModMaps[];
-extern int sunMaxLayout;
-extern KeySym* sunType4KeyMaps[];
-extern SunModmapRec* sunType4ModMaps[];
-
-static Bool sunDevsInited = FALSE;
-
-Bool sunAutoRepeatHandlersInstalled; /* FALSE each time InitOutput called */
-Bool sunSwapLkeys = FALSE;
-Bool sunFlipPixels = FALSE;
-Bool sunFbInfo = FALSE;
-Bool sunCG4Frob = FALSE;
-Bool sunNoGX = FALSE;
-
-sunKbdPrivRec sunKbdPriv = {
- -1, /* fd */
- -1, /* type */
- -1, /* layout */
- 0, /* click */
- (Leds)0, /* leds */
-};
-
-sunPtrPrivRec sunPtrPriv = {
- -1, /* fd */
- 0 /* Current button state */
-};
-
-/*
- * The name member in the following table corresponds to the
- * FBTYPE_* macros defined in /usr/include/sun/fbio.h file
- */
-sunFbDataRec sunFbData[FBTYPE_LASTPLUSONE] = {
- { NULL, "SUN1BW (bw1)" },
- { NULL, "SUN1COLOR (cg1)" },
- { BW2I, "SUN2BW (bw2)" },
- { NULL, "SUN2COLOR (cg2)" },
- { NULL, "SUN2GP (gp1/gp2)" },
- { NULL, "SUN5COLOR (cg5/386i accel)" },
- { CG3I, "SUN3COLOR (cg3)" },
- { NULL, "MEMCOLOR (cg8)" },
- { NULL, "SUN4COLOR (cg4)" },
- { NULL, "NOTSUN1" },
- { NULL, "NOTSUN2" },
- { NULL, "NOTSUN3" },
- { CG6I, "SUNFAST_COLOR (cg6/gx)" }, /* last we need */
-};
-
-/*
- * a list of devices to try if there is no environment or command
- * line list of devices
- */
-#if SUNMAXDEPTH == 1 /* { */
-static char *fallbackList[] = {
- "/dev/bwtwo",
-};
-#else /* }{ */
-static char *fallbackList[] = {
- "/dev/bwtwo", "/dev/cgthree", "/dev/cgsix",
-};
-#endif /* } */
-
-#define FALLBACK_LIST_LEN sizeof fallbackList / sizeof fallbackList[0]
-
-fbFd sunFbs[MAXSCREENS];
-
-static PixmapFormatRec formats[] = {
- { 1, 1, BITMAP_SCANLINE_PAD } /* 1-bit deep */
-#if SUNMAXDEPTH > 1
- ,{ 8, 8, BITMAP_SCANLINE_PAD} /* 8-bit deep */
-#endif
-};
-#define NUMFORMATS (sizeof formats)/(sizeof formats[0])
-
-/*
- * OpenFrameBuffer --
- * Open a frame buffer according to several rules.
- * Find the device to use by looking in the sunFbData table,
- * an XDEVICE envariable, a -dev switch or using /dev/fb if trying
- * to open screen 0 and all else has failed.
- *
- * Results:
- * The fd of the framebuffer.
- */
-static int OpenFrameBuffer(device, screen)
- char *device; /* e.g. "/dev/cgtwo0" */
- int screen; /* what screen am I going to be */
-{
- int ret;
- unsigned long dacoffset;
- struct fbgattr *fbattr = NULL;
- static int devFbUsed;
- static struct fbgattr bw2 = {
- 0, 0,
- { FBTYPE_SUN2BW, 900, 1152, 1, 0, 0x00100000 },
- { 0, -1},
- -1
- };
- static struct fbgattr cg3 = {
- 0, 0,
- { FBTYPE_SUN3COLOR, 900, 1152, 8, 256, 0x00100000 },
- { 0, -1},
- -1
- };
- static struct fbgattr cg6 = {
- 0, 0,
- { FBTYPE_SUNFAST_COLOR, 900, 1152, 8, 256, 0x00100000 },
- { 0, -1},
- -1
- };
-
-
- sunFbs[screen].fd = sunKbdPriv.fd; /* /dev/con or /dev/kbd */
- devFbUsed = TRUE;
- /* apply some magic to work out what we're running on.
- * why couldn't they just spend some time on a little
- * FBIOGATTR ioctl()
- */
-
- ret = FALSE;
- if (ioctl(sunFbs[screen].fd, TIO_QUERYRAMDAC, &dacoffset) < 0)
- FatalError("can't query DAC addr\n");
- if (dacoffset == 0x400000) {
- if (strcmp(device, "/dev/cgthree") == 0)
- fbattr = &cg3;
- }
- else if (dacoffset == 0x200000) {
- if (strcmp(device, "/dev/cgsix") == 0)
- fbattr = &cg6;
- }
-#ifdef PATCHED_CONSOLE
- else if (dacoffset == 0) {
- if (strcmp(device, "/dev/bw2") == 0)
- fbattr = &bw2;
- }
-#endif
- else
- ErrorF("bogus DAC addr 0x%x, maybe it's the silly BWTWO bug\n", dacoffset);
-
- if (fbattr) {
- ret = TRUE;
- sunFbs[screen].info = fbattr->fbtype;
- }
- sunFbs[screen].fbPriv = (pointer) fbattr;
- if (fbattr && fbattr->fbtype.fb_type < FBTYPE_LASTPLUSONE &&
- !sunFbData[fbattr->fbtype.fb_type].init) {
- int _i;
-
- ret = FALSE;
- for (_i = 0; _i < FB_ATTR_NEMUTYPES; _i++) {
- if (sunFbData[fbattr->emu_types[_i]].init) {
- sunFbs[screen].info.fb_type = fbattr->emu_types[_i];
- ret = TRUE;
- if (sunFbInfo)
- ErrorF ("%s is emulating a %s\n", device,
- sunFbData[fbattr->fbtype.fb_type].name);
- break;
- }
- }
- }
- if (sunFbInfo)
- ErrorF ("%s is really a %s\n", device,
- sunFbData[fbattr ? fbattr->fbtype.fb_type : sunFbs[screen].info.fb_type].name);
- if (!ret)
- sunFbs[screen].fd = -1;
- return ret;
-}
-
-/*-
- *-----------------------------------------------------------------------
- * SigIOHandler --
- * Signal handler for SIGIO - input is available.
- *
- * Results:
- * sunSigIO is set - ProcessInputEvents() will be called soon.
- *
- * Side Effects:
- * None
- *
- *-----------------------------------------------------------------------
- */
-/*ARGSUSED*/
-/*static*/ void SigIOHandler(sig)
- int sig;
-{
- int olderrno = errno;
- sunEnqueueEvents();
- errno = olderrno;
-}
-
-/*-
- *-----------------------------------------------------------------------
- * sunNonBlockConsoleOff --
- * Turn non-blocking mode on the console off, so you don't get logged
- * out when the server exits.
- *
- * Results:
- * None.
- *
- * Side Effects:
- * None.
- *
- *-----------------------------------------------------------------------
- */
-void sunNonBlockConsoleOff(
- void
-)
-{
- int i;
-
-#if 0
- if (sunKbdPriv.fd >= 0)
- {
- i = fcntl(sunKbdPriv.fd, F_GETFL, 0);
- if (i >= 0 && (i & FNDELAY)) {
- (void) fcntl(sunKbdPriv.fd, F_SETFL, i & ~FNDELAY);
- }
- }
-#endif
- for (i = 0; i < MAXSCREENS; i++) {
- if (sunFbs[i].fbuf) {
- smem_create(NULL, (char*)sunFbs[i].fbuf, 0, SM_DETACH);
- smem_remove("FB");
- sunFbs[i].fbuf = NULL;
- }
- if (sunFbs[i].ramdac) {
- smem_create(NULL, (char*)sunFbs[i].ramdac, 0, SM_DETACH);
- smem_remove("DAC");
- sunFbs[i].ramdac = NULL;
- }
- if (sunFbs[i].fhc) {
- smem_create(NULL, (char*)sunFbs[i].fhc, 0, SM_DETACH);
- smem_remove("FHC_THC");
- sunFbs[i].fhc = NULL;
- sunFbs[i].thc = NULL;
- }
- if (sunFbs[i].fb) {
- smem_create(NULL, (char*)sunFbs[i].fb, 0, SM_DETACH);
- smem_remove("FBC_TEC");
- sunFbs[i].fb = NULL;
- sunFbs[i].tec = NULL;
- }
- }
-}
-
-static char** GetDeviceList (argc, argv)
- int argc;
- char **argv;
-{
- int i;
- char *envList = NULL;
- char *cmdList = NULL;
- char **deviceList = (char **)NULL;
-
- for (i = 1; i < argc; i++)
- if (strcmp (argv[i], "-dev") == 0 && i+1 < argc) {
- cmdList = argv[i + 1];
- break;
- }
- if (!cmdList)
- envList = getenv ("XDEVICE");
-
- if (cmdList || envList) {
- char *_tmpa;
- char *_tmpb;
- int _i1;
- deviceList = (char **) xalloc ((MAXSCREENS + 1) * sizeof (char *));
- _tmpa = (cmdList) ? cmdList : envList;
- for (_i1 = 0; _i1 < MAXSCREENS; _i1++) {
- _tmpb = strtok (_tmpa, ":");
- if (_tmpb)
- deviceList[_i1] = _tmpb;
- else
- deviceList[_i1] = NULL;
- _tmpa = NULL;
- }
- deviceList[MAXSCREENS] = NULL;
- }
- if (!deviceList) {
- /* no environment and no cmdline, so default */
- deviceList =
- (char **) xalloc ((FALLBACK_LIST_LEN + 1) * sizeof (char *));
- for (i = 0; i < FALLBACK_LIST_LEN; i++)
- deviceList[i] = fallbackList[i];
- deviceList[FALLBACK_LIST_LEN] = NULL;
- }
- return deviceList;
-}
-
-static void getKbdType()
-{
-#if defined(PATCHED_CONSOLE)
- int ii;
-
- for (ii = 0; ii < 3; ii++) {
-#if 0
- sunKbdWait();
-#endif
- if (ioctl (sunKbdPriv.fd, KIOCTYPE, &sunKbdPriv.type) < 0 && errno == EINVAL) {
- ErrorF("failed to get keyboard type, maybe wrong console driver:");
- ErrorF(" assuming Type 4 keyboard\n");
- sunKbdPriv.type = KB_SUN4;
- return;
- }
- switch (sunKbdPriv.type) {
- case KB_SUN2:
- case KB_SUN3:
- case KB_SUN4:
- return;
- default:
- sunChangeKbdTranslation(sunKbdPriv.fd, FALSE);
- continue;
- }
- }
- FatalError ("Unsupported keyboard type %d\n", sunKbdPriv.type);
-#else
- sunKbdPriv.type = KB_SUN4;
-#endif
-}
-
-void OsVendorInit(
- void
-)
-{
- static int inited;
- if (!inited) {
- /* weird hack to prevent logout on X server shutdown */
- if (onConsole)
- sunKbdPriv.fd = open ("/dev/con", O_RDWR, 0);
- else
- sunKbdPriv.fd = open ("/dev/kbd", O_RDWR, 0);
- sunPtrPriv.fd = open ("/dev/mouse", O_RDWR, 0);
-
- getKbdType ();
- if (sunKbdPriv.type == KB_SUN4) {
-#if defined(PATCHED_CONSOLE)
- if ( ioctl (sunKbdPriv.fd, KIOCLAYOUT, &sunKbdPriv.layout) < 0 && errno == EINVAL) {
- ErrorF("failed to get keyboard layout, maybe wrong console driver:");
- ErrorF(" assuming layout 0\n");
- sunKbdPriv.layout = 0;
- }
- if (sunKbdPriv.layout < 0 ||
- sunKbdPriv.layout > sunMaxLayout ||
- sunType4KeyMaps[sunKbdPriv.layout] == NULL)
- FatalError ("Unsupported keyboard type 4 layout %d\n",
- sunKbdPriv.layout);
-#else
- sunKbdPriv.layout = 0; /* default: Type 4 */
-#endif
- sunKeySyms[KB_SUN4].map = sunType4KeyMaps[sunKbdPriv.layout];
- sunModMaps[KB_SUN4] = sunType4ModMaps[sunKbdPriv.layout];
- }
- inited = 1;
- }
-}
-
-/*-
- *-----------------------------------------------------------------------
- * InitOutput --
- * Initialize screenInfo for all actually accessible framebuffers.
- * The
- *
- * Results:
- * screenInfo init proc field set
- *
- * Side Effects:
- * None
- *
- *-----------------------------------------------------------------------
- */
-
-void InitOutput(pScreenInfo, argc, argv)
- ScreenInfo *pScreenInfo;
- int argc;
- char **argv;
-{
- int i, scr;
- char **devList;
- static int setup_on_exit = 0;
- extern Bool RunFromSmartParent;
-
- if (!monitorResolution)
- monitorResolution = 90;
-
- pScreenInfo->imageByteOrder = IMAGE_BYTE_ORDER;
- pScreenInfo->bitmapScanlineUnit = BITMAP_SCANLINE_UNIT;
- pScreenInfo->bitmapScanlinePad = BITMAP_SCANLINE_PAD;
- pScreenInfo->bitmapBitOrder = BITMAP_BIT_ORDER;
-
- pScreenInfo->numPixmapFormats = NUMFORMATS;
- for (i=0; i< NUMFORMATS; i++)
- pScreenInfo->formats[i] = formats[i];
-#ifdef XKB
- if (noXkbExtension)
-#endif
- sunAutoRepeatHandlersInstalled = FALSE;
- if (!sunDevsInited) {
- /* first time ever */
- for (scr = 0; scr < MAXSCREENS; scr++)
- sunFbs[scr].fd = -1;
- devList = GetDeviceList (argc, argv);
- for (i = 0, scr = 0; devList[i] != NULL && scr < MAXSCREENS; i++)
- if (OpenFrameBuffer (devList[i], scr))
- scr++;
- sunDevsInited = TRUE;
- xfree (devList);
- }
- for (scr = 0; scr < MAXSCREENS; scr++)
- if (sunFbs[scr].fd != -1)
- (void) AddScreen (sunFbData[sunFbs[scr].info.fb_type].init,
- argc, argv);
- (void) OsSignal(SIGWINCH, SIG_IGN);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * InitInput --
- * Initialize all supported input devices...what else is there
- * besides pointer and keyboard?
- *
- * Results:
- * None.
- *
- * Side Effects:
- * Two DeviceRec's are allocated and registered as the system pointer
- * and keyboard devices.
- *
- *-----------------------------------------------------------------------
- */
-void InitInput(argc, argv)
- int argc;
- char **argv;
-{
- DevicePtr p, k;
- extern Bool mieqInit();
-
- k = AddInputDevice(sunKbdProc, TRUE);
- p = AddInputDevice(sunMouseProc, TRUE);
- if (!p || !k)
- FatalError("failed to create input devices in InitInput");
-
- RegisterPointerDevice(p);
- RegisterKeyboardDevice(k);
- miRegisterPointerDevice(screenInfo.screens[0], p);
- (void) mieqInit (k, p);
-
-#define SET_FLOW(fd) fcntl(fd, F_SETFL, FASYNC)
- (void) OsSignal(SIGIO, SigIOHandler);
-#define WANT_SIGNALS(fd) fcntl(fd, F_SETOWN, getpid())
- if (sunKbdPriv.fd >= 0) {
- if (SET_FLOW(sunKbdPriv.fd) == -1 || WANT_SIGNALS(sunKbdPriv.fd) == -1) {
- (void) close (sunKbdPriv.fd);
- sunKbdPriv.fd = -1;
- FatalError("Async kbd I/O failed in InitInput");
- }
- }
- /* SIGIO doesn't work reliable for the mouse device,
- * esp. for the first server after a reboot. We enable it
- * anyway, gives smoother movements
- */
- if (sunPtrPriv.fd >= 0) {
- if (SET_FLOW(sunPtrPriv.fd) == -1 || WANT_SIGNALS(sunPtrPriv.fd) == -1) {
- (void) close (sunPtrPriv.fd);
- sunPtrPriv.fd = -1;
- FatalError("ASYNC mouse I/O failed in InitInput");
- }
- }
-}
-
-
-#if SUNMAXDEPTH == 8
-
-Bool
-sunCfbSetupScreen(pScreen, pbits, xsize, ysize, dpix, dpiy, width, bpp)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
- int bpp; /* bits per pixel of root */
-{
- return cfbSetupScreen(pScreen, pbits, xsize, ysize, dpix, dpiy,
- width);
-}
-
-Bool
-sunCfbFinishScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width, bpp)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
- int bpp; /* bits per pixel of root */
-{
- return cfbFinishScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy,
- width);
-}
-
-Bool
-sunCfbScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width, bpp)
- register ScreenPtr pScreen;
- pointer pbits; /* pointer to screen bitmap */
- int xsize, ysize; /* in pixels */
- int dpix, dpiy; /* dots per inch */
- int width; /* pixel width of frame buffer */
- int bpp; /* bits per pixel of root */
-{
- return cfbScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width);
-}
-#endif /* SUNMAXDEPTH */
-
-#ifdef DPMSExtension
-/**************************************************************
- * DPMSSet(), DPMSGet(), DPMSSupported()
- *
- * stubs
- *
- ***************************************************************/
-
-void DPMSSet (level)
- int level;
-{
-}
-
-int DPMSGet (level)
- int* level;
-{
- return -1;
-}
-
-Bool DPMSSupported ()
-{
- return FALSE;
-}
-#endif