Remove Linux-only driver.

This commit is contained in:
matthieu 2008-09-14 14:31:57 +00:00
parent ef78caa466
commit 0c67a7b21c
11 changed files with 0 additions and 3090 deletions

View File

@ -1,58 +0,0 @@
#
# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
#
# 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.
#
# 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 OPEN GROUP 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 holders 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 holders.
#
drivermandir = $(DRIVER_MAN_DIR)
driverman_PRE = @DRIVER_NAME@.man
driverman_DATA = $(driverman_PRE:man=@DRIVER_MAN_SUFFIX@)
EXTRA_DIST = @DRIVER_NAME@.man
CLEANFILES = $(driverman_DATA)
SED = sed
# Strings to replace in man pages
XORGRELSTRING = @PACKAGE_STRING@
XORGMANNAME = X Version 11
MAN_SUBSTS = \
-e 's|__vendorversion__|"$(XORGRELSTRING)" "$(XORGMANNAME)"|' \
-e 's|__xorgversion__|"$(XORGRELSTRING)" "$(XORGMANNAME)"|' \
-e 's|__xservername__|Xorg|g' \
-e 's|__xconfigfile__|xorg.conf|g' \
-e 's|__projectroot__|$(prefix)|g' \
-e 's|__appmansuffix__|$(APP_MAN_SUFFIX)|g' \
-e 's|__drivermansuffix__|$(DRIVER_MAN_SUFFIX)|g' \
-e 's|__adminmansuffix__|$(ADMIN_MAN_SUFFIX)|g' \
-e 's|__miscmansuffix__|$(MISC_MAN_SUFFIX)|g' \
-e 's|__filemansuffix__|$(FILE_MAN_SUFFIX)|g'
SUFFIXES = .$(DRIVER_MAN_SUFFIX) .man
.man.$(DRIVER_MAN_SUFFIX):
sed $(MAN_SUBSTS) < $< > $@

View File

@ -1,415 +0,0 @@
# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
# $Id: Makefile.in,v 1.1.1.1 2006/11/26 20:05:41 matthieu Exp $
#
# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
#
# 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.
#
# 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 OPEN GROUP 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 holders 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 holders.
#
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = man
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
am__installdirs = "$(DESTDIR)$(drivermandir)"
drivermanDATA_INSTALL = $(INSTALL_DATA)
DATA = $(driverman_DATA)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
ADMIN_MAN_DIR = @ADMIN_MAN_DIR@
ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
APP_MAN_DIR = @APP_MAN_DIR@
APP_MAN_SUFFIX = @APP_MAN_SUFFIX@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DRIVER_MAN_DIR = @DRIVER_MAN_DIR@
DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@
DRIVER_NAME = @DRIVER_NAME@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
F77 = @F77@
FFLAGS = @FFLAGS@
FILE_MAN_DIR = @FILE_MAN_DIR@
FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIB_MAN_DIR = @LIB_MAN_DIR@
LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
MAKEINFO = @MAKEINFO@
MISC_MAN_DIR = @MISC_MAN_DIR@
MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
XORG_CFLAGS = @XORG_CFLAGS@
XORG_LIBS = @XORG_LIBS@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
datadir = @datadir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
moduledir = @moduledir@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
drivermandir = $(DRIVER_MAN_DIR)
driverman_PRE = @DRIVER_NAME@.man
driverman_DATA = $(driverman_PRE:man=@DRIVER_MAN_SUFFIX@)
EXTRA_DIST = @DRIVER_NAME@.man
CLEANFILES = $(driverman_DATA)
SED = sed
# Strings to replace in man pages
XORGRELSTRING = @PACKAGE_STRING@
XORGMANNAME = X Version 11
MAN_SUBSTS = \
-e 's|__vendorversion__|"$(XORGRELSTRING)" "$(XORGMANNAME)"|' \
-e 's|__xorgversion__|"$(XORGRELSTRING)" "$(XORGMANNAME)"|' \
-e 's|__xservername__|Xorg|g' \
-e 's|__xconfigfile__|xorg.conf|g' \
-e 's|__projectroot__|$(prefix)|g' \
-e 's|__appmansuffix__|$(APP_MAN_SUFFIX)|g' \
-e 's|__drivermansuffix__|$(DRIVER_MAN_SUFFIX)|g' \
-e 's|__adminmansuffix__|$(ADMIN_MAN_SUFFIX)|g' \
-e 's|__miscmansuffix__|$(MISC_MAN_SUFFIX)|g' \
-e 's|__filemansuffix__|$(FILE_MAN_SUFFIX)|g'
SUFFIXES = .$(DRIVER_MAN_SUFFIX) .man
all: all-am
.SUFFIXES:
.SUFFIXES: .$(DRIVER_MAN_SUFFIX) .man
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu man/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu man/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-rm -f libtool
uninstall-info-am:
install-drivermanDATA: $(driverman_DATA)
@$(NORMAL_INSTALL)
test -z "$(drivermandir)" || $(mkdir_p) "$(DESTDIR)$(drivermandir)"
@list='$(driverman_DATA)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f=$(am__strip_dir) \
echo " $(drivermanDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(drivermandir)/$$f'"; \
$(drivermanDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(drivermandir)/$$f"; \
done
uninstall-drivermanDATA:
@$(NORMAL_UNINSTALL)
@list='$(driverman_DATA)'; for p in $$list; do \
f=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(drivermandir)/$$f'"; \
rm -f "$(DESTDIR)$(drivermandir)/$$f"; \
done
tags: TAGS
TAGS:
ctags: CTAGS
CTAGS:
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
$(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
if test -d $$d/$$file; then \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(DATA)
installdirs:
for dir in "$(DESTDIR)$(drivermandir)"; do \
test -z "$$dir" || $(mkdir_p) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-libtool
dvi: dvi-am
dvi-am:
html: html-am
info: info-am
info-am:
install-data-am: install-drivermanDATA
install-exec-am:
install-info: install-info-am
install-man:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-drivermanDATA uninstall-info-am
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
distclean distclean-generic distclean-libtool distdir dvi \
dvi-am html html-am info info-am install install-am \
install-data install-data-am install-drivermanDATA \
install-exec install-exec-am install-info install-info-am \
install-man install-strip installcheck installcheck-am \
installdirs maintainer-clean maintainer-clean-generic \
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
ps ps-am uninstall uninstall-am uninstall-drivermanDATA \
uninstall-info-am
.man.$(DRIVER_MAN_SUFFIX):
sed $(MAN_SUBSTS) < $< > $@
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@ -1,49 +0,0 @@
.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/impact/impact.man,v 1.3 2001/11/23 19:50:45 dawes Exp $
.\" shorthand for double quote that works everywhere.
.ds q \N'34'
.TH IMPACT __drivermansuffix__ __vendorversion__
.SH NAME
impact \- Impact video driver
.SH SYNOPSIS
.nf
.B "Section \*qDevice\*q"
.BI " Identifier \*q" devname \*q
.B " Driver \*qimpact\*q"
\ \ ...
.B EndSection
.fi
.SH DESCRIPTION
.B impact
is an XFree86 driver for the SGI Indigo2's impact video cards.
.SH SUPPORTED HARDWARE
The
.B impact
driver supports the Impact (MardiGras) cards found in SGI Indigo2 and ImpactSR
(also MardiGras) cards found in SGI Octane.
It supports Impact in 24bit TrueColor mode. There is also a 8bit PseudoColor
mode, but this affects the shadow frame-buffer only (memory usage), hardware
settings are the same.
.SH CONFIGURATION DETAILS
Please refer to XF86Config(__filemansuffix__) for general configuration
details. This section only covers configuration details specific to this
driver.
.PP
The driver auto-detects all device information necessary to initialize
the card. However, you have to decide what color mode you want:
.br
.TP
.BI "Option \*qbitplanes\*q \*q" integer \*q
number of bitplanes of the board (8 or 24)
Default: 24.
.SH "SEE ALSO"
XFree86(1), XF86Config(__filemansuffix__), xf86config(1), Xserver(1), X(__miscmansuffix__)
.SH AUTHORS
Authors:
.TP
Impact XFree86 driver: Peter FÜrst \fIpf@net.alphadv.de\fP
.TP
ImpactSR kernel driver: Stanislaw Skowronek \fIsskowron@et.put.poznan.pl\fP
.TP
Newport XFree86 driver: Guido GÜnther \fIagx@sigxcpu.org\fP
.TP

View File

@ -1,37 +0,0 @@
# Copyright 2005 Adam Jackson.
#
# 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
# on the rights to use, copy, modify, merge, publish, distribute, sub
# license, 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 NON-INFRINGEMENT. IN NO EVENT SHALL
# ADAM JACKSON 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.
# this is obnoxious:
# -module lets us name the module exactly how we want
# -avoid-version prevents gratuitous .0.0.0 version numbers on the end
# _ladir passes a dummy rpath to libtool so the thing will actually link
# TODO: -nostdlib/-Bstatic/-lgcc platform magic, not installing the .a, etc.
AM_CFLAGS = @XORG_CFLAGS@
impact_drv_la_LTLIBRARIES = impact_drv.la
impact_drv_la_LDFLAGS = -module -avoid-version
impact_drv_ladir = @moduledir@/drivers
impact_drv_la_SOURCES = \
impact_cmap.c \
impact_driver.c \
impact.h \
impact_regs.c \
impact_regs.h \
impact_shadow.c

View File

@ -1,509 +0,0 @@
# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
# Copyright 2005 Adam Jackson.
#
# 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
# on the rights to use, copy, modify, merge, publish, distribute, sub
# license, 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 NON-INFRINGEMENT. IN NO EVENT SHALL
# ADAM JACKSON 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.
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = src
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
am__installdirs = "$(DESTDIR)$(impact_drv_ladir)"
impact_drv_laLTLIBRARIES_INSTALL = $(INSTALL)
LTLIBRARIES = $(impact_drv_la_LTLIBRARIES)
impact_drv_la_LIBADD =
am_impact_drv_la_OBJECTS = impact_cmap.lo impact_driver.lo \
impact_regs.lo impact_shadow.lo
impact_drv_la_OBJECTS = $(am_impact_drv_la_OBJECTS)
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
SOURCES = $(impact_drv_la_SOURCES)
DIST_SOURCES = $(impact_drv_la_SOURCES)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
ADMIN_MAN_DIR = @ADMIN_MAN_DIR@
ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
APP_MAN_DIR = @APP_MAN_DIR@
APP_MAN_SUFFIX = @APP_MAN_SUFFIX@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DRIVER_MAN_DIR = @DRIVER_MAN_DIR@
DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@
DRIVER_NAME = @DRIVER_NAME@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
F77 = @F77@
FFLAGS = @FFLAGS@
FILE_MAN_DIR = @FILE_MAN_DIR@
FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIB_MAN_DIR = @LIB_MAN_DIR@
LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
MAKEINFO = @MAKEINFO@
MISC_MAN_DIR = @MISC_MAN_DIR@
MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
XORG_CFLAGS = @XORG_CFLAGS@
XORG_LIBS = @XORG_LIBS@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
datadir = @datadir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
moduledir = @moduledir@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
# this is obnoxious:
# -module lets us name the module exactly how we want
# -avoid-version prevents gratuitous .0.0.0 version numbers on the end
# _ladir passes a dummy rpath to libtool so the thing will actually link
# TODO: -nostdlib/-Bstatic/-lgcc platform magic, not installing the .a, etc.
AM_CFLAGS = @XORG_CFLAGS@
impact_drv_la_LTLIBRARIES = impact_drv.la
impact_drv_la_LDFLAGS = -module -avoid-version
impact_drv_ladir = @moduledir@/drivers
impact_drv_la_SOURCES = \
impact_cmap.c \
impact_driver.c \
impact.h \
impact_regs.c \
impact_regs.h \
impact_shadow.c
all: all-am
.SUFFIXES:
.SUFFIXES: .c .lo .o .obj
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu src/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
install-impact_drv_laLTLIBRARIES: $(impact_drv_la_LTLIBRARIES)
@$(NORMAL_INSTALL)
test -z "$(impact_drv_ladir)" || $(mkdir_p) "$(DESTDIR)$(impact_drv_ladir)"
@list='$(impact_drv_la_LTLIBRARIES)'; for p in $$list; do \
if test -f $$p; then \
f=$(am__strip_dir) \
echo " $(LIBTOOL) --mode=install $(impact_drv_laLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(impact_drv_ladir)/$$f'"; \
$(LIBTOOL) --mode=install $(impact_drv_laLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(impact_drv_ladir)/$$f"; \
else :; fi; \
done
uninstall-impact_drv_laLTLIBRARIES:
@$(NORMAL_UNINSTALL)
@set -x; list='$(impact_drv_la_LTLIBRARIES)'; for p in $$list; do \
p=$(am__strip_dir) \
echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(impact_drv_ladir)/$$p'"; \
$(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(impact_drv_ladir)/$$p"; \
done
clean-impact_drv_laLTLIBRARIES:
-test -z "$(impact_drv_la_LTLIBRARIES)" || rm -f $(impact_drv_la_LTLIBRARIES)
@list='$(impact_drv_la_LTLIBRARIES)'; for p in $$list; do \
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
test "$$dir" != "$$p" || dir=.; \
echo "rm -f \"$${dir}/so_locations\""; \
rm -f "$${dir}/so_locations"; \
done
impact_drv.la: $(impact_drv_la_OBJECTS) $(impact_drv_la_DEPENDENCIES)
$(LINK) -rpath $(impact_drv_ladir) $(impact_drv_la_LDFLAGS) $(impact_drv_la_OBJECTS) $(impact_drv_la_LIBADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/impact_cmap.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/impact_driver.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/impact_regs.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/impact_shadow.Plo@am__quote@
.c.o:
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
.c.obj:
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
.c.lo:
@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-rm -f libtool
uninstall-info-am:
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
$(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
if test -d $$d/$$file; then \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(LTLIBRARIES)
installdirs:
for dir in "$(DESTDIR)$(impact_drv_ladir)"; do \
test -z "$$dir" || $(mkdir_p) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-impact_drv_laLTLIBRARIES clean-libtool \
mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-libtool distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
info: info-am
info-am:
install-data-am: install-impact_drv_laLTLIBRARIES
install-exec-am:
install-info: install-info-am
install-man:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-impact_drv_laLTLIBRARIES uninstall-info-am
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
clean-impact_drv_laLTLIBRARIES clean-libtool ctags distclean \
distclean-compile distclean-generic distclean-libtool \
distclean-tags distdir dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am install-exec \
install-exec-am install-impact_drv_laLTLIBRARIES install-info \
install-info-am install-man install-strip installcheck \
installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags uninstall uninstall-am uninstall-impact_drv_laLTLIBRARIES \
uninstall-info-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@ -1,143 +0,0 @@
/*
* impact.h 2005/07/12 23:24:15, Copyright (c) 2005 peter fuerst
*
* Based on:
* # newport.h,v 1.4 2000/11/29 20:58:10 agx Exp #
* # xc/programs/Xserver/hw/xfree86/drivers/newport/newport.h,v
* 1.8 2001/12/19 21:31:21 dawes Exp #
*/
#ifndef __IMPACT_H__
#define __IMPACT_H__
/*
* All drivers should include these:
*/
#include "xf86.h"
#include "xf86_OSproc.h"
#include "compiler.h"
#include "xf86Resources.h"
#include "xf86cmap.h"
/* xaa & hardware cursor */
#include "xaa.h"
#include "xf86Cursor.h"
/* register definitions of the Impact card */
#include "impact_regs.h"
#if 0
# define DEBUG 1
#endif
#ifdef DEBUG
# define TRACE_ENTER(str) ErrorF("impact: " str " %d\n",pScrn->scrnIndex)
# define TRACE_EXIT(str) ErrorF("impact: " str " done\n")
# define TRACE(str) ErrorF("impact trace: " str "\n")
# define TRACEV(str...) ErrorF(str)
#else
# define TRACE_ENTER(str)
# define TRACE_EXIT(str)
# define TRACE(str)
# define TRACEV(str...)
#endif
#define IMPACT_FIXED_W_SCRN 1280
#define IMPACT_FIXED_H_SCRN 1024
typedef struct {
unsigned busID;
unsigned isSR;
int devFD;
int bitplanes;
/* revision numbers of the various pieces of silicon */
unsigned int board_rev, cmap_rev, rex_rev, xmap_rev;
ImpactRegsPtr pImpactRegs; /* Pointer to HQ registers */
unsigned long base_addr0;
unsigned long base_offset;
/* ShadowFB stuff: */
pointer ShadowPtr;
unsigned long int ShadowPitch;
unsigned int Bpp; /* Bytes per pixel */
/* for 8bpp ... */
unsigned pseudo_palette[256];
/* wrapped funtions: */
CloseScreenProcPtr CloseScreen;
/* impact register backups: */
struct {
mgireg32_t main_mode;
mgireg8_t pp1select;
} txt_xmap;
unsigned short txt_vc3[0x20];
/* impact register handling for FullHouse/SpeedRacer: */
void (*WaitCfifoEmpty)(ImpactRegsPtr);
unsigned (*WaitCfifo)(ImpactRegsPtr);
unsigned (*WaitDMAOver)(ImpactRegsPtr);
unsigned (*WaitDMAReady)(ImpactRegsPtr);
unsigned short (*Vc3Get)(ImpactRegsPtr, CARD8);
void (*Vc3Set)(ImpactRegsPtr, CARD8, unsigned short);
CARD32 (*XmapGetModeRegister)(ImpactRegsPtr, CARD8);
void (*XmapSetModeRegister)(ImpactRegsPtr, CARD8, CARD32);
void (*RefreshArea8)(ScrnInfoPtr, int num, BoxPtr pbox);
void (*RefreshArea32)(ScrnInfoPtr, int num, BoxPtr pbox);
void (*FlushBoxCache)(int, char*, BoxPtr, unsigned);
OptionInfoPtr Options;
} ImpactRec, *ImpactPtr;
#define IMPACTPTR(p) ((ImpactPtr)((p)->driverPrivate))
#define IMPACTREGSPTR(p) ((IMPACTPTR(p))->pImpactRegs)
/* Impact_regs.c */
void ImpactI2WaitCfifoEmpty(ImpactRegsPtr);
void ImpactSRWaitCfifoEmpty(ImpactRegsPtr);
void ImpactI2WaitDMAOver(ImpactRegsPtr);
void ImpactSRWaitDMAOver(ImpactRegsPtr);
void ImpactI2WaitDMAReady(ImpactRegsPtr);
void ImpactSRWaitDMAReady(ImpactRegsPtr);
unsigned ImpactI2WaitCfifo(ImpactRegsPtr,int);
unsigned ImpactSRWaitCfifo(ImpactRegsPtr,int);
unsigned short ImpactI2Vc3Get(ImpactRegsPtr, CARD8 vc2Ireg);
unsigned short ImpactSRVc3Get(ImpactRegsPtr, CARD8 vc2Ireg);
void ImpactI2Vc3Set(ImpactRegsPtr, CARD8 vc2Ireg, unsigned short val);
void ImpactSRVc3Set(ImpactRegsPtr, CARD8 vc2Ireg, unsigned short val);
void ImpactI2XmapSetModeRegister(ImpactRegsPtr, CARD8 address, CARD32 mode);
void ImpactSRXmapSetModeRegister(ImpactRegsPtr, CARD8 address, CARD32 mode);
CARD32 ImpactI2XmapGetModeRegister(ImpactRegsPtr, CARD8 address);
CARD32 ImpactSRXmapGetModeRegister(ImpactRegsPtr, CARD8 address);
void ImpactVc3DisableCursor(ScrnInfoPtr);
void ImpactVc3BlankScreen(ScrnInfoPtr, int);
void ImpactXmapSet24bpp(ScrnInfoPtr);
void ImpactBackupVc3(ScrnInfoPtr);
void ImpactRestoreVc3(ScrnInfoPtr);
void ImpactBackupRex(ScrnInfoPtr);
void ImpactRestoreRex(ScrnInfoPtr);
void ImpactBackupXmap(ScrnInfoPtr);
void ImpactRestoreXmap(ScrnInfoPtr);
/* newort_cmap.c */
static __inline__ unsigned
ImpactGetPalReg(ImpactPtr pImpact, int i)
{
return pImpact->pseudo_palette[i & 0xff];
}
void ImpactLoadPalette(ScrnInfoPtr, int numColors, int *indices,
LOCO* colors, VisualPtr);
void ImpactRestorePalette(ScrnInfoPtr);
void ImpactBackupPalette(ScrnInfoPtr);
/* impact_shadow.c */
int ImpactDepth24Flags(void);
void ImpactI2RefreshArea8(ScrnInfoPtr, int num, BoxPtr pbox);
void ImpactSRRefreshArea8(ScrnInfoPtr, int num, BoxPtr pbox);
void ImpactI2RefreshArea32(ScrnInfoPtr, int num, BoxPtr pbox);
void ImpactSRRefreshArea32(ScrnInfoPtr, int num, BoxPtr pbox);
#endif /* __IMPACT_H__ */

View File

@ -1,52 +0,0 @@
/*
* impact.h 2005/07/15 01:40:13, Copyright (c) 2005 peter fuerst
*
* Based on:
* # newport_cmap.c,v 1.1 2000/11/29 20:58:10 agx Exp #
* # xc/programs/Xserver/hw/xfree86/drivers/newport/newport_cmap.c,v
* 1.2 2001/11/23 19:50:45 dawes Exp #
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "impact.h"
/*
unsigned ImpactGetPalReg(ImpactPtr pImpact, int i)
{
return pImpact->pseudo_palette[i & 0xff];
}
*/
/* Load a colormap into the "hardware" */
void ImpactLoadPalette(ScrnInfoPtr pScrn, int numColors, int *indices,
LOCO* colors, VisualPtr pVisual)
{
ImpactPtr pImpact = IMPACTPTR(pScrn);
TRACEV("ImpactLoadPalette(%d) %c", numColors, numColors!=1?'\n':0);
if (numColors > 256) numColors = 256;
for ( ; numColors > 0; numColors--, indices++, colors++) {
unsigned rgb = colors->blue & 0xff00;
rgb = (rgb<<8) | (colors->green & 0xff00) | (colors->red>>8);
pImpact->pseudo_palette[*indices] = rgb;
TRACEV("%d:%04x %04x,%04x,%04x\n", *indices, rgb,
(int)colors->red, (int)colors->green, (int)colors->blue);
}
TRACEV("\n");
}
void ImpactBackupPalette(ScrnInfoPtr pScrn)
{
(void)IMPACTPTR(pScrn)->pseudo_palette; /* Nothing to do? */
}
/* restore the default colormap */
void ImpactRestorePalette(ScrnInfoPtr pScrn)
{
(void)IMPACTPTR(pScrn)->pseudo_palette; /* Nothing to do? */
}

View File

@ -1,888 +0,0 @@
/*
* impact_driver.c 2005/07/12 23:24:15, Copyright (c) 2005 peter fuerst
*
* Driver for the SGI Impact/ImpactSR graphics card
*
* This driver is based on the
* newport driver, (c) 2000,2001 Guido Guenther <agx@sigxcpu.org>,
* # newport_driver.c,v 1.2 2000/11/29 20:58:10 agx Exp #
* # xc/programs/Xserver/hw/xfree86/drivers/newport/newport_driver.c,v
* 1.19 2002/01/04 21:22:33 tsi Exp #
*
* The newport driver is based on the newport.c & newport_con.c kernel code
*
* 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 fur-
* nished 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, FIT-
* NESS 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 CON-
* NECTION 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 deal-
* ings in this Software without prior written authorization from the XFree86
* Project.
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
/* [un]mmap */
#include <sys/mman.h>
/* function prototypes, common data structures & generic includes */
#include "impact.h"
/* Drivers using the mi SW cursor need: */
#include "mipointer.h"
/* Drivers using the mi implementation of backing store need: */
#include "mibstore.h"
/* Drivers using the mi colourmap code need: */
#include "micmap.h"
/* Drivers using fb need: */
#include "fb.h"
/* Drivers using the shadow frame buffer need: */
#include "shadowfb.h"
/* Xv Extension */
#include "xf86xv.h"
#include <X11/extensions/Xv.h>
#include <string.h>
#include <stdio.h>
#include <errno.h>
#include <fcntl.h>
#define IMPACT_MAX_BOARDS 3
#define IMPACT_FB_MMAP_OFF(pool) ((pool)<<24)
#define IMPACT_VERSION 4000
#define IMPACT_NAME "IMPACT"
#define IMPACT_DRIVER_NAME "impact"
#define IMPACT_MAJOR_VERSION 0
#define IMPACT_MINOR_VERSION 2
#define IMPACT_PATCHLEVEL 0
struct probed_id {
unsigned char id;
unsigned char sr;
};
/* Prototypes ------------------------------------------------------- */
static void ImpactIdentify(int flags);
static const OptionInfoRec * ImpactAvailableOptions(int chipid, int busid);
static Bool ImpactProbe(DriverPtr drv, int flags);
static Bool ImpactPreInit(ScrnInfoPtr pScrn, int flags);
static Bool ImpactScreenInit(int Index, ScreenPtr pScreen, int argc, char **argv);
static Bool ImpactEnterVT(int scrnIndex, int flags);
static void ImpactLeaveVT(int scrnIndex, int flags);
static Bool ImpactCloseScreen(int scrnIndex, ScreenPtr pScreen);
static Bool ImpactSaveScreen(ScreenPtr pScreen, int mode);
static unsigned ImpactHWProbe(struct probed_id probedIDs[],int lim); /* return number of found boards */
static Bool ImpactModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode);
static void ImpactRestore(ScrnInfoPtr pScrn, Bool Closing);
static Bool ImpactMapRegs(ScrnInfoPtr pScrn);
static Bool ImpactMapShadowFB(ScrnInfoPtr pScrn);
static void ImpactUnmapRegs(ScrnInfoPtr pScrn);
static void ImpactUnmapShadowFB(ScrnInfoPtr pScrn);
static Bool ImpactProbeCardInfo(ScrnInfoPtr pScrn);
/* ------------------------------------------------------------------ */
DriverRec IMPACT = {
IMPACT_VERSION,
IMPACT_DRIVER_NAME,
ImpactIdentify,
ImpactProbe,
ImpactAvailableOptions,
NULL,
0
};
/* Supported "chipsets" */
#define CHIP_MG_3 0x1
#define CHIP_MG_4 0x2
static SymTabRec ImpactChipsets[] = {
{ CHIP_MG_3, "MardiGrasHQ3" },
{ CHIP_MG_4, "MardiGrasHQ4" },
{ -1, NULL }
};
/* List of Symbols from other modules that this module references */
static const char *fbSymbols[] = {
"fbPictureInit",
"fbScreenInit",
NULL
};
static const char *shadowSymbols[] = {
"ShadowFBInit",
NULL
};
#ifdef XFree86LOADER
static MODULESETUPPROTO(impactSetup);
static XF86ModuleVersionInfo impactVersRec =
{
"impact",
MODULEVENDORSTRING,
MODINFOSTRING1,
MODINFOSTRING2,
XF86_VERSION_CURRENT,
IMPACT_MAJOR_VERSION, IMPACT_MINOR_VERSION, IMPACT_PATCHLEVEL,
ABI_CLASS_VIDEODRV,
ABI_VIDEODRV_VERSION,
MOD_CLASS_VIDEODRV,
{0,0,0,0}
};
XF86ModuleData impactModuleData = { &impactVersRec, impactSetup, NULL };
static pointer
impactSetup(pointer module, pointer opts, int *errmaj, int *errmin)
{
static Bool setupDone = FALSE;
/* This module should be loaded only once, but check to be sure. */
if (!setupDone) {
/*
* Modules that this driver always requires may be loaded
* here by calling LoadSubModule().
*/
setupDone = TRUE;
xf86AddDriver(&IMPACT, module, 0);
/*
* Tell the loader about symbols from other modules that this module
* might refer to.
*/
LoaderRefSymLists(fbSymbols, shadowSymbols, NULL);
/*
* The return value must be non-NULL on success even though
* there is no TearDownProc.
*/
return (pointer)1;
} else {
if (errmaj) *errmaj = LDR_ONCEONLY;
return 0;
}
}
#endif /* XFree86LOADER */
typedef enum {
OPTION_BITPLANES,
OPTION_BUS_ID
} ImpactOpts;
/* Supported options */
static const OptionInfoRec ImpactOptions [] = {
{ OPTION_BITPLANES, "Depth", OPTV_INTEGER, {0}, FALSE },
{ OPTION_BUS_ID, "BusID", OPTV_INTEGER, {0}, FALSE },
{ -1, NULL, OPTV_NONE, {0}, FALSE }
};
/* ------------------------------------------------------------------ */
static Bool
ImpactGetRec(ScrnInfoPtr pScrn)
{
ImpactPtr pImpact;
int i, j;
if (pScrn->driverPrivate)
return TRUE;
pScrn->driverPrivate = xnfcalloc(sizeof(ImpactRec), 1);
pImpact = IMPACTPTR(pScrn);
memset(pImpact, 0, sizeof(*pImpact));
for (i = j = 0; i < 256; i++, j += 0x010101)
pImpact->pseudo_palette[i] = j;
return TRUE;
}
static Bool
ImpactFreeRec(ScrnInfoPtr pScrn)
{
if (!pScrn->driverPrivate)
return TRUE;
xfree(pScrn->driverPrivate);
pScrn->driverPrivate = 0;
return TRUE;
}
static void
ImpactIdentify(int flags)
{
xf86PrintChipsets(
IMPACT_NAME, "experimental driver for Impact Graphics Card",
ImpactChipsets);
}
static Bool
ImpactProbe(DriverPtr drv, int flags)
{
int numDevSections, numUsed, i, j, busID;
Bool foundScreen = FALSE;
GDevPtr *devSections;
GDevPtr dev = 0;
resRange range[] = { {ResExcMemBlock,0,0}, _END };
struct probed_id probedIDs[IMPACT_MAX_BOARDS];
memType base;
if ((numDevSections = xf86MatchDevice(IMPACT_DRIVER_NAME,&devSections))
<= 0)
return FALSE;
numUsed = ImpactHWProbe(probedIDs, IMPACT_MAX_BOARDS);
if (numUsed <= 0)
return FALSE;
if (flags & PROBE_DETECT)
foundScreen = TRUE;
else {
for (i = 0; i < numDevSections; i++) {
dev = devSections[i];
busID = xf86SetIntOption(dev->options, "BusID", 0);
for (j = 0; j < numUsed; j++)
if (busID == probedIDs[j].id) {
int entity;
ScrnInfoPtr pScrn = 0;
/*
* This is a hack because don't have the RAC info (and
* don't want it). Set it as an ISA entity to get the
* entity field set up right.
*/
entity = xf86ClaimIsaSlot(drv, 0, dev, TRUE);
if (probedIDs[j].sr) {
base = (IMPACTSR_BASE_ADDR0 + busID * IMPACTSR_BASE_OFFSET);
RANGE(range[0], base,
base + sizeof(ImpactSRRegs), ResExcMemBlock);
} else {
base = (IMPACTI2_BASE_ADDR0 + busID * IMPACTI2_BASE_OFFSET);
RANGE(range[0], base,
base + sizeof(ImpactI2Regs), ResExcMemBlock);
}
pScrn = xf86ConfigIsaEntity(pScrn, 0, entity, NULL,
range, NULL, NULL, NULL, NULL);
/* Allocate a ScrnInfoRec */
pScrn->driverVersion = IMPACT_VERSION;
pScrn->driverName = IMPACT_DRIVER_NAME;
pScrn->name = IMPACT_NAME;
pScrn->Probe = ImpactProbe;
pScrn->PreInit = ImpactPreInit;
pScrn->ScreenInit = ImpactScreenInit;
pScrn->EnterVT = ImpactEnterVT;
pScrn->LeaveVT = ImpactLeaveVT;
pScrn->driverPrivate =
(void*)(busID | (long)probedIDs[j].sr<<16);
foundScreen = TRUE;
break;
}
}
}
xfree(devSections);
return foundScreen;
}
/* most of this is from DESIGN.TXT s20.3.6 */
static Bool
ImpactPreInit(ScrnInfoPtr pScrn, int flags)
{
long busID;
int i;
ImpactPtr pImpact;
MessageType from;
ClockRangePtr clockRanges;
pointer pFbMod = 0;
if (flags & PROBE_DETECT) return FALSE;
if (pScrn->numEntities != 1)
return FALSE;
busID = (long)pScrn->driverPrivate;
pScrn->driverPrivate = 0;
/* Fill in the monitor field */
pScrn->monitor = pScrn->confScreen->monitor;
if ( !xf86SetDepthBpp(pScrn, 8, 8, 8, ImpactDepth24Flags()) )
return FALSE;
switch (pScrn->depth) {
/* check if the returned depth is one we support */
case 8:
case 24:
/* OK */
break;
default:
xf86DrvMsg(
pScrn->scrnIndex, X_ERROR,
"Given depth (%d) is not supported by Impact driver\n",
pScrn->depth
);
return FALSE;
}
/* Set bits per RGB for 8bpp */
if (8 == pScrn->depth)
pScrn->rgbBits = 8;
/* Set Default Weight */
if (pScrn->depth > 8) {
rgb weights = {8, 8, 8};
rgb masks = {0xFF, 0xFF00, 0xFF0000};
if ( !xf86SetWeight(pScrn, weights, masks) )
return FALSE;
}
xf86PrintDepthBpp(pScrn);
if ( !xf86SetDefaultVisual(pScrn,-1) )
return FALSE;
if (pScrn->depth > 8 && pScrn->defaultVisual != TrueColor) {
xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Given default visual"
" (%s) is not supported at depth %d\n",
xf86GetVisualName(pScrn->defaultVisual), pScrn->depth);
return FALSE;
}
{ /* Set default Gamma */
Gamma zeros = {0.0, 0.0, 0.0};
if ( !xf86SetGamma(pScrn,zeros) )
return FALSE;
}
/* Allocate the ImpactRec driverPrivate */
if ( !ImpactGetRec(pScrn) )
return FALSE;
/* ...and initialize it. */
pImpact = IMPACTPTR(pScrn);
pImpact->busID = busID & 0xffff;
pImpact->isSR = busID >> 16;
pImpact->FlushBoxCache = 0;
if (pImpact->isSR) {
pImpact->WaitCfifoEmpty = &ImpactSRWaitCfifoEmpty;
pImpact->WaitDMAOver = &ImpactSRWaitDMAOver;
pImpact->WaitDMAReady = &ImpactSRWaitDMAReady;
pImpact->Vc3Get = &ImpactSRVc3Get;
pImpact->Vc3Set = &ImpactSRVc3Set;
pImpact->XmapGetModeRegister = &ImpactSRXmapGetModeRegister;
pImpact->XmapSetModeRegister = &ImpactSRXmapSetModeRegister;
pImpact->RefreshArea8 = &ImpactSRRefreshArea8;
pImpact->RefreshArea32 = &ImpactSRRefreshArea32;
pImpact->base_addr0 = IMPACTSR_BASE_ADDR0;
pImpact->base_offset = IMPACTSR_BASE_OFFSET;
} else {
pImpact->WaitCfifoEmpty = &ImpactI2WaitCfifoEmpty;
pImpact->WaitDMAOver = &ImpactI2WaitDMAOver;
pImpact->WaitDMAReady = &ImpactI2WaitDMAReady;
pImpact->Vc3Get = &ImpactI2Vc3Get;
pImpact->Vc3Set = &ImpactI2Vc3Set;
pImpact->XmapGetModeRegister = &ImpactI2XmapGetModeRegister;
pImpact->XmapSetModeRegister = &ImpactI2XmapSetModeRegister;
pImpact->RefreshArea8 = &ImpactI2RefreshArea8;
pImpact->RefreshArea32 = &ImpactI2RefreshArea32;
pImpact->base_addr0 = IMPACTI2_BASE_ADDR0;
pImpact->base_offset = IMPACTI2_BASE_OFFSET;
}
/* We use a programmable clock */
pScrn->progClock = TRUE;
/* Fill in pScrn->options) */
xf86CollectOptions(pScrn, NULL);
if ( !(pImpact->Options = xalloc(sizeof(ImpactOptions))) )
goto out_freerec;
memcpy(pImpact->Options, ImpactOptions, sizeof(ImpactOptions));
xf86ProcessOptions(pScrn->scrnIndex, pScrn->options, pImpact->Options);
/* Set fields in ScreenInfoRec && ImpactRec */
pScrn->videoRam = IMPACT_FIXED_W_SCRN * (pScrn->bitsPerPixel >> 3);
/* get revisions of REX3, etc. */
if ( !ImpactMapRegs(pScrn) )
goto out_freeopt;
ImpactProbeCardInfo(pScrn);
ImpactUnmapRegs(pScrn);
from = X_PROBED;
xf86DrvMsg(
pScrn->scrnIndex, from,
"Impact Graphics Revisions: Board: %d, Rex: %c, Cmap: %c, Xmap: %c\n",
pImpact->board_rev, pImpact->rex_rev,
pImpact->cmap_rev, pImpact->xmap_rev);
if ( xf86GetOptValInteger(
pImpact->Options, OPTION_BITPLANES, &pImpact->bitplanes) )
from = X_CONFIG;
xf86DrvMsg(pScrn->scrnIndex, from, "Impact has %d bitplanes\n",
pImpact->bitplanes);
if (pScrn->depth > pImpact->bitplanes) {
xf86DrvMsg(
pScrn->scrnIndex, X_ERROR,
"Display depth(%d) > number of bitplanes on Impact board(%d)\n",
pScrn->depth, pImpact->bitplanes);
goto out_freeopt;
}
if (pImpact->bitplanes != 8 && pImpact->bitplanes != 24) {
xf86DrvMsg(
pScrn->scrnIndex, X_ERROR,
"Number of bitplanes on impact must be either 8 or 24 not %d\n",
pImpact->bitplanes);
goto out_freeopt;
}
/* Set up clock ranges that are alway ok */
/* XXX: Use information from VC2 here */
clockRanges = xnfalloc(sizeof(ClockRange));
clockRanges->next = 0;
clockRanges->minClock = 10000;
clockRanges->maxClock = 300000;
clockRanges->clockIndex = -1; /* programmable */
clockRanges->interlaceAllowed = TRUE;
clockRanges->doubleScanAllowed = TRUE;
/* see above note */
/* There is currently only an 1280x1024 mode */
i = xf86ValidateModes(
pScrn, pScrn->monitor->Modes,
pScrn->display->modes, clockRanges,
NULL, 256, 2048,
pScrn->bitsPerPixel, 128, 2048,
pScrn->display->virtualX,
pScrn->display->virtualY,
pScrn->videoRam * 1024,
LOOKUP_BEST_REFRESH);
if (-1 == i)
goto out_freeopt;
xf86PruneDriverModes(pScrn);
if (!i || !pScrn->modes) {
xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "No valid modes found\n");
goto out_freeopt;
}
/* unnecessary, but do it to get a valid ScrnInfoRec */
xf86SetCrtcForModes(pScrn, INTERLACE_HALVE_V);
/* Set the current mode to the first in the list */
pScrn->currentMode = pScrn->modes;
/* Print the list of modes being used */
xf86PrintModes(pScrn);
xf86SetDpi(pScrn, 0, 0);
/* Load FB module */
if ( !(pFbMod = xf86LoadSubModule(pScrn,"fb")) )
goto out_freeopt;
xf86LoaderReqSymLists( fbSymbols, NULL);
/* Load ShadowFB module */
if ( !xf86LoadSubModule(pScrn,"shadowfb") )
goto out_freemod;
xf86LoaderReqSymLists(shadowSymbols, NULL);
return TRUE;
out_freemod:
/* xf86UnloadSubModule(pFbMod); */ /* Unload FB module */
out_freeopt:
xfree(pImpact->Options);
out_freerec:
ImpactFreeRec(pScrn);
return FALSE;
}
static Bool
ImpactScreenInit(int index, ScreenPtr pScreen, int argc, char **argv)
{
ScrnInfoPtr pScrn;
ImpactPtr pImpact;
VisualPtr visual;
BOOL ret;
int i;
/* First get a pointer to our private info */
pScrn = xf86Screens[pScreen->myNum];
pImpact = IMPACTPTR(pScrn);
/* map the Impactregs until the server dies */
if ( !ImpactMapRegs(pScrn) )
return FALSE;
/* map the ShadowFB until the server dies */
if ( !ImpactMapShadowFB(pScrn) ) {
ImpactUnmapRegs(pScrn);
return FALSE;
}
/* Reset visual list. */
miClearVisualTypes();
if ( !miSetVisualTypes(
pScrn->depth,
pScrn->depth != 8
? TrueColorMask
: miGetDefaultVisualMask(pScrn->depth),
pScrn->rgbBits, pScrn->defaultVisual) )
goto out_freerec;
miSetPixmapDepths();
pImpact->Bpp = pScrn->bitsPerPixel >> 3;
/* Setup the stuff for the shadow framebuffer */
pImpact->ShadowPitch = (pScrn->virtualX * pImpact->Bpp + 3) & ~3L;
if ( !ImpactModeInit(pScrn,pScrn->currentMode) )
goto out_freerec;
ret = fbScreenInit(
pScreen, pImpact->ShadowPtr,
pScrn->virtualX, pScrn->virtualY,
pScrn->xDpi, pScrn->yDpi,
pScrn->displayWidth,
pScrn->bitsPerPixel);
if (!ret)
goto out_freerec;
/* we need rgb ordering if bitsPerPixel > 8 */
if (pScrn->bitsPerPixel > 8)
for (i = 0, visual = pScreen->visuals;
i < pScreen->numVisuals; i++, visual++)
if ((visual->class | DynamicClass) == DirectColor) {
visual->offsetRed = pScrn->offset.red;
visual->offsetGreen = pScrn->offset.green;
visual->offsetBlue = pScrn->offset.blue;
visual->redMask = pScrn->mask.red;
visual->greenMask = pScrn->mask.green;
visual->blueMask = pScrn->mask.blue;
}
/* must be after RGB ordering fixed */
fbPictureInit (pScreen, 0, 0);
miInitializeBackingStore(pScreen);
xf86SetBackingStore(pScreen);
xf86SetBlackWhitePixels(pScreen);
/* Initialize software cursor */
if ( !miDCInitialize(pScreen,xf86GetPointerScreenFuncs()) )
goto out_freerec;
/* Initialise default colourmap */
if ( !miCreateDefColormap(pScreen) )
goto out_freerec;
/* Install our LoadPalette funciton */
if ( !xf86HandleColormaps(pScreen, 256, 8, ImpactLoadPalette,
0, CMAP_RELOAD_ON_MODE_SWITCH) )
goto out_freerec;
/* Initialise shadow frame buffer */
ShadowFBInit(pScreen,
1 == pImpact->Bpp ? pImpact->RefreshArea8 : pImpact->RefreshArea32);
#ifdef XvExtension
{
XF86VideoAdaptorPtr *ptr;
int n;
n = xf86XVListGenericAdaptors(pScrn,&ptr);
if (n)
xf86XVScreenInit(pScreen, ptr, n);
}
#endif
pScreen->SaveScreen = ImpactSaveScreen;
/* Wrap the current CloseScreen function */
pImpact->CloseScreen = pScreen->CloseScreen;
pScreen->CloseScreen = ImpactCloseScreen;
if (1 == serverGeneration)
xf86ShowUnusedOptions(pScrn->scrnIndex, pScrn->options);
return TRUE;
out_freerec:
ImpactFreeRec(pScrn);
return FALSE;
}
/* called when switching away from a VT */
static Bool
ImpactEnterVT(int scrnIndex, int flags)
{
ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
return ImpactModeInit(pScrn, pScrn->currentMode);
}
/* called when switching to a VT */
static void
ImpactLeaveVT(int scrnIndex, int flags)
{
ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
ImpactRestore(pScrn, FALSE);
}
/* called at the end of each server generation */
static Bool
ImpactCloseScreen(int scrnIndex, ScreenPtr pScreen)
{
ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
ImpactPtr pImpact = IMPACTPTR(pScrn);
ImpactRestore(pScrn, TRUE);
/* unmap the Impact's registers from memory */
ImpactUnmapShadowFB(pScrn);
ImpactUnmapRegs(pScrn);
pScrn->vtSema = FALSE;
if (pScreen->CloseScreen == ImpactCloseScreen)
pScreen->CloseScreen = pImpact->CloseScreen;
return (*pScreen->CloseScreen)(scrnIndex, pScreen);
}
/* Blank or unblank the screen */
static Bool
ImpactSaveScreen(ScreenPtr pScreen, int mode)
{
ScrnInfoPtr pScrn;
ImpactPtr pImpact;
pScrn = xf86Screens[pScreen->myNum];
pImpact = IMPACTPTR(pScrn);
ImpactVc3BlankScreen(pScrn, !xf86IsUnblank(mode));
return TRUE;
}
static const OptionInfoRec *
ImpactAvailableOptions(int chipid, int busid)
{
return ImpactOptions;
}
/* This sets up the actual mode on the Impact */
static Bool
ImpactModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode)
{
int width, height;
width = mode->HDisplay;
height = mode->VDisplay;
if (width != IMPACT_FIXED_W_SCRN || height != IMPACT_FIXED_H_SCRN) {
xf86DrvMsg(
pScrn->scrnIndex, X_ERROR,
"Width = %d and height = %d is not supported by by this driver\n",
width, height);
return FALSE;
}
pScrn->vtSema = TRUE;
/* first backup the necessary registers... */
/*
ImpactBackupVc3(pScrn);
ImpactBackupRex(pScrn);
ImpactBackupPalette(pScrn);
ImpactBackupXmap(pScrn);
*/
/* ...then setup the hardware */
/*
ImpactVc3DisableCursor(pScrn);
ImpactXmapSet24bpp(pScrn);
*/
/* blank the framebuffer */
/* default drawmode */
return TRUE;
}
/*
* This will actually restore the saved state
* (either when switching back to a VT or when the server is going down)
* Closing is true if the X server is really going down
*/
static void
ImpactRestore(ScrnInfoPtr pScrn, Bool Closing)
{
/* Restore backed up registers */
/*
ImpactRestoreVc3(pScrn);
ImpactRestoreRex(pScrn);
ImpactRestorePalette(pScrn);
ImpactRestoreXmap(pScrn);
*/
}
/* Probe for the Impact card ;) */
static unsigned
ImpactHWProbe(struct probed_id probedIDs[], int lim)
{
FILE* fb;
int hasImpact = 0;
probedIDs[0].sr = probedIDs[0].id = 0;
if (IMPACT_MAX_BOARDS < lim)
lim = IMPACT_MAX_BOARDS;
if ( (fb = fopen("/proc/fb","r")) ) {
char line[80];
while (hasImpact <= lim && fgets(line,sizeof(line),fb)) {
char *s;
unsigned i = strtoul(line,&s,10);
if ( !strncmp(s," Impact",7) ) {
probedIDs[hasImpact].sr = ('S' == s[7]);
probedIDs[hasImpact].id = i;
hasImpact++;
}
}
fclose(fb);
}
return hasImpact;
}
/* Probe for Chipset revisions */
static Bool
ImpactProbeCardInfo(ScrnInfoPtr pScrn)
{
ImpactPtr pImpact = IMPACTPTR(pScrn);
pImpact->bitplanes = 24;
pImpact->board_rev = 0;
pImpact->cmap_rev = '0';
pImpact->rex_rev = '0';
pImpact->xmap_rev = '0';
return TRUE;
}
/*
* To leave "xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_video.c"
* untouched for now, we do our own mapping here.
* mapVidMem() (which is called from xf86MapVidMem(), to do the actual mapping)
* in lnx_video.c 1) has "/dev/mem" hardcoded and 2) unconditionally opens it
* without O_SYNC.
* But we *need* an uncached mapping for pImpactRegs.
* And using "/dev/fbN" at offset 0 automatically creates the appropriate
* mapping at the right hardware-address.
*/
/* map ImpactRegs */
static Bool
ImpactMapRegs(ScrnInfoPtr pScrn)
{
ImpactPtr pImpact = IMPACTPTR(pScrn);
if (pImpact->pImpactRegs)
return TRUE;
if (pImpact->devFD <= 0) {
char devfb[20];
sprintf( devfb, "/dev/fb%d", pImpact->busID );
pImpact->devFD = open(devfb,O_RDWR);
}
if (pImpact->devFD < 0)
ErrorF("ImpactMapRegs: failed to open /dev/fb%d (%s)\n",
pImpact->busID , strerror(errno));
else {
size_t size = pImpact->isSR ? 0x200000:sizeof(ImpactI2Regs);
pImpact->pImpactRegs =
mmap((void*)0, size, PROT_READ|PROT_WRITE,
MAP_SHARED, pImpact->devFD, 0);
if (MAP_FAILED == pImpact->pImpactRegs) {
ErrorF("ImpactMapRegs: Could not mmap card registers"
" (0x%08lx,0x%x) (%s)\n", 0, size, strerror(errno));
pImpact->pImpactRegs = 0;
}
}
return pImpact->pImpactRegs ? TRUE:FALSE;
}
/* map ImpactShadowFB */
static Bool
ImpactMapShadowFB(ScrnInfoPtr pScrn)
{
ImpactPtr pImpact = IMPACTPTR(pScrn);
if (pImpact->ShadowPtr)
return TRUE;
if (pImpact->devFD < 0)
ErrorF("ImpactMapShadowFB: failed to open fb-dev\n");
else {
pImpact->ShadowPtr =
mmap((void*)0, 0x800000, PROT_READ|PROT_WRITE,
MAP_SHARED, pImpact->devFD, IMPACT_FB_MMAP_OFF(3));
if (MAP_FAILED == pImpact->ShadowPtr) {
ErrorF("ImpactMapShadowFB: Could not mmap shadow buffer"
" (0x%08lx,0x800000) (%s)\n", IMPACT_FB_MMAP_OFF(3), strerror(errno));
pImpact->ShadowPtr = 0;
}
}
return pImpact->ShadowPtr ? TRUE:FALSE;
}
/* unmap ImpactRegs */
static void
ImpactUnmapRegs(ScrnInfoPtr pScrn)
{
ImpactPtr pImpact = IMPACTPTR(pScrn);
size_t size = pImpact->isSR ? 0x200000:sizeof(ImpactI2Regs);
if (pImpact->pImpactRegs)
munmap( pImpact->pImpactRegs, size );
pImpact->pImpactRegs = 0;
}
/* unmap ImpactShadowFB */
static void
ImpactUnmapShadowFB(ScrnInfoPtr pScrn)
{
ImpactPtr pImpact = IMPACTPTR(pScrn);
if (pImpact->ShadowPtr)
munmap( pImpact->ShadowPtr, 0x800000 );
pImpact->ShadowPtr = 0;
}
/* eof */

View File

@ -1,332 +0,0 @@
/*
* impact_regs.c 2005/07/15 23:36:16, Copyright (c) 2005 peter fuerst
*
* Based on:
* - linux/drivers/video/impact.c, 2005 pf.
* - linux/drivers/video/impactsr.c, (c) 2004 by Stanislaw Skowronek.
* - newport_regs.c
* # newport_regs.c,v 1.3 2000/11/29 20:58:10 agx Exp #
* # xc/programs/Xserver/hw/xfree86/drivers/newport/newport_regs.c,v
* 1.6 2001/12/21 15:37:23 tsi Exp #
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "impact.h"
/* FIFO status */
#define MSK_I2_CFIFO_CNT 0x7f
#define MSK_SR_CFIFO_CNT 0xff
#define IMPACTI2_CFIFO_MAX 64
#define IMPACTSR_CFIFO_MAX 128
#define IMPACT_BFIFO_MAX 16
/* Sometimes we just have to wait until we can do anything */
/*
* ImpactWaitCfifo
*/
unsigned
ImpactI2WaitCfifo(ImpactRegsPtr pImpactRegs, int nslots)
{
unsigned x;
while (((x = pImpactRegs->i2.fifostatus) & MSK_I2_CFIFO_CNT)
> IMPACTI2_CFIFO_MAX-nslots);
return x;
}
unsigned
ImpactSRWaitCfifo(ImpactRegsPtr pImpactRegs, int nslots)
{
unsigned x;
while (((x = pImpactRegs->sr.fifostatus) & MSK_SR_CFIFO_CNT)
> IMPACTSR_CFIFO_MAX-nslots);
return x;
}
/*
* ImpactWaitCfifoEmpty
*/
void
ImpactI2WaitCfifoEmpty(ImpactRegsPtr pImpactRegs)
{
while (pImpactRegs->i2.fifostatus & MSK_I2_CFIFO_CNT);
}
void
ImpactSRWaitCfifoEmpty(ImpactRegsPtr pImpactRegs)
{
while (pImpactRegs->sr.fifostatus & MSK_SR_CFIFO_CNT);
}
/*
* ImpactWaitDMAOver
*/
void
ImpactI2WaitDMAOver(ImpactRegsPtr pImpactRegs)
{
while (pImpactRegs->i2.dmabusy & 0x1F);
while (!(pImpactRegs->i2.status & 1));
while (!(pImpactRegs->i2.status & 2));
while (!(pImpactRegs->i2.rss.status & 0x100));
}
void
ImpactSRWaitDMAOver(ImpactRegsPtr pImpactRegs)
{
while (pImpactRegs->sr.dmabusy & 0x1F);
while (!(pImpactRegs->sr.status & 1));
while (!(pImpactRegs->sr.status & 2));
while (!(pImpactRegs->sr.rss.status & 0x100));
}
/*
* ImpactWaitDMAReady
*/
void
ImpactI2WaitDMAReady(ImpactRegsPtr pImpactRegs)
{
ImpactFifoCmd32(&pImpactRegs->i2.cfifo, 0x000e0100, 0);
while (pImpactRegs->i2.dmabusy & 0x1EFF);
while (!(pImpactRegs->i2.status & 2));
}
void
ImpactSRWaitDMAReady(ImpactRegsPtr pImpactRegs)
{
ImpactFifoCmd32(&pImpactRegs->sr.cfifo, 0x000e0100, 0);
while (pImpactRegs->sr.dmabusy & 0x1EFF);
while (!(pImpactRegs->sr.status & 2));
}
/*
* ImpactWaitBfifo
*/
static __inline__ unsigned
ImpactWaitBfifo(mgireg32_t *giostatus, int nslots)
{
unsigned x;
while (((x = *giostatus) & 0x1f) > IMPACT_BFIFO_MAX-nslots);
return x;
}
unsigned
ImpactI2WaitBfifo(ImpactRegsPtr pImpactRegs, int nslots)
{
return ImpactWaitBfifo(&pImpactRegs->i2.giostatus, nslots);
}
unsigned
ImpactSRWaitBfifo(ImpactRegsPtr pImpactRegs, int nslots)
{
return ImpactWaitBfifo(&pImpactRegs->sr.giostatus, nslots);
}
/*
* ImpactWaitBfifoEmpty
*/
static __inline__ void
ImpactWaitBfifoEmpty(mgireg32_t *giostatus)
{
while (*giostatus & 0x1f);
}
void
ImpactI2WaitBfifoEmpty(ImpactRegsPtr pImpactRegs)
{
ImpactWaitBfifoEmpty(&pImpactRegs->i2.giostatus);
}
void
ImpactSRWaitBfifoEmpty(ImpactRegsPtr pImpactRegs)
{
ImpactWaitBfifoEmpty(&pImpactRegs->sr.giostatus);
}
/*
* ImpactVc3[GS]et
*/
static __inline__ void
ImpactVc3Set(Impact_vc3regs_t* vc3, CARD8 idx, unsigned short val)
{
vc3->indexdata = (idx << 24) | (val << 8);
}
void
ImpactI2Vc3Set(ImpactRegsPtr pImpactRegs, CARD8 idx, unsigned short val)
{
ImpactVc3Set(&pImpactRegs->i2.vc3, idx, val);
}
void
ImpactSRVc3Set(ImpactRegsPtr pImpactRegs, CARD8 idx, unsigned short val)
{
ImpactVc3Set(&pImpactRegs->sr.vc3, idx, val);
}
static __inline__ unsigned short
ImpactVc3Get(Impact_vc3regs_t* vc3, CARD8 idx)
{
vc3->index = idx;
return vc3->data;
}
unsigned short
ImpactI2Vc3Get(ImpactRegsPtr pImpactRegs, CARD8 idx)
{
return ImpactVc3Get(&pImpactRegs->i2.vc3, idx);
}
unsigned short
ImpactSRVc3Get(ImpactRegsPtr pImpactRegs, CARD8 idx)
{
return ImpactVc3Get(&pImpactRegs->sr.vc3, idx);
}
/*
* ImpactXmap[GS]etModeRegister
*/
static __inline__ void
ImpactXmapSetModeRegister(Impact_xmapregs_t *xmap, CARD8 address, CARD32 mode)
{
xmap->index = address << 2;
xmap->main_mode = mode;
}
void
ImpactI2XmapSetModeRegister(ImpactRegsPtr pImpactRegs, CARD8 address, CARD32 mode)
{
ImpactXmapSetModeRegister(&pImpactRegs->i2.xmap, address, mode);
}
void
ImpactSRXmapSetModeRegister(ImpactRegsPtr pImpactRegs, CARD8 address, CARD32 mode)
{
ImpactXmapSetModeRegister(&pImpactRegs->sr.xmap, address, mode);
}
static __inline__ CARD32
ImpactXmapGetModeRegister(Impact_xmapregs_t *xmap, CARD8 address)
{
xmap->index = address << 2;
return xmap->main_mode;
}
CARD32
ImpactI2XmapGetModeRegister(ImpactRegsPtr pImpactRegs, CARD8 address)
{
return ImpactXmapGetModeRegister(&pImpactRegs->i2.xmap, address);
}
CARD32
ImpactSRXmapGetModeRegister(ImpactRegsPtr pImpactRegs, CARD8 address)
{
return ImpactXmapGetModeRegister(&pImpactRegs->sr.xmap, address);
}
/*
* ImpactBackup.../ImpactRestore...
*/
void
ImpactBackupVc3( ScrnInfoPtr pScrn )
{
ImpactPtr pImpact = IMPACTPTR(pScrn);
ImpactRegsPtr pImpactRegs = pImpact->pImpactRegs;
CARD8 i = sizeof(pImpact->txt_vc3)/sizeof(*pImpact->txt_vc3);
while (i--)
pImpact->txt_vc3[i] = (*pImpact->Vc3Get)( pImpactRegs, i );
}
void
ImpactRestoreVc3( ScrnInfoPtr pScrn )
{
ImpactPtr pImpact = IMPACTPTR(pScrn);
ImpactRegsPtr pImpactRegs = pImpact->pImpactRegs;
CARD8 i = sizeof(pImpact->txt_vc3)/sizeof(*pImpact->txt_vc3);
while (i--)
(*pImpact->Vc3Set)( pImpactRegs, i, pImpact->txt_vc3[i] );
}
void
ImpactVc3DisableCursor( ScrnInfoPtr pScrn )
{
ImpactPtr pImpact = IMPACTPTR(pScrn);
ImpactRegsPtr pImpactRegs = pImpact->pImpactRegs;
unsigned short val = (*pImpact->Vc3Get)( pImpactRegs, VC3_IREG_CURSOR );
(*pImpact->Vc3Set)(pImpactRegs, VC3_IREG_CURSOR, val & ~VC3_CTRL_ECURS);
}
void
ImpactVc3BlankScreen( ScrnInfoPtr pScrn, int blank )
{/*
ImpactPtr pImpact = IMPACTPTR(pScrn);
ImpactRegsPtr pImpactRegs = pImpact->pImpactRegs;
unsigned short treg = (*pImpact->Vc3Get)( pImpactRegs, VC3_IREG_CONTROL );
if (blank)
treg &= ~VC3_CTRL_EDISP;
else
treg |= VC3_CTRL_EDISP;
(*pImpact->Vc3Set)( pImpactRegs, VC3_IREG_CONTROL, treg );
*/}
void
ImpactBackupRex( ScrnInfoPtr pScrn )
{
}
void
ImpactRestoreRex( ScrnInfoPtr pScrn )
{
}
void ImpactBackupXmap( ScrnInfoPtr pScrn )
{
ImpactPtr pImpact = IMPACTPTR(pScrn);
ImpactRegsPtr pImpactRegs = pImpact->pImpactRegs;
Impact_xmapregs_t *xmap =
(&ImpactSRXmapGetModeRegister != pImpact->XmapGetModeRegister)
? &pImpactRegs->i2.xmap
: &pImpactRegs->sr.xmap;
pImpact->txt_xmap.pp1select = xmap->pp1select;
pImpact->txt_xmap.main_mode =
(*pImpact->XmapGetModeRegister)( pImpactRegs, 0 );
}
void ImpactRestoreXmap( ScrnInfoPtr pScrn )
{
ImpactPtr pImpact = IMPACTPTR(pScrn);
ImpactRegsPtr pImpactRegs = pImpact->pImpactRegs;
Impact_xmapregs_t *xmap =
(&ImpactSRXmapGetModeRegister != pImpact->XmapGetModeRegister)
? &pImpactRegs->i2.xmap
: &pImpactRegs->sr.xmap;
xmap->pp1select = pImpact->txt_xmap.pp1select;
(*pImpact->XmapSetModeRegister)(
pImpactRegs, 0, pImpact->txt_xmap.main_mode );
}
/* set XMAP into 24-bpp mode */
void
ImpactXmapSet24bpp( ScrnInfoPtr pScrn )
{
ImpactPtr pImpact = IMPACTPTR(pScrn);
ImpactRegsPtr pImpactRegs = pImpact->pImpactRegs;
Impact_xmapregs_t *xmap =
(&ImpactSRXmapGetModeRegister != pImpact->XmapGetModeRegister)
? &pImpactRegs->i2.xmap
: &pImpactRegs->sr.xmap;
xmap->pp1select = 1;
(*pImpact->XmapSetModeRegister)( pImpactRegs, 0, 0x07a4 );
}
/* eof */

View File

@ -1,253 +0,0 @@
/*
* impact_regs.h 2005/07/12 23:24:15, Copyright (c) 2005 peter fuerst
*
* Register Layouts of the SGI Impact/ImpactSR (MardiGras) chips.
*
* Based on:
* - linux/include/video/impact.h, 2005 pf.
* - linux/include/video/impactsr.h, (c) 2004 by Stanislaw Skowronek.
* - newport_regs.h
* # xc/programs/Xserver/hw/xfree86/drivers/newport/newport_regs.h,v
* 1.2 2001/11/23 19:50:45 dawes Exp #
* # newport_regs.h,v 1.5 2000/11/18 23:23:14 agx Exp #
*/
#ifndef __IMPACT_REGS_H__
#define __IMPACT_REGS_H__
typedef volatile unsigned long long int mgireg64_t;
typedef volatile unsigned int mgireg32_t;
typedef volatile unsigned short int mgireg16_t;
typedef volatile unsigned char mgireg8_t;
typedef union mgicfifo {
mgireg64_t x;
mgireg32_t w;
} mgicfifo_t;
typedef
struct Impact_xmapregs {
mgireg64_t a___________; /* 0x0000 */
mgireg8_t pp1select; /* 0x0008 */
mgireg8_t b___________[0x7f];
mgireg8_t index; /* 0x0088 */
mgireg8_t c___________[0x77];
mgireg32_t config; /* 0x0100 */
mgireg32_t d___________;
mgireg8_t configb; /* 0x0108 */
mgireg8_t f___________[0x77];
mgireg32_t buf_select; /* 0x0180 */
mgireg8_t g___________[0x7c];
mgireg32_t main_mode; /* 0x0200 */
mgireg8_t h___________[0x7c];
mgireg32_t overlay_mode; /* 0x0280 */
mgireg8_t i___________[0x7c];
mgireg32_t dib; /* 0x0300 */
mgireg8_t j___________[0x3c];
mgireg32_t dib_dw; /* 0x0340 */
mgireg8_t k___________[0x3c];
mgireg32_t re_rac; /* 0x0380 */
} Impact_xmapregs_t;
typedef
struct Impact_vc3regs {
mgireg64_t a________; /* 0x0000 */
mgireg8_t index; /* 0x0008 */
mgireg8_t b________[0x2f];
mgireg32_t indexdata; /* 0x038 */
mgireg8_t c________[0x74];
mgireg16_t data; /* 0x00b0 */
mgireg16_t d________[0x6f];
mgireg16_t ram; /* 0x0190 */
} Impact_vc3regs_t;
typedef
struct Impact_rexregs {
mgireg8_t unused[0x78]; /* 0x0000 */
mgireg32_t status; /* 0x0078 */
} Impact_rexregs_t;
typedef
struct ImpactI2_regs {
/* Indigo2 Impact */
mgireg8_t a__________[0x50020]; /* 0x00000 */
mgireg32_t cfifo_hw; /* 0x50020 */
mgireg32_t cfifo_lw; /* 0x50024 */
mgireg32_t cfifo_delay; /* 0x50028 */
mgireg32_t dfifo_hw; /* 0x5002c */
mgireg32_t dfifo_lw; /* 0x50030 */
mgireg32_t dfifo_delay; /* 0x50034 */
mgireg8_t b__________[0x48];
mgicfifo_t cfifop; /* 0x50080 */
mgireg8_t c__________[0x11b78];
Impact_xmapregs_t xmap; /* 0x61c00 */
mgireg8_t d__________[0x62000-sizeof(Impact_xmapregs_t)-0x61c00];
Impact_vc3regs_t vc3; /* 0x62000 */
mgireg8_t e__________[0x70000-sizeof(Impact_vc3regs_t)-0x62000];
mgireg32_t status; /* 0x70000 */
mgireg32_t fifostatus; /* 0x70004 */
mgireg8_t f__________[0x78];
mgicfifo_t cfifo; /* 0x70080 */
mgireg8_t g__________[0x78];
mgireg32_t giostatus; /* 0x70100 */
mgireg32_t dmabusy; /* 0x70104 */
mgireg8_t h__________[0xc3f8];
Impact_rexregs_t rss; /* 0x7c500 */
} ImpactI2Regs, *ImpactI2RegsPtr;
typedef
struct ImpactSR_regs {
/* Octane ImpactSR */
mgireg8_t a__________[0x20000]; /* 0x00000 */
mgireg32_t status; /* 0x20000 */
mgireg8_t b__________[4];
mgireg32_t fifostatus; /* 0x20008 */
mgireg8_t c__________[0xf4];
mgireg32_t giostatus; /* 0x20100 */
mgireg8_t d__________[0xfc];
mgireg32_t dmabusy; /* 0x20200 */
mgireg8_t e__________[0x1fc];
mgicfifo_t cfifo; /* 0x20400 */
mgireg8_t f__________[0xc0f8];
Impact_rexregs_t rss; /* 0x2c500 */
mgireg8_t g__________[0x40000-sizeof(Impact_rexregs_t)-0x2c500];
mgireg32_t cfifo_hw; /* 0x40000 */
mgireg32_t h__________;
mgireg32_t cfifo_lw; /* 0x40008 */
mgireg32_t i__________;
mgireg32_t cfifo_delay; /* 0x40010 */
mgireg32_t j__________[3];
mgireg32_t dfifo_hw; /* 0x40020 */
mgireg32_t k__________;
mgireg32_t dfifo_lw; /* 0x40028 */
mgireg32_t l__________;
mgireg32_t dfifo_delay; /* 0x40030 */
mgireg8_t m__________[0x31bcc];
Impact_xmapregs_t xmap; /* 0x71c00 */
mgireg8_t n__________[0x72000-sizeof(Impact_xmapregs_t)-0x71c00];
Impact_vc3regs_t vc3; /* 0x72000 */
mgireg8_t o__________[0x130400-sizeof(Impact_vc3regs_t)-0x72000];
mgicfifo_t cfifop; /* 0x130400 */
} ImpactSRRegs, *ImpactSRRegsPtr;
typedef union {
struct ImpactI2_regs i2;
struct ImpactSR_regs sr;
} ImpactRegs, *ImpactRegsPtr;
static __inline__ void
ImpactFifoCmd64( mgicfifo_t *fifo, unsigned cmd, unsigned reg, unsigned val )
{
#if (_MIPS_SZLONG == 64) /* see Xmd.h */
fifo->x = ((unsigned long)cmd | reg<<8) << 32 | val;
#else
fifo->w = cmd | reg<<8;
fifo->w = val;
#endif
}
static __inline__ void
ImpactFifoCmd32( mgicfifo_t *fifo, unsigned cmd, unsigned reg )
{
(&fifo->w)[1] = cmd | reg<<8;
}
#define ImpactCmdWriteRss( fifo, reg, val )\
ImpactFifoCmd64( fifo, 0x00180004, reg, val )
#define ImpactCmdExecRss( fifo, reg, val )\
ImpactFifoCmd64( fifo, 0x001c0004, reg, val )
#define impact_cmd_gline_xstartf(f,v) ImpactCmdWriteRss(f,0x000c,v)
#define impact_cmd_ir_alias(f,v) ImpactCmdExecRss( f,0x0045,v)
#define impact_cmd_blockxystarti(f,x,y) ImpactCmdWriteRss(f,0x0046,(x)<<16|(y))
#define impact_cmd_blockxyendi(f,x,y) ImpactCmdWriteRss(f,0x0047,(x)<<16|(y))
#define impact_cmd_packedcolor(f,v) ImpactCmdWriteRss(f,0x005b,v)
#define impact_cmd_red(f,v) ImpactCmdWriteRss(f,0x005c,v)
#define impact_cmd_alpha(f,v) ImpactCmdWriteRss(f,0x005f,v)
#define impact_cmd_char(f,v) ImpactCmdExecRss( f,0x0070,v)
#define impact_cmd_char_h(f,v) ImpactCmdWriteRss(f,0x0070,v)
#define impact_cmd_char_l(f,v) ImpactCmdExecRss( f,0x0071,v)
#define impact_cmd_xfrcontrol(f,v) ImpactCmdWriteRss(f,0x0102,v)
#define impact_cmd_fillmode(f,v) ImpactCmdWriteRss(f,0x0110,v)
#define impact_cmd_config(f,v) ImpactCmdWriteRss(f,0x0112,v)
#define impact_cmd_xywin(f,x,y) ImpactCmdWriteRss(f,0x0115,(y)<<16|(x))
#define impact_cmd_xfrsize(f,x,y) ImpactCmdWriteRss(f,0x0153,(y)<<16|(x))
#define impact_cmd_xfrmasklo(f,v) ImpactCmdWriteRss(f,0x0156,v)
#define impact_cmd_xfrmaskhi(f,v) ImpactCmdWriteRss(f,0x0157,v)
#define impact_cmd_xfrcounters(f,x,y) ImpactCmdWriteRss(f,0x0158,(y)<<16|(x))
#define impact_cmd_xfrmode(f,v) ImpactCmdWriteRss(f,0x0159,v)
#define impact_cmd_re_togglecntx(f,v) ImpactCmdWriteRss(f,0x015f,v)
#define impact_cmd_pixcmd(f,v) ImpactCmdWriteRss(f,0x0160,v)
#define impact_cmd_pp1fillmode(f,m,o) ImpactCmdWriteRss(f,0x0161,(m)|(o)<<26)
#define impact_cmd_colormaskmsbs(f,v) ImpactCmdWriteRss(f,0x0162,v)
#define impact_cmd_colormasklsbsa(f,v) ImpactCmdWriteRss(f,0x0163,v)
#define impact_cmd_colormasklsbsb(f,v) ImpactCmdWriteRss(f,0x0164,v)
#define impact_cmd_drbpointers(f,v) ImpactCmdWriteRss(f,0x016d,v)
#define impact_cmd_hq_pixelformat(f,v) ImpactFifoCmd64(f,0x000c0004,0,v)
#define impact_cmd_hq_scanwidth(f,v) ImpactFifoCmd64(f,0x000a0204,0,v)
#define impact_cmd_hq_dmatype(f,v) ImpactFifoCmd64(f,0x000a0604,0,v)
#define impact_cmd_hq_pg_list0(f,v) ImpactFifoCmd64(f,0x00080004,0,v)
#define impact_cmd_hq_pg_width(f,v) ImpactFifoCmd64(f,0x00080404,0,v)
#define impact_cmd_hq_pg_offset(f,v) ImpactFifoCmd64(f,0x00080504,0,v)
#define impact_cmd_hq_pg_startaddr(f,v) ImpactFifoCmd64(f,0x00080604,0,v)
#define impact_cmd_hq_pg_linecnt(f,v) ImpactFifoCmd64(f,0x00080704,0,v)
#define impact_cmd_hq_pg_widtha(f,v) ImpactFifoCmd64(f,0x00080804,0,v)
#if 0
#define impact_cmd_hq_dmactrl_1(f) ImpactFifoCmd32(f,0x00080b04,0)
#define impact_cmd_hq_dmactrl_2(f) ImpactFifoCmd64(f,0x000000b7,0,0x000e0400)
#else
#define impact_cmd_hq_dmactrl_a(f,p) ImpactFifoCmd64(f,0x00080b04,0,((p)<<1)|0x000000b1)
#define impact_cmd_hq_dmactrl_b(f) ImpactFifoCmd32(f,0x000e0400,0)
#endif
/* Now the Indexed registers of the VC2. */
#define VC2_IREG_CONFIG 0x1f /* this is wrong (0x20) in newport_regs.h */
#define VC3_IREG_CURSOR 0x1d
#define VC3_IREG_CONTROL 0x1e
#define VC3_IREG_CONFIG VC2_IREG_CONFIG
/* VC2 Control register bits */
#define VC2_CTRL_EVIRQ 0x0001 /* VINTR enable */
#define VC2_CTRL_EDISP 0x0002 /* Blackout */
#define VC2_CTRL_EVIDEO 0x0004 /* Video Timing Enable */
#define VC2_CTRL_EDIDS 0x0008 /* DID Function Enable */
#define VC3_CTRL_EVIRQ VC2_CTRL_EVIRQ
#define VC3_CTRL_EDISP VC2_CTRL_EDISP
#define VC3_CTRL_EVIDEO VC2_CTRL_EVIDEO
#define VC3_CTRL_EDIDS VC2_CTRL_EDIDS
#define VC3_CTRL_ECURS 0x0001 /* Cursor Enable */
/* Logic operations for the PP1 (SI=source invert, DI=dest invert, RI=result invert) */
#define IMPACT_LO_CLEAR 0
#define IMPACT_LO_AND 1
#define IMPACT_LO_DIAND 2
#define IMPACT_LO_COPY 3
#define IMPACT_LO_SIAND 4
#define IMPACT_LO_NOP 5
#define IMPACT_LO_XOR 6
#define IMPACT_LO_OR 7
#define IMPACT_LO_RIOR 8
#define IMPACT_LO_RIXOR 9
#define IMPACT_LO_RINOP 10
#define IMPACT_LO_DIOR 11
#define IMPACT_LO_RICOPY 12
#define IMPACT_LO_SIOR 13
#define IMPACT_LO_RIAND 14
#define IMPACT_LO_SET 15
/*
* Scanning physaddr range 1f000000 to 1f3fffff on Indigo2 shows this
* periodic pattern (but couldn't test more than a single board yet).
*/
#define IMPACTI2_BASE_ADDR0 0x1f000000
#define IMPACTI2_BASE_OFFSET 0x00100000
#define IMPACTI2_MAX_BOARDS 3
/* Don't know, how it looks on Octane... */
#define IMPACTSR_BASE_ADDR0 0x1c000000
#define IMPACTSR_BASE_OFFSET 0
#define IMPACTSR_MAX_BOARDS 1
#endif /* __IMPACT_REGS_H__ */

View File

@ -1,354 +0,0 @@
/*
* impact_shadow.c 2005/07/12 23:24:15, Copyright (c) 2005 peter fuerst
*
* Based on:
* - linux/drivers/video/impact.c, 2005 pf.
* - linux/drivers/video/impactsr.c, (c) 2004 by Stanislaw Skowronek.
* - newport_shadow.c
* # newport_shadow.c,v 1.3 2000/11/29 20:58:10 agx Exp #
* # xc/programs/Xserver/hw/xfree86/drivers/newport/newport_shadow.c,v
* 1.2 2001/11/23 19:50:45 dawes Exp #
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <asm/cachectl.h>
#include <sys/cachectl.h>
#include <sys/ioctl.h>
#include "impact.h"
/*
* 4th parameter to be passed to xf86SetDepthBpp()
*/
int ImpactDepth24Flags(void)
{
return Support32bppFb;
}
/*
* Common sanity check and adjustment for all ImpactRefreshArea...
*/
static __inline__ int
ImpactAdjRefreshBox(const BoxPtr obox, BoxPtr nbox)
{
/*
* NB: Box defines [x1,x2[ x [x2,y2[, not [x1,x2] x [x2,y2] !
*/
*nbox = *obox;
if (nbox->x1 < 0) nbox->x1 = 0;
if (nbox->y1 < 0) nbox->y1 = 0;
if (IMPACT_FIXED_W_SCRN < nbox->x2) nbox->x2 = IMPACT_FIXED_W_SCRN;
if (IMPACT_FIXED_H_SCRN < nbox->y2) nbox->y2 = IMPACT_FIXED_H_SCRN;
/*
* We may need to do some adjustment, since
* 1) the actual number of pixels *must* match the settings
* in "xystarti", "xyendi", "xfrsize", "xfrcounters",
* 2) we draw pairs of pixels.
* Otherwise... (try it :))
*/
nbox->x1 &= ~1;
nbox->x2 = ++nbox->x2 & ~1;
return (nbox->x2 <= nbox->x1 || nbox->y2 <= nbox->y1);
}
/*
* Common per-box-prologue for PIO-version of ImpactRefreshArea*
*/
static __inline__ int
ImpactPreRefreshBoxPIO(mgicfifo_t *cfifo, const BoxPtr obox, BoxPtr nbox)
{
int h, w, i;
if (ImpactAdjRefreshBox(obox, nbox))
return 0;
w = nbox->x2 - nbox->x1;
h = nbox->y2 - nbox->y1;
/* setup PIO to RE */
impact_cmd_pp1fillmode(cfifo, 0x6300, IMPACT_LO_COPY);
impact_cmd_blockxystarti(cfifo, nbox->x1, nbox->y1);
impact_cmd_blockxyendi(cfifo, nbox->x2-1, nbox->y2-1);
impact_cmd_fillmode(cfifo, 0x00c00000);
impact_cmd_xfrmode(cfifo, 0x00080);
impact_cmd_xfrsize(cfifo, w, h);
impact_cmd_xfrcounters(cfifo, w, h);
impact_cmd_gline_xstartf(cfifo, 1);
impact_cmd_ir_alias(cfifo, 0x18);
/* another workaround.. 33 writes to alpha... hmm... */
for (i = 0; i < 33; i++)
impact_cmd_alpha(cfifo, 0);
impact_cmd_xfrcontrol(cfifo, 2);
return 1;
}
/*
* Common per-box-epilogue for PIO-version of ImpactRefreshArea*
*/
static __inline__ void
ImpactPostRefreshBoxPIO(mgicfifo_t *cfifo)
{
impact_cmd_gline_xstartf(cfifo, 0);
impact_cmd_re_togglecntx(cfifo, 0);
impact_cmd_xfrcounters(cfifo, 0, 0);
}
/*
* 8-bpp blits are done as PIO draw operation; the pixels are unpacked
* into 32-bpp values from the current palette in software.
*/
static void
ImpactRefreshArea8(ImpactPtr pImpact, mgicfifo_t *cfifo, int num, BoxPtr pbox)
{
unsigned pal[256];
int i;
for (i = 0; i < sizeof(pal)/sizeof(*pal); i++)
pal[i] = ImpactGetPalReg(pImpact, i);
for (; num--; pbox++) {
BoxRec sanebox;
unsigned char *base;
int dy;
TRACEV("ImpactRefreshArea8: %d [%d..%d[x[%d..%d[\n",
num, pbox->x1,pbox->x2, pbox->y1,pbox->y2 );
(*pImpact->WaitCfifoEmpty)(pImpact->pImpactRegs);
if (ImpactPreRefreshBoxPIO(cfifo,pbox,&sanebox) <= 0)
continue;
base = (unsigned char*)pImpact->ShadowPtr
+ (dy = sanebox.y1) * pImpact->ShadowPitch + sanebox.x1;
for ( ; dy < sanebox.y2; dy++) {
unsigned char *src = base;
int dx = sanebox.x1;
while (dx < sanebox.x2) {
/* pairs of pixels are sent in two writes to the RE */
impact_cmd_char_h(cfifo, pal[*src++]);
impact_cmd_char_l(cfifo, pal[*src++]);
dx += 2;
}
base += pImpact->ShadowPitch;
}
ImpactPostRefreshBoxPIO(cfifo);
}
TRACE_EXIT("ImpactRefreshArea8");
}
void
ImpactI2RefreshArea8(ScrnInfoPtr pScrn, int num, BoxPtr pbox)
{
if (num > 0)
{ ImpactPtr pImpact = IMPACTPTR(pScrn);
ImpactRegsPtr pImpactRegs = pImpact->pImpactRegs;
ImpactRefreshArea8(pImpact, &pImpactRegs->i2.cfifo, num, pbox);
}
}
void
ImpactSRRefreshArea8(ScrnInfoPtr pScrn, int num, BoxPtr pbox)
{
if (num > 0)
{ ImpactPtr pImpact = IMPACTPTR(pScrn);
ImpactRegsPtr pImpactRegs = pImpact->pImpactRegs;
ImpactRefreshArea8(pImpact, &pImpactRegs->sr.cfifo, num, pbox);
}
}
/*
* 32-bit blits are done as DMA operations, which is FAST on SGI machines
*/
static void
ImpactCflushBoxPixlines(int fd, char *base, BoxPtr box, unsigned bpitch)
{
int w = (box->x2 - box->x1) << 2;
int h = box->y2 - box->y1;
int i;
base += bpitch*box->y1 + 4*box->x1;
/* One syscall for each pixel-line. */
for (i = 0; i < h; i++, base += bpitch)
cacheflush(base, w, DCACHE);
}
static void
ImpactCflushBoxEnclosure(int fd, char *base, BoxPtr box, unsigned bpitch)
{
int w = (box->x2 - box->x1) << 2;
int h = box->y2 - box->y1;
base += bpitch*box->y1 + 4*box->x1;
/* Whole enclosing mem, although may be mostly unconcerned. */
cacheflush(base, (h-1)*bpitch + w, DCACHE);
}
static __inline__ int
ImpactRefreshBoxDMA(int isSR, mgicfifo_t *cfifo, BoxPtr box, unsigned bpitch)
{
int w = box->x2 - box->x1;
int h = box->y2 - box->y1;
/* setup DMA to RE */
impact_cmd_pp1fillmode(cfifo, isSR ? 0x6300:0x6200, IMPACT_LO_COPY);
impact_cmd_colormasklsbsa(cfifo, 0xFFFFFFFF);
impact_cmd_colormasklsbsb(cfifo, 0xFFFFFFFF);
impact_cmd_colormaskmsbs(cfifo, 0xFFFF);
impact_cmd_xfrmasklo(cfifo, 0xFFFFFFFF);
impact_cmd_xfrmaskhi(cfifo, 0xFFFFFFFF);
impact_cmd_packedcolor(cfifo, 0);
impact_cmd_red(cfifo, 0);
impact_cmd_drbpointers(cfifo, 0xc8240);
impact_cmd_blockxystarti(cfifo, box->x1, box->y1);
impact_cmd_blockxyendi(cfifo, box->x2-1, box->y2-1);
impact_cmd_fillmode(cfifo, 0x01400000);
impact_cmd_xfrmode(cfifo, 0x00080);
impact_cmd_hq_pixelformat(cfifo, 0x600);
impact_cmd_hq_scanwidth(cfifo, w<<2);
impact_cmd_hq_dmatype(cfifo, 0x0c);
impact_cmd_pixcmd(cfifo, 3);
impact_cmd_xfrsize(cfifo, w, h);
impact_cmd_xfrcounters(cfifo, w, h);
impact_cmd_gline_xstartf(cfifo, 1);
impact_cmd_ir_alias(cfifo, 0x18);
if (isSR) {
int i;
for (i = 0; i < 33; i++)
impact_cmd_alpha(cfifo, 0);
}
impact_cmd_xfrcontrol(cfifo, 1);
impact_cmd_hq_pg_list0(cfifo, 0x80000000);
impact_cmd_hq_pg_width(cfifo, bpitch);
impact_cmd_hq_pg_offset(cfifo, 0);
impact_cmd_hq_pg_startaddr(cfifo, bpitch*box->y1+(box->x1<<2));
impact_cmd_hq_pg_linecnt(cfifo, h);
impact_cmd_hq_pg_widtha(cfifo, w<<2);
impact_cmd_hq_dmactrl_a(cfifo,3);
impact_cmd_hq_dmactrl_b(cfifo);
return 1;
}
static __inline__ void
ImpactPostRefreshBoxDMA(mgicfifo_t *cfifo)
{
impact_cmd_gline_xstartf(cfifo, 0);
impact_cmd_re_togglecntx(cfifo, 0);
impact_cmd_xfrcounters(cfifo, 0, 0);
impact_cmd_pixcmd(cfifo, 0);
impact_cmd_hq_pixelformat(cfifo, 0xe00);
}
static void
ImpactRefreshArea32DMA(ImpactPtr pImpact, int num, BoxPtr pbox)
{
ImpactRegsPtr pImpactRegs = pImpact->pImpactRegs;
mgicfifo_t *cfifo =
pImpact->isSR ? &pImpactRegs->sr.cfifo:&pImpactRegs->i2.cfifo;
unsigned bpitch = pImpact->ShadowPitch;
for (; num-- > 0; pbox++) {
BoxRec sanebox;
TRACEV("ImpactRefreshArea32: %d [%d..%d]x[%d..%d]\n",
num, pbox->x1,pbox->x2, pbox->y1,pbox->y2);
if (ImpactAdjRefreshBox(pbox, &sanebox))
continue;
if (pImpact->FlushBoxCache)
(*pImpact->FlushBoxCache)(pImpact->devFD, (char*)pImpact->ShadowPtr,
&sanebox, bpitch);
(*pImpact->WaitDMAOver)(pImpactRegs);
ImpactRefreshBoxDMA(pImpact->isSR, cfifo, &sanebox, bpitch);
(*pImpact->WaitDMAOver)(pImpactRegs);
ImpactPostRefreshBoxDMA(cfifo);
}
TRACE_EXIT("ImpactRefreshArea32");
}
/*
* 32-bpp blits, done as PIO draw operation. On Indigo2 faster than DMA
* for very small boxes or boxes, no wider than about a dozen pixels.
*/
static void
ImpactRefreshArea32PIO(ImpactPtr pImpact, int num, BoxPtr pbox)
{
ImpactRegsPtr pImpactRegs = pImpact->pImpactRegs;
mgicfifo_t *cfifo =
pImpact->isSR ? &pImpactRegs->sr.cfifo:&pImpactRegs->i2.cfifo;
unsigned bpitch = pImpact->ShadowPitch;
for (; num--; pbox++) {
BoxRec sanebox;
unsigned char* base;
int dy;
TRACEV("ImpactRefreshArea32 PIO: %d [%d..%d[x[%d..%d[\n",
num, pbox->x1,pbox->x2, pbox->y1,pbox->y2 );
(*pImpact->WaitCfifoEmpty)(pImpactRegs);
if (ImpactPreRefreshBoxPIO(cfifo,pbox,&sanebox) <= 0)
continue;
base = (unsigned char*)pImpact->ShadowPtr
+ (dy = sanebox.y1) * bpitch + sanebox.x1 * 4;
for ( ; dy < sanebox.y2; dy++) {
unsigned *src = (unsigned*)base;
int dx = sanebox.x1;
while (dx < sanebox.x2) {
/* pairs of pixels are sent in two writes to the RE */
impact_cmd_char_h(cfifo, *src++);
impact_cmd_char_l(cfifo, *src++);
dx += 2;
}
base += bpitch;
}
ImpactPostRefreshBoxPIO(cfifo);
}
/* TRACE_EXIT("ImpactRefreshArea32"); */
}
void
ImpactI2RefreshArea32(ScrnInfoPtr pScrn, int num, BoxPtr pbox)
{
ImpactPtr pImpact = IMPACTPTR(pScrn);
for (; num--; pbox++) {
int w = pbox->x2 - pbox->x1;
int h = pbox->y2 - pbox->y1;
if (w < 16 || w < 24 && h < 16 || w < 40 && h < 4)
ImpactRefreshArea32PIO(pImpact, 1, pbox);
else {
if (h < 580)
pImpact->FlushBoxCache = ImpactCflushBoxPixlines;
else
pImpact->FlushBoxCache = ImpactCflushBoxEnclosure;
ImpactRefreshArea32DMA(pImpact, 1, pbox);
}
}
}
void
ImpactSRRefreshArea32(ScrnInfoPtr pScrn, int num, BoxPtr pbox)
{
ImpactRefreshArea32DMA(IMPACTPTR(pScrn), num, pbox);
}
/* eof */