From 970725d23e83285d41e3f7cab678a825d9cc25cf Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Mon, 16 Feb 2009 18:44:00 -0500 Subject: [PATCH] kdrive: Nuke dead AGP and VGA code. (#19921) --- configure.ac | 3 - hw/kdrive/linux/Makefile.am | 4 - hw/kdrive/linux/agp.c | 354 ------------------------------------ hw/kdrive/linux/agp.h | 71 -------- hw/kdrive/src/Makefile.am | 7 - hw/kdrive/src/vga.c | 317 -------------------------------- hw/kdrive/src/vga.h | 144 --------------- 7 files changed, 900 deletions(-) delete mode 100644 hw/kdrive/linux/agp.c delete mode 100644 hw/kdrive/linux/agp.h delete mode 100644 hw/kdrive/src/vga.c delete mode 100644 hw/kdrive/src/vga.h diff --git a/configure.ac b/configure.ac index 9126d2a7f..aede4b32b 100644 --- a/configure.ac +++ b/configure.ac @@ -371,7 +371,6 @@ AM_CONDITIONAL(PPC_VIDEO, [test "x$PPC_VIDEO" = xyes]) AM_CONDITIONAL(SPARC64_VIDEO, [test "x$SPARC64_VIDEO" = xyes]) DRI=no -KDRIVE_HW=no dnl it would be nice to autodetect these *CONS_SUPPORTs case $host_os in *freebsd* | *dragonfly*) @@ -398,7 +397,6 @@ case $host_os in ;; *linux*) DRI=yes - KDRIVE_HW=yes ;; *solaris*) PKG_CHECK_EXISTS(libdrm, DRI=yes, DRI=no) @@ -407,7 +405,6 @@ case $host_os in AC_DEFINE(CSRG_BASED, 1, [System is BSD-like]) ;; esac -AM_CONDITIONAL(KDRIVE_HW, test "x$KDRIVE_HW" = xyes) XORG_RELEASE_VERSION dnl augment XORG_RELEASE_VERSION for our snapshot number and to expose the diff --git a/hw/kdrive/linux/Makefile.am b/hw/kdrive/linux/Makefile.am index ee23d3a41..be07561ef 100644 --- a/hw/kdrive/linux/Makefile.am +++ b/hw/kdrive/linux/Makefile.am @@ -10,14 +10,10 @@ if TSLIB TSLIB_C = tslib.c endif -if KDRIVE_HW KDRIVE_HW_SOURCES = \ - agp.c \ - agp.h \ evdev.c \ keyboard.c \ linux.c -endif liblinux_la_SOURCES = \ bus.c \ diff --git a/hw/kdrive/linux/agp.c b/hw/kdrive/linux/agp.c deleted file mode 100644 index 80fb7259b..000000000 --- a/hw/kdrive/linux/agp.c +++ /dev/null @@ -1,354 +0,0 @@ -/* - * Abstraction of the AGP GART interface. - * - * This version is for both Linux and FreeBSD. - * - * Copyright © 2000-2001 Nokia Home Communications - * Copyright © 2000 VA Linux Systems, Inc. - -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, and/or sell copies of the Software, and to permit persons -to whom the Software is furnished to do so, provided that the above -copyright notice(s) and this permission notice appear in all copies of -the Software and that both the above copyright notice(s) and this -permission notice appear in supporting documentation. - -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 -OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR -HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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. - -Except as contained in this notice, the name of a copyright holder -shall not be used in advertising or otherwise to promote the sale, use -or other dealings in this Software without prior written authorization -of the copyright holder. - - */ - -/* - * Author: Pontus Lidman (adaption to KDrive) and others - */ - -#ifdef HAVE_CONFIG_H -#include -#endif -#include -#include "misc.h" - -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include "agp.h" - -#if defined(linux) -#include - -#include - -#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) -#include -#include -#endif - -#ifndef AGP_DEVICE -#define AGP_DEVICE "/dev/agpgart" -#endif -/* AGP page size is independent of the host page size. */ -#ifndef AGP_PAGE_SIZE -#define AGP_PAGE_SIZE 4096 -#endif -#define AGPGART_MAJOR_VERSION 0 -#define AGPGART_MINOR_VERSION 99 - -static int gartFd = -1; -static int acquiredScreen = -1; - -/* - * Open /dev/agpgart. Keep it open until server exit. - */ - -static Bool -GARTInit(void) -{ - static Bool initDone = FALSE; - struct _agp_info agpinf; - - if (initDone) - return (gartFd != -1); - - initDone = TRUE; - - if (gartFd == -1) - gartFd = open(AGP_DEVICE, O_RDWR, 0); - else - return FALSE; - - if (gartFd == -1) { - fprintf(stderr, "Unable to open " AGP_DEVICE " (%s)\n", - strerror(errno)); - return FALSE; - } - - KdAcquireGART(-1); - /* Check the kernel driver version. */ - if (ioctl(gartFd, AGPIOC_INFO, &agpinf) != 0) { - fprintf(stderr, "GARTInit: AGPIOC_INFO failed (%s)\n", - strerror(errno)); - close(gartFd); - gartFd = -1; - return FALSE; - } - KdReleaseGART(-1); - -#if defined(linux) - /* Per Dave Jones, every effort will be made to keep the - * agpgart interface backwards compatible, so allow all - * future versions. - */ - if ( -#if (AGPGART_MAJOR_VERSION > 0) /* quiet compiler */ - agpinf.version.major < AGPGART_MAJOR_VERSION || -#endif - (agpinf.version.major == AGPGART_MAJOR_VERSION && - agpinf.version.minor < AGPGART_MINOR_VERSION)) { - fprintf(stderr, - "Kernel agpgart driver version is not current" - " (%d.%d vs %d.%d)\n", - agpinf.version.major, agpinf.version.minor, - AGPGART_MAJOR_VERSION, AGPGART_MINOR_VERSION); - close(gartFd); - gartFd = -1; - return FALSE; - } -#endif - - return TRUE; -} - -Bool -KdAgpGARTSupported() -{ - return GARTInit(); -} - -AgpInfoPtr -KdGetAGPInfo(int screenNum) -{ - struct _agp_info agpinf; - AgpInfoPtr info; - - if (!GARTInit()) - return NULL; - - - if ((info = calloc(sizeof(AgpInfo), 1)) == NULL) { - fprintf(stderr, "Failed to allocate AgpInfo\n"); - return NULL; - } - - if (ioctl(gartFd, AGPIOC_INFO, &agpinf) != 0) { - fprintf(stderr, - "xf86GetAGPInfo: AGPIOC_INFO failed (%s)\n", - strerror(errno)); - return NULL; - } - - info->bridgeId = agpinf.bridge_id; - info->agpMode = agpinf.agp_mode; - info->base = agpinf.aper_base; - info->size = agpinf.aper_size; - info->totalPages = agpinf.pg_total; - info->systemPages = agpinf.pg_system; - info->usedPages = agpinf.pg_used; - - return info; -} - -/* - * XXX If multiple screens can acquire the GART, should we have a reference - * count instead of using acquiredScreen? - */ - -Bool -KdAcquireGART(int screenNum) -{ - if (screenNum != -1 && !GARTInit()) - return FALSE; - - if (screenNum == -1 || acquiredScreen != screenNum) { - if (ioctl(gartFd, AGPIOC_ACQUIRE, 0) != 0) { - fprintf(stderr, - "AGPIOC_ACQUIRE failed (%s)\n", - strerror(errno)); - return FALSE; - } - acquiredScreen = screenNum; - } - - return TRUE; -} - -Bool -KdReleaseGART(int screenNum) -{ - if (screenNum != -1 && !GARTInit()) - return FALSE; - - if (acquiredScreen == screenNum) { - if (ioctl(gartFd, AGPIOC_RELEASE, 0) != 0) { - fprintf(stderr, - "AGPIOC_RELEASE failed (%s)\n", - strerror(errno)); - return FALSE; - } - acquiredScreen = -1; - return TRUE; - } - return FALSE; -} - -int -KdAllocateGARTMemory(int screenNum, unsigned long size, int type, - unsigned long *physical) -{ - struct _agp_allocate alloc; - int pages; - - /* - * Allocates "size" bytes of GART memory (rounds up to the next - * page multiple) or type "type". A handle (key) for the allocated - * memory is returned. On error, the return value is -1. - */ - - if (!GARTInit() || acquiredScreen != screenNum) - return -1; - - pages = (size / AGP_PAGE_SIZE); - if (size % AGP_PAGE_SIZE != 0) - pages++; - - /* XXX check for pages == 0? */ - - alloc.pg_count = pages; - alloc.type = type; - - if (ioctl(gartFd, AGPIOC_ALLOCATE, &alloc) != 0) { - fprintf(stderr, "KdAllocateGARTMemory: " - "allocation of %d pages failed\n\t(%s)\n", pages, - strerror(errno)); - return -1; - } - - if (physical) - *physical = alloc.physical; - - return alloc.key; -} - - -/* Bind GART memory with "key" at "offset" */ -Bool -KdBindGARTMemory(int screenNum, int key, unsigned long offset) -{ - struct _agp_bind bind; - int pageOffset; - - if (!GARTInit() || acquiredScreen != screenNum) - return FALSE; - - if (acquiredScreen != screenNum) { - fprintf(stderr, - "AGP not acquired by this screen\n"); - return FALSE; - } - - if (offset % AGP_PAGE_SIZE != 0) { - fprintf(stderr, "KdBindGARTMemory: " - "offset (0x%lx) is not page-aligned (%d)\n", - offset, AGP_PAGE_SIZE); - return FALSE; - } - pageOffset = offset / AGP_PAGE_SIZE; - - bind.pg_start = pageOffset; - bind.key = key; - - if (ioctl(gartFd, AGPIOC_BIND, &bind) != 0) { - fprintf(stderr, "KdBindGARTMemory: " - "binding of gart memory with key %d\n" - "\tat offset 0x%lx failed (%s)\n", - key, offset, strerror(errno)); - return FALSE; - } - - return TRUE; -} - - -/* Unbind GART memory with "key" */ -Bool -KdUnbindGARTMemory(int screenNum, int key) -{ - struct _agp_unbind unbind; - - if (!GARTInit() || acquiredScreen != screenNum) - return FALSE; - - if (acquiredScreen != screenNum) { - fprintf(stderr, - "AGP not acquired by this screen\n"); - return FALSE; - } - - unbind.priority = 0; - unbind.key = key; - - if (ioctl(gartFd, AGPIOC_UNBIND, &unbind) != 0) { - fprintf(stderr, "KdUnbindGARTMemory: " - "unbinding of gart memory with key %d " - "failed (%s)\n", key, strerror(errno)); - return FALSE; - } - - return TRUE; -} - - -/* XXX Interface may change. */ -Bool -KdEnableAGP(int screenNum, CARD32 mode) -{ - agp_setup setup; - - if (!GARTInit() || acquiredScreen != screenNum) - return FALSE; - - setup.agp_mode = mode; - if (ioctl(gartFd, AGPIOC_SETUP, &setup) != 0) { - fprintf(stderr, "KdEnableAGP: " - "AGPIOC_SETUP with mode %ld failed (%s)\n", - mode, strerror(errno)); - return FALSE; - } - - return TRUE; -} - diff --git a/hw/kdrive/linux/agp.h b/hw/kdrive/linux/agp.h deleted file mode 100644 index 419dee1b4..000000000 --- a/hw/kdrive/linux/agp.h +++ /dev/null @@ -1,71 +0,0 @@ -/* COPYRIGHT AND PERMISSION NOTICE - -Copyright (c) 2000, 2001 Nokia Home Communications - -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, and/or sell copies of the Software, and to permit persons -to whom the Software is furnished to do so, provided that the above -copyright notice(s) and this permission notice appear in all copies of -the Software and that both the above copyright notice(s) and this -permission notice appear in supporting documentation. - -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 -OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR -HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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. - -Except as contained in this notice, the name of a copyright holder -shall not be used in advertising or otherwise to promote the sale, use -or other dealings in this Software without prior written authorization -of the copyright holder. - -X Window System is a trademark of The Open Group */ - -/* agp.h - header file for KDrive AGP GART interface - * - * Author: Pontus Lidman - * - */ - -#ifndef _AGP_H_ -#define _AGP_H_ - -#include -#include - -/* These two definitions must be consistent with the kernel's, - but using 1 or 2 in driver code is even uglier */ -#define AGP_DCACHE_MEMORY 1 -#define AGP_PHYS_MEMORY 2 - -typedef struct _AgpInfo { - unsigned long bridgeId; - unsigned long agpMode; - unsigned long base; - unsigned long size; - unsigned long totalPages; - unsigned long systemPages; - unsigned long usedPages; -} AgpInfo, *AgpInfoPtr; - -extern Bool KdAgpGARTSupported(void); -extern AgpInfoPtr KdGetAGPInfo(int screenNum); -extern Bool KdAcquireGART(int screenNum); -extern Bool KdReleaseGART(int screenNum); -extern int KdAllocateGARTMemory(int screenNum, unsigned long size, int type, - unsigned long *physical); -extern Bool KdBindGARTMemory(int screenNum, int key, unsigned long offset); -extern Bool KdUnbindGARTMemory(int screenNum, int key); -extern Bool KdEnableAGP(int screenNum, CARD32 mode); - -#endif /* _AGP_H_ */ diff --git a/hw/kdrive/src/Makefile.am b/hw/kdrive/src/Makefile.am index f4424dcc0..968978ed3 100644 --- a/hw/kdrive/src/Makefile.am +++ b/hw/kdrive/src/Makefile.am @@ -6,12 +6,6 @@ AM_CFLAGS = -DHAVE_DIX_CONFIG_H noinst_LTLIBRARIES = libkdrive.la libkdrivestubs.la -if KDRIVE_HW -KDRIVE_HW_SOURCES = \ - vga.c \ - vga.h -endif - if XV KDRIVE_XV_SOURCES = \ kxv.c \ @@ -31,7 +25,6 @@ libkdrive_la_SOURCES = \ kmode.c \ kshadow.c \ $(KDRIVE_XV_SOURCES) \ - $(KDRIVE_HW_SOURCES) \ $(top_srcdir)/mi/miinitext.c libkdrivestubs_la_SOURCES = \ diff --git a/hw/kdrive/src/vga.c b/hw/kdrive/src/vga.c deleted file mode 100644 index 5a0a9678c..000000000 --- a/hw/kdrive/src/vga.c +++ /dev/null @@ -1,317 +0,0 @@ -/* - * Copyright © 1999 Keith Packard - * - * 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 Keith Packard not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Keith Packard makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. - * - * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL KEITH PACKARD 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. - */ - -#ifdef HAVE_CONFIG_H -#include -#endif -#include "vga.h" -#include - -#ifdef linux -#ifdef __i386__ -#define extern static -#include -#undef extern - -#define _VgaInb(r) inb(r) -#define _VgaOutb(v,r) outb(v,r) -#else -#define _VgaInb(r) 0 -#define _VgaOutb(v,r) -#endif - -#define _VgaByteAddr(a) ((VGAVOL8 *) (a)) -#define _VgaBytePort(a) (a) -#endif - - -#undef VGA_DEBUG_REGISTERS -#ifdef VGA_DEBUG_REGISTERS -#define VGA_DEBUG(a) fprintf a -#else -#define VGA_DEBUG(a) -#endif - -VGA8 -VgaInb (VGA16 r) -{ - return _VgaInb(r); -} - -void -VgaOutb (VGA8 v, VGA16 r) -{ - _VgaOutb (v,r); -} - -VGA8 -VgaReadMemb (VGA32 addr) -{ - return *_VgaByteAddr(addr); -} - -void -VgaWriteMemb (VGA8 v, VGA32 addr) -{ - *_VgaByteAddr(addr) = v; -} - -VGA8 -VgaFetch (VgaCard *card, VGA16 reg) -{ - VgaMap map; - VGA8 value = 0; - - (*card->map) (card, reg, &map, VGAFALSE); - switch (map.access) { - case VgaAccessMem: - value = VgaReadMemb (map.port); - VGA_DEBUG ((stderr, "%08x -> %2x\n", map.port, value)); - break; - case VgaAccessIo: - value = _VgaInb (map.port); - VGA_DEBUG ((stderr, "%4x -> %2x\n", map.port, value)); - break; - case VgaAccessIndMem: - VgaWriteMemb (map.index, map.port + map.addr); - value = VgaReadMemb (map.port + map.value); - VGA_DEBUG ((stderr, "%4x/%2x -> %2x\n", map.port, map.index, value)); - break; - case VgaAccessIndIo: - _VgaOutb (map.index, map.port + map.addr); - value = _VgaInb (map.port + map.value); - VGA_DEBUG ((stderr, "%4x/%2x -> %2x\n", map.port, map.index, value)); - break; - case VgaAccessDone: - value = map.value; - VGA_DEBUG ((stderr, "direct %4x -> %2x\n", reg, value)); - break; - } - return value; -} - -void -VgaStore (VgaCard *card, VGA16 reg, VGA8 value) -{ - VgaMap map; - - map.value = value; - (*card->map) (card, reg, &map, VGATRUE); - switch (map.access) { - case VgaAccessMem: - VGA_DEBUG ((stderr, "%8x <- %2x\n", map.port, value)); - VgaWriteMemb (map.value, map.port); - break; - case VgaAccessIo: - VGA_DEBUG ((stderr, "%4x <- %2x\n", map.port, value)); - _VgaOutb (value, map.port); - break; - case VgaAccessIndMem: - VgaWriteMemb (map.index, map.port + map.addr); - VgaWriteMemb (value, map.port + map.value); - VGA_DEBUG ((stderr, "%4x/%2x <- %2x\n", map.port, map.index, value)); - break; - case VgaAccessIndIo: - VGA_DEBUG ((stderr, "%4x/%2x <- %2x\n", map.port, map.index, value)); - _VgaOutb (map.index, map.port + map.addr); - _VgaOutb (value, map.port + map.value); - break; - case VgaAccessDone: - VGA_DEBUG ((stderr, "direct %4x <- %2x\n", reg, value)); - break; - } -} - -void -VgaPreserve (VgaCard *card) -{ - VgaSave *s; - VGA16 id; - - for (s = card->saves; s->first != VGA_REG_NONE; s++) - { - for (id = s->first; id <= s->last; id++) - { - card->values[id].cur = VgaFetch (card, id); - card->values[id].save = card->values[id].cur; - card->values[id].flags = VGA_VALUE_VALID | VGA_VALUE_SAVED; - } - } -} - -void -VgaRestore (VgaCard *card) -{ - VgaSave *s; - VGA16 id; - - for (s = card->saves; s->first != VGA_REG_NONE; s++) - { - for (id = s->first; id <= s->last; id++) - { - if (card->values[id].flags & VGA_VALUE_SAVED) - { - VgaStore (card, id, card->values[id].save); - card->values[id].cur = card->values[id].save; - } - } - } -} - -void -VgaFinish (VgaCard *card) -{ - VGA16 id; - - for (id = 0; id < card->max; id++) - card->values[id].flags = 0; -} - -void -VgaInvalidate (VgaCard *card) -{ - VGA16 id; - - for (id = 0; id < card->max; id++) - card->values[id].flags &= ~VGA_VALUE_VALID; -} - - -static void -_VgaSync (VgaCard *card, VGA16 id) -{ - if (!(card->values[id].flags & VGA_VALUE_VALID)) - { - card->values[id].cur = VgaFetch (card, id); - card->values[id].flags |= VGA_VALUE_VALID; - } -} - -void -VgaSet (VgaCard *card, VgaReg *reg, VGA32 value) -{ - VGA8 v, mask, new; - - while (reg->len) - { - if (reg->id != VGA_REG_NONE) - { - _VgaSync (card, reg->id); - mask = ((1 << reg->len) - 1); - new = value & mask; - mask <<= reg->base; - new <<= reg->base; - v = card->values[reg->id].cur; - v = (v & ~mask) | new; - card->values[reg->id].cur = v; - card->values[reg->id].flags |= VGA_VALUE_MODIFIED|VGA_VALUE_DIRTY; - } - value >>= reg->len; - reg++; - } -} - -void -VgaFlushReg (VgaCard *card, VgaReg *reg) -{ - while (reg->len) - { - if (reg->id != VGA_REG_NONE) - { - if (card->values[reg->id].flags & VGA_VALUE_DIRTY) - { - VgaStore (card, reg->id, card->values[reg->id].cur); - card->values[reg->id].flags &= ~VGA_VALUE_DIRTY; - } - } - reg++; - } - -} - -void -VgaSetImm (VgaCard *card, VgaReg *reg, VGA32 value) -{ - VgaSet (card, reg, value); - VgaFlushReg (card, reg); -} - -VGA32 -VgaGet (VgaCard *card, VgaReg *reg) -{ - VGA32 value, offset, v; - VGA8 mask; - - value = 0; - offset = 0; - while (reg->len) - { - if (reg->id != VGA_REG_NONE) - { - _VgaSync (card, reg->id); - mask = ((1 << reg->len) - 1); - v = (card->values[reg->id].cur >> reg->base) & mask; - value |= (v << offset); - } - offset += reg->len; - reg++; - } - return value; -} - -VGA32 -VgaGetImm (VgaCard *card, VgaReg *reg) -{ - VgaReg *r = reg; - - while (r->len) - { - if (r->id != VGA_REG_NONE) - card->values[r->id].flags &= ~VGA_VALUE_VALID; - r++; - } - return VgaGet (card, reg); -} - -void -VgaFlush (VgaCard *card) -{ - VGA16 id; - - for (id = 0; id < card->max; id++) - { - if (card->values[id].flags & VGA_VALUE_DIRTY) - { - VgaStore (card, id, card->values[id].cur); - card->values[id].flags &= ~VGA_VALUE_DIRTY; - } - } -} - -void -VgaFill (VgaCard *card, VGA16 low, VGA16 high) -{ - VGA16 id; - - for (id = low; id < high; id++) - _VgaSync (card, id); -} diff --git a/hw/kdrive/src/vga.h b/hw/kdrive/src/vga.h deleted file mode 100644 index 0615d5256..000000000 --- a/hw/kdrive/src/vga.h +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Copyright © 1999 Keith Packard - * - * 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 Keith Packard not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Keith Packard makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. - * - * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL KEITH PACKARD 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. - */ - -#ifndef _VGA_H_ -#define _VGA_H_ - -typedef unsigned long VGA32; -typedef unsigned short VGA16; -typedef unsigned char VGA8; -typedef int VGABOOL; -typedef volatile VGA8 VGAVOL8; - -#define VGATRUE 1 -#define VGAFALSE 0 - -typedef struct _vgaReg { - VGA16 id; - VGA8 base; - VGA8 len; -} VgaReg; - -#define VGA_REG_NONE 0xffff -#define VGA_REG_END VGA_REG_NONE, 0, 0 - -typedef struct _vgaValue { - VGA8 save; - VGA8 cur; - VGA16 flags; -} VgaValue; - -#define VGA_VALUE_VALID 1 /* value ever fetched */ -#define VGA_VALUE_MODIFIED 2 /* value ever changed */ -#define VGA_VALUE_DIRTY 4 /* value needs syncing */ -#define VGA_VALUE_SAVED 8 /* value preserved */ - -typedef enum _vgaAccess { - VgaAccessMem, VgaAccessIo, VgaAccessIndMem, VgaAccessIndIo, - VgaAccessDone -} VgaAccess; - -typedef struct _vgaMap { - VgaAccess access; - VGA32 port; - VGA8 addr; /* for Ind access; addr offset from port */ - VGA8 value; /* for Ind access; value offset from port */ - VGA8 index; /* for Ind access; index value */ -} VgaMap; - -#define VGA_UNLOCK_FIXED 1 /* dont save current value */ -#define VGA_UNLOCK_LOCK 2 /* execute only on relock */ -#define VGA_UNLOCK_UNLOCK 4 /* execute only on unlock */ - -typedef struct _vgaSave { - VGA16 first; - VGA16 last; -} VgaSave; - -#define VGA_SAVE_END VGA_REG_NONE, VGA_REG_NONE - -typedef struct _vgaCard { - void (*map) (struct _vgaCard *card, VGA16 reg, VgaMap *map, VGABOOL write); - void *closure; - int max; - VgaValue *values; - VgaSave *saves; -} VgaCard; - -VGA8 -VgaInb (VGA16 r); - -void -VgaOutb (VGA8 v, VGA16 r); - -VGA8 -VgaReadMemb (VGA32 addr); - -void -VgaWriteMemb (VGA8 v, VGA32 addr); - -void -VgaSetImm (VgaCard *card, VgaReg *reg, VGA32 value); - -VGA32 -VgaGetImm (VgaCard *card, VgaReg *reg); - -void -VgaSet (VgaCard *card, VgaReg *reg, VGA32 value); - -VGA32 -VgaGet (VgaCard *card, VgaReg *reg); - -void -VgaFlush (VgaCard *card); - -void -VgaFill (VgaCard *card, VGA16 low, VGA16 high); - -void -VgaPreserve (VgaCard *card); - -void -VgaInvalidate (VgaCard *card); - -void -VgaRestore (VgaCard *card); - -void -VgaFinish (VgaCard *card); - -void -VgaFlushReg (VgaCard *card, VgaReg *reg); - -VGA8 -VgaFetch (VgaCard *card, VGA16 id); - -void -VgaStore (VgaCard *card, VGA16 id, VGA8 value); - -VGA8 -_VgaFetchInd (VGA16 port, VGA8 reg); - -void -_VgaStoreInd (VGA16 port, VGA8 reg, VGA8 value); - -#endif /* _VGA_H_ */