x68k.h revision 84d30d9d
1/* $NetBSD: x68k.h,v 1.3 2020/11/05 16:06:08 tsutsui Exp $ */ 2/*------------------------------------------------------------------------- 3 * Copyright (c) 1996 Yasushi Yamasaki 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: 9 * 1. Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 2. Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in the 13 * documentation and/or other materials provided with the distribution. 14 * 15 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 16 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 17 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 18 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 *-----------------------------------------------------------------------*/ 26 27/* system */ 28#include <stdlib.h> 29#include <stdio.h> 30#include <errno.h> 31#include <signal.h> 32#include <sys/types.h> 33#include <sys/time.h> 34#include <sys/ioctl.h> 35#include <sys/mman.h> 36#include <fcntl.h> 37#include <unistd.h> 38 39/* machine dependent */ 40#include <machine/vuid_event.h> 41#include <machine/kbd.h> 42#include <machine/kbio.h> 43#include <machine/grfioctl.h> 44 45/* generic X */ 46#include <X11/X.h> 47#include <X11/Xmd.h> 48#define XK_KATAKANA 49#include <X11/keysym.h> 50#define NEED_EVENTS 51#include <X11/Xproto.h> 52 53/* dix */ 54#include <misc.h> 55#include <scrnintstr.h> 56#include <screenint.h> 57#include <input.h> 58#include <inputstr.h> 59#include <servermd.h> 60#include <colormap.h> 61#include <colormapst.h> 62 63/* mi */ 64#include <mipointer.h> 65 66#include "x68kReg.h" 67 68/* 69 * X68k dependent screen record 70 */ 71typedef struct _X68kScreenRec { 72 int type; /* frame buffer type */ 73 int class; /* visual class */ 74 int fd; /* file descriptor */ 75 int depth; /* depth */ 76 int fb_width; /* frame buffer width */ 77 int fb_height; /* frame buffer height */ 78 int scr_width; /* screen width */ 79 int scr_height; /* screen height */ 80 int dpi; /* dots per inch */ 81 uint8_t *fb; /* frame buffer VA */ 82 FbReg *reg; /* control register VA */ 83 X68kFbReg x68kreg; /* control register */ 84 int mapsize; /* size of mapped memory */ 85 ColormapPtr installedMap; /* installed colormap */ 86} X68kScreenRec; 87 88/* 89 * frame buffer procedures 90 */ 91typedef struct _X68kFbProcRec { 92 Bool (*open)(X68kScreenRec *); /* open procedure */ 93 Bool (*init)(int, ScreenPtr, int, char *[]); /* initialize procedure */ 94 void (*close)(X68kScreenRec *); /* close procedure */ 95} X68kFbProcRec; 96 97/* frame buffer types */ 98#define X68K_FB_NULL 0 99#define X68K_FB_TEXT 1 /* text VRAM frame buffer */ 100#define X68K_FB_GRAPHIC 2 /* graphic VRAM frame buffer */ 101#if 0 102#define X68K_FB_CIRRUS 3 /* not yet */ 103#endif 104#define X68K_FB_TYPES 2 105 106typedef struct _X68kMousePriv { 107 int fd; 108 int bmask; 109} X68kMousePriv, *X68kMousePrivPtr; 110 111typedef struct _X68kKbdPriv { 112 int type; 113 int fd; 114 Leds leds; 115} X68kKbdPriv, *X68kKbdPrivPtr; 116 117/* keyboard types */ 118#define X68K_KB_STANDARD 0 /* standard keyboard */ 119#define X68K_KB_ASCII 1 /* ascii map keyboard */ 120 121#define MAXEVENTS 32 122 123extern DevPrivateKeyRec x68kScreenPrivateKeyRec; 124#define x68kScreenPrivateKey (&x68kScreenPrivateKeyRec) 125#define x68kSetScreenPrivate(pScreen, v) \ 126 dixSetPrivate(&(pScreen)->devPrivates, x68kScreenPrivateKey, (v)) 127#define x68kGetScreenPrivate(pScreen) ((X68kScreenRec *) \ 128 dixLookupPrivate(&(pScreen)->devPrivates, x68kScreenPrivateKey)) 129 130/* in x68kConfig.c */ 131X68kScreenRec *x68kGetScreenRec(int); 132X68kScreenRec *x68kGetScreenRecByType(int); 133X68kFbProcRec *x68kGetFbProcRec(int index); 134void x68kRegisterPixmapFormats(ScreenInfo *); 135int x68kConfig(void); 136extern const char *configFilename; 137 138/* x68kFB.c */ 139Bool x68kFbCommonOpen(X68kScreenRec *, const char *); 140void x68kFbCommonClose(X68kScreenRec *); 141Bool x68kSaveScreen(ScreenPtr, int); 142 143/* x68kGraph.c */ 144Bool x68kGraphOpen(X68kScreenRec *); 145Bool x68kGraphInit(int, ScreenPtr, int, char *[]); 146void x68kGraphClose(X68kScreenRec *); 147 148/* in x68kInit.c */ 149extern EventList *x68kEvents; 150 151/* in x68kIo.c */ 152void x68kSigIOHandler(int); 153 154/* in x68kMouse.c */ 155int x68kMouseProc(DeviceIntPtr, int); 156Firm_event *x68kMouseGetEvents(int, int *, Bool *); 157void x68kMouseEnqueueEvent(DeviceIntPtr, Firm_event *); 158extern miPointerScreenFuncRec x68kPointerScreenFuncs; 159extern DeviceIntPtr x68kPointerDevice; 160 161/* in x68kKbd.c */ 162int x68kKbdProc(DeviceIntPtr, int); 163Firm_event *x68kKbdGetEvents(int, int *, Bool *); 164void x68kKbdEnqueueEvent(DeviceIntPtr, Firm_event *); 165extern X68kKbdPriv x68kKbdPriv; 166extern DeviceIntPtr x68kKeyboardDevice; 167 168/* in x68kKeyMap.c */ 169extern KeySymsRec jisKeySyms, asciiKeySyms, *x68kKeySyms; 170 171/* x68kText.c */ 172Bool x68kTextOpen(X68kScreenRec *); 173Bool x68kTextInit(int, ScreenPtr, int, char *[]); 174void x68kTextClose(X68kScreenRec *); 175 176/* EOF x68k.h */ 177