diff --git a/driver/xf86-video-openchrome/Makefile.in b/driver/xf86-video-openchrome/Makefile.in index 8640800fc..0c909103a 100644 --- a/driver/xf86-video-openchrome/Makefile.in +++ b/driver/xf86-video-openchrome/Makefile.in @@ -73,7 +73,7 @@ subdir = . DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(top_srcdir)/configure COPYING ChangeLog NEWS config.guess \ - config.sub install-sh ltmain.sh missing + config.sub depcomp install-sh ltmain.sh missing ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac diff --git a/driver/xf86-video-openchrome/aclocal.m4 b/driver/xf86-video-openchrome/aclocal.m4 index 11447c29f..90a866460 100644 --- a/driver/xf86-video-openchrome/aclocal.m4 +++ b/driver/xf86-video-openchrome/aclocal.m4 @@ -8606,32 +8606,63 @@ m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) -# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- -# serial 1 (pkg-config-0.24) -# -# Copyright © 2004 Scott James Remnant . -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. +dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +dnl serial 11 (pkg-config-0.29.1) +dnl +dnl Copyright © 2004 Scott James Remnant . +dnl Copyright © 2012-2015 Dan Nicholson +dnl +dnl This program is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2 of the License, or +dnl (at your option) any later version. +dnl +dnl This program is distributed in the hope that it will be useful, but +dnl WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +dnl 02111-1307, USA. +dnl +dnl As a special exception to the GNU General Public License, if you +dnl distribute this file as part of a program that contains a +dnl configuration script generated by Autoconf, you may include it under +dnl the same distribution terms that you use for the rest of that +dnl program. -# PKG_PROG_PKG_CONFIG([MIN-VERSION]) -# ---------------------------------- +dnl PKG_PREREQ(MIN-VERSION) +dnl ----------------------- +dnl Since: 0.29 +dnl +dnl Verify that the version of the pkg-config macros are at least +dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's +dnl installed version of pkg-config, this checks the developer's version +dnl of pkg.m4 when generating configure. +dnl +dnl To ensure that this macro is defined, also add: +dnl m4_ifndef([PKG_PREREQ], +dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) +dnl +dnl See the "Since" comment for each macro you use to see what version +dnl of the macros you require. +m4_defun([PKG_PREREQ], +[m4_define([PKG_MACROS_VERSION], [0.29.1]) +m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, + [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) +])dnl PKG_PREREQ + +dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) +dnl ---------------------------------- +dnl Since: 0.16 +dnl +dnl Search for the pkg-config tool and set the PKG_CONFIG variable to +dnl first found in the path. Checks that the version of pkg-config found +dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is +dnl used since that's the first version where most current features of +dnl pkg-config existed. AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) @@ -8653,18 +8684,19 @@ if test -n "$PKG_CONFIG"; then PKG_CONFIG="" fi fi[]dnl -])# PKG_PROG_PKG_CONFIG +])dnl PKG_PROG_PKG_CONFIG -# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) -# -# Check to see whether a particular set of modules exists. Similar -# to PKG_CHECK_MODULES(), but does not set variables or print errors. -# -# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) -# only at the first occurence in configure.ac, so if the first place -# it's called might be skipped (such as if it is within an "if", you -# have to call PKG_CHECK_EXISTS manually -# -------------------------------------------------------------- +dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------------------------------- +dnl Since: 0.18 +dnl +dnl Check to see whether a particular set of modules exists. Similar to +dnl PKG_CHECK_MODULES(), but does not set variables or print errors. +dnl +dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +dnl only at the first occurence in configure.ac, so if the first place +dnl it's called might be skipped (such as if it is within an "if", you +dnl have to call PKG_CHECK_EXISTS manually AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ @@ -8674,8 +8706,10 @@ m4_ifvaln([$3], [else $3])dnl fi]) -# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) -# --------------------------------------------- +dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +dnl --------------------------------------------- +dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting +dnl pkg_failed based on the result. m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" @@ -8687,10 +8721,11 @@ m4_define([_PKG_CONFIG], else pkg_failed=untried fi[]dnl -])# _PKG_CONFIG +])dnl _PKG_CONFIG -# _PKG_SHORT_ERRORS_SUPPORTED -# ----------------------------- +dnl _PKG_SHORT_ERRORS_SUPPORTED +dnl --------------------------- +dnl Internal check to see if pkg-config supports short errors. AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then @@ -8698,19 +8733,17 @@ if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then else _pkg_short_errors_supported=no fi[]dnl -])# _PKG_SHORT_ERRORS_SUPPORTED +])dnl _PKG_SHORT_ERRORS_SUPPORTED -# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], -# [ACTION-IF-NOT-FOUND]) -# -# -# Note that if there is a possibility the first call to -# PKG_CHECK_MODULES might not happen, you should be sure to include an -# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac -# -# -# -------------------------------------------------------------- +dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl -------------------------------------------------------------- +dnl Since: 0.4.0 +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES might not happen, you should be sure to include an +dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl @@ -8764,16 +8797,40 @@ else AC_MSG_RESULT([yes]) $3 fi[]dnl -])# PKG_CHECK_MODULES +])dnl PKG_CHECK_MODULES -# PKG_INSTALLDIR(DIRECTORY) -# ------------------------- -# Substitutes the variable pkgconfigdir as the location where a module -# should install pkg-config .pc files. By default the directory is -# $libdir/pkgconfig, but the default can be changed by passing -# DIRECTORY. The user can override through the --with-pkgconfigdir -# parameter. +dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl --------------------------------------------------------------------- +dnl Since: 0.29 +dnl +dnl Checks for existence of MODULES and gathers its build flags with +dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags +dnl and VARIABLE-PREFIX_LIBS from --libs. +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to +dnl include an explicit call to PKG_PROG_PKG_CONFIG in your +dnl configure.ac. +AC_DEFUN([PKG_CHECK_MODULES_STATIC], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +_save_PKG_CONFIG=$PKG_CONFIG +PKG_CONFIG="$PKG_CONFIG --static" +PKG_CHECK_MODULES($@) +PKG_CONFIG=$_save_PKG_CONFIG[]dnl +])dnl PKG_CHECK_MODULES_STATIC + + +dnl PKG_INSTALLDIR([DIRECTORY]) +dnl ------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable pkgconfigdir as the location where a module +dnl should install pkg-config .pc files. By default the directory is +dnl $libdir/pkgconfig, but the default can be changed by passing +dnl DIRECTORY. The user can override through the --with-pkgconfigdir +dnl parameter. AC_DEFUN([PKG_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) m4_pushdef([pkg_description], @@ -8784,16 +8841,18 @@ AC_ARG_WITH([pkgconfigdir], AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) -]) dnl PKG_INSTALLDIR +])dnl PKG_INSTALLDIR -# PKG_NOARCH_INSTALLDIR(DIRECTORY) -# ------------------------- -# Substitutes the variable noarch_pkgconfigdir as the location where a -# module should install arch-independent pkg-config .pc files. By -# default the directory is $datadir/pkgconfig, but the default can be -# changed by passing DIRECTORY. The user can override through the -# --with-noarch-pkgconfigdir parameter. +dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) +dnl -------------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable noarch_pkgconfigdir as the location where a +dnl module should install arch-independent pkg-config .pc files. By +dnl default the directory is $datadir/pkgconfig, but the default can be +dnl changed by passing DIRECTORY. The user can override through the +dnl --with-noarch-pkgconfigdir parameter. AC_DEFUN([PKG_NOARCH_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) m4_pushdef([pkg_description], @@ -8804,7 +8863,24 @@ AC_ARG_WITH([noarch-pkgconfigdir], AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) -]) dnl PKG_NOARCH_INSTALLDIR +])dnl PKG_NOARCH_INSTALLDIR + + +dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, +dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------- +dnl Since: 0.28 +dnl +dnl Retrieves the value of the pkg-config variable for the given module. +AC_DEFUN([PKG_CHECK_VAR], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl + +_PKG_CONFIG([$1], [variable="][$3]["], [$2]) +AS_VAR_COPY([$1], [pkg_cv_][$1]) + +AS_VAR_IF([$1], [""], [$5], [$4])dnl +])dnl PKG_CHECK_VAR # Copyright (C) 2002-2012 Free Software Foundation, Inc. # diff --git a/driver/xf86-video-openchrome/configure b/driver/xf86-video-openchrome/configure index 5830ea189..c6b041e9e 100755 --- a/driver/xf86-video-openchrome/configure +++ b/driver/xf86-video-openchrome/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for xf86-video-openchrome 0.6.176. +# Generated by GNU Autoconf 2.69 for xf86-video-openchrome 0.6.182. # # Report bugs to . # @@ -591,8 +591,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='xf86-video-openchrome' PACKAGE_TARNAME='xf86-video-openchrome' -PACKAGE_VERSION='0.6.176' -PACKAGE_STRING='xf86-video-openchrome 0.6.176' +PACKAGE_VERSION='0.6.182' +PACKAGE_STRING='xf86-video-openchrome 0.6.182' PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg&component=Driver/openchrome' PACKAGE_URL='' @@ -1371,7 +1371,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures xf86-video-openchrome 0.6.176 to adapt to many kinds of systems. +\`configure' configures xf86-video-openchrome 0.6.182 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1442,7 +1442,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of xf86-video-openchrome 0.6.176:";; + short | recursive ) echo "Configuration of xf86-video-openchrome 0.6.182:";; esac cat <<\_ACEOF @@ -1576,7 +1576,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -xf86-video-openchrome configure 0.6.176 +xf86-video-openchrome configure 0.6.182 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1974,7 +1974,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by xf86-video-openchrome $as_me 0.6.176, which was +It was created by xf86-video-openchrome $as_me 0.6.182, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2819,7 +2819,7 @@ fi # Define the identity of the package. PACKAGE='xf86-video-openchrome' - VERSION='0.6.176' + VERSION='0.6.182' cat >>confdefs.h <<_ACEOF @@ -13364,7 +13364,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by xf86-video-openchrome $as_me 0.6.176, which was +This file was extended by xf86-video-openchrome $as_me 0.6.182, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -13430,7 +13430,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -xf86-video-openchrome config.status 0.6.176 +xf86-video-openchrome config.status 0.6.182 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/driver/xf86-video-openchrome/configure.ac b/driver/xf86-video-openchrome/configure.ac index 60f461b5d..1a028a0ba 100644 --- a/driver/xf86-video-openchrome/configure.ac +++ b/driver/xf86-video-openchrome/configure.ac @@ -23,7 +23,7 @@ # Initialize Autoconf AC_PREREQ(2.57) AC_INIT([xf86-video-openchrome], - [0.6.176], + [0.6.182], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg&component=Driver/openchrome], [xf86-video-openchrome]) diff --git a/driver/xf86-video-openchrome/man/Makefile.am b/driver/xf86-video-openchrome/man/Makefile.am index 2ec9173f4..23ced25db 100644 --- a/driver/xf86-video-openchrome/man/Makefile.am +++ b/driver/xf86-video-openchrome/man/Makefile.am @@ -1,5 +1,3 @@ -# $Id: Makefile.am,v 1.5 2018/12/09 21:07:33 fcambus Exp $ -# # Copyright 2005 Sun Microsystems, Inc. All rights reserved. # # Permission to use, copy, modify, distribute, and sell this software and its diff --git a/driver/xf86-video-openchrome/man/Makefile.in b/driver/xf86-video-openchrome/man/Makefile.in index 2ba0bddc2..cc35159e8 100644 --- a/driver/xf86-video-openchrome/man/Makefile.in +++ b/driver/xf86-video-openchrome/man/Makefile.in @@ -14,8 +14,6 @@ @SET_MAKE@ -# $Id: Makefile.in,v 1.14 2018/12/09 21:07:33 fcambus Exp $ -# # Copyright 2005 Sun Microsystems, Inc. All rights reserved. # # Permission to use, copy, modify, distribute, and sell this software and its diff --git a/driver/xf86-video-openchrome/src/via_display.c b/driver/xf86-video-openchrome/src/via_display.c index f18796ba4..a01da20a0 100644 --- a/driver/xf86-video-openchrome/src/via_display.c +++ b/driver/xf86-video-openchrome/src/via_display.c @@ -595,6 +595,7 @@ viaIGAInitCommon(ScrnInfoPtr pScrn) vgaHWPtr hwp = VGAHWPTR(pScrn); VIAPtr pVia = VIAPTR(pScrn); VIADisplayPtr pVIADisplay = pVia->pVIADisplay; + VIARegPtr Regs = &pVIADisplay->SavedReg; CARD8 i; #ifdef HAVE_DEBUG CARD8 temp; @@ -611,7 +612,7 @@ viaIGAInitCommon(ScrnInfoPtr pScrn) temp = hwp->readMiscOut(hwp); DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Misc. Register: 0x%02X\n", temp)); - hwp->writeMiscOut(hwp, temp | 0x22); + hwp->writeMiscOut(hwp, temp | 0x23); temp = hwp->readEnable(hwp); DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, @@ -918,6 +919,25 @@ viaIGAInitCommon(ScrnInfoPtr pScrn) * 11: Clock on/off according to each engine IDLE status */ ViaSeqMask(hwp, 0x3F, 0xFF, 0xFF); + /* + * Initialize frame buffer size and GTI for VX800, VX855, and + * VX900 chipsets. This code is really necessary for standby + * resume to work properly on VIA Embedded EPIA-M830 mainboard. + */ + if ((pVia->Chipset == VIA_VX800) || + (pVia->Chipset == VIA_VX855) || + (pVia->Chipset == VIA_VX900)) { + hwp->writeSeq(hwp, 0x14, Regs->SR[0x14]); + hwp->writeSeq(hwp, 0x68, Regs->SR[0x68]); + hwp->writeSeq(hwp, 0x69, Regs->SR[0x69]); + hwp->writeSeq(hwp, 0x6A, Regs->SR[0x6A]); + hwp->writeSeq(hwp, 0x6B, Regs->SR[0x6B]); + hwp->writeSeq(hwp, 0x6C, Regs->SR[0x6C]); + hwp->writeSeq(hwp, 0x6D, Regs->SR[0x6D]); + hwp->writeSeq(hwp, 0x6E, Regs->SR[0x6E]); + hwp->writeSeq(hwp, 0x6F, Regs->SR[0x6F]); + } + /* 3X5.36[7] - DPMS VSYNC Output * 3X5.36[6] - DPMS HSYNC Output * 3X5.36[5:4] - DPMS Control @@ -939,11 +959,11 @@ viaIGAInitCommon(ScrnInfoPtr pScrn) } /* 3X5.3B through 3X5.3F are scratch pad registers. */ - ViaCrtcMask(hwp, 0x3B, pVIADisplay->originalCR3B, 0xFF); - ViaCrtcMask(hwp, 0x3C, pVIADisplay->originalCR3C, 0xFF); - ViaCrtcMask(hwp, 0x3D, pVIADisplay->originalCR3D, 0xFF); - ViaCrtcMask(hwp, 0x3E, pVIADisplay->originalCR3E, 0xFF); - ViaCrtcMask(hwp, 0x3F, pVIADisplay->originalCR3F, 0xFF); + ViaCrtcMask(hwp, 0x3B, Regs->CR[0x3B], 0xFF); + ViaCrtcMask(hwp, 0x3C, Regs->CR[0x3C], 0xFF); + ViaCrtcMask(hwp, 0x3D, Regs->CR[0x3D], 0xFF); + ViaCrtcMask(hwp, 0x3E, Regs->CR[0x3E], 0xFF); + ViaCrtcMask(hwp, 0x3F, Regs->CR[0x3F], 0xFF); /* 3X5.47[5] - Peep at the PCI-bus * 0: Disable @@ -1869,252 +1889,9 @@ ViaDisablePrimaryFIFO(ScrnInfoPtr pScrn) void viaIGA1Save(ScrnInfoPtr pScrn) { - vgaHWPtr hwp = VGAHWPTR(pScrn); - VIAPtr pVia = VIAPTR(pScrn); - VIARegPtr Regs = &pVia->SavedReg; - DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Entered viaIGA1Save.\n")); - vgaHWProtect(pScrn, TRUE); - - vgaHWSave(pScrn, &hwp->SavedReg, VGA_SR_ALL); - - DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "Saving sequencer registers.\n")); - - /* Unlock extended registers. */ - hwp->writeSeq(hwp, 0x10, 0x01); - - Regs->SR[0x14] = hwp->readSeq(hwp, 0x14); - Regs->SR[0x15] = hwp->readSeq(hwp, 0x15); - Regs->SR[0x16] = hwp->readSeq(hwp, 0x16); - Regs->SR[0x17] = hwp->readSeq(hwp, 0x17); - Regs->SR[0x18] = hwp->readSeq(hwp, 0x18); - Regs->SR[0x19] = hwp->readSeq(hwp, 0x19); - - /* PCI Bus Control */ - Regs->SR[0x1A] = hwp->readSeq(hwp, 0x1A); - - Regs->SR[0x1B] = hwp->readSeq(hwp, 0x1B); - Regs->SR[0x1C] = hwp->readSeq(hwp, 0x1C); - Regs->SR[0x1D] = hwp->readSeq(hwp, 0x1D); - Regs->SR[0x1E] = hwp->readSeq(hwp, 0x1E); - Regs->SR[0x1F] = hwp->readSeq(hwp, 0x1F); - - Regs->SR[0x20] = hwp->readSeq(hwp, 0x20); - Regs->SR[0x21] = hwp->readSeq(hwp, 0x21); - Regs->SR[0x22] = hwp->readSeq(hwp, 0x22); - - /* Registers 3C5.23 through 3C5.25 are not used by Chrome9. - * Registers 3C5.27 through 3C5.29 are not used by Chrome9. */ - switch (pVia->Chipset) { - case VIA_CLE266: - case VIA_KM400: - case VIA_PM800: - case VIA_K8M800: - case VIA_P4M800PRO: - case VIA_CX700: - case VIA_P4M890: - Regs->SR[0x23] = hwp->readSeq(hwp, 0x23); - Regs->SR[0x24] = hwp->readSeq(hwp, 0x24); - Regs->SR[0x25] = hwp->readSeq(hwp, 0x25); - - Regs->SR[0x27] = hwp->readSeq(hwp, 0x27); - Regs->SR[0x28] = hwp->readSeq(hwp, 0x28); - Regs->SR[0x29] = hwp->readSeq(hwp, 0x29); - break; - default: - break; - } - - Regs->SR[0x26] = hwp->readSeq(hwp, 0x26); - - Regs->SR[0x2A] = hwp->readSeq(hwp, 0x2A); - Regs->SR[0x2B] = hwp->readSeq(hwp, 0x2B); - Regs->SR[0x2D] = hwp->readSeq(hwp, 0x2D); - Regs->SR[0x2E] = hwp->readSeq(hwp, 0x2E); - - /* Save PCI Configuration Memory Base Shadow 0 and 1. - * These registers are available only in UniChrome, UniChrome Pro, - * and UniChrome Pro II. */ - switch (pVia->Chipset) { - case VIA_CLE266: - case VIA_KM400: - case VIA_PM800: - case VIA_K8M800: - case VIA_P4M800PRO: - case VIA_CX700: - case VIA_P4M890: - Regs->SR[0x2F] = hwp->readSeq(hwp, 0x2F); - Regs->SR[0x30] = hwp->readSeq(hwp, 0x30); - break; - default: - break; - } - - /* Save PLL settings and several miscellaneous registers. - * For UniChrome, register 3C5.44 through 3C5.4B are saved. - * For UniChrome Pro and Chrome9, register 3C5.44 through 3C5.4C - * are saved. */ - Regs->SR[0x44] = hwp->readSeq(hwp, 0x44); - Regs->SR[0x45] = hwp->readSeq(hwp, 0x45); - Regs->SR[0x46] = hwp->readSeq(hwp, 0x46); - Regs->SR[0x47] = hwp->readSeq(hwp, 0x47); - Regs->SR[0x48] = hwp->readSeq(hwp, 0x48); - Regs->SR[0x49] = hwp->readSeq(hwp, 0x49); - Regs->SR[0x4A] = hwp->readSeq(hwp, 0x4A); - Regs->SR[0x4B] = hwp->readSeq(hwp, 0x4B); - - switch (pVia->Chipset) { - case VIA_PM800: - case VIA_K8M800: - case VIA_P4M800PRO: - case VIA_CX700: - case VIA_P4M890: - case VIA_K8M890: - case VIA_P4M900: - case VIA_VX800: - case VIA_VX855: - case VIA_VX900: - Regs->SR[0x4C] = hwp->readSeq(hwp, 0x4C); - - /* Save register 3C5.4D. - * According to CX700 / VX700 (UniChrome Pro II) Open Graphics - * Programming Manual Part I: Graphics Core / 2D, - * this register is called Dual Channel Memory Control. - * According to VX800 / VX855 / VX900 (Chrome9 HC3 / HCM / HD) - * Open Graphics Programming Manual Part I: Graphics Core / 2D, - * this register is called Preemptive Arbiter Control. - * It is likely that this register is also supported in UniChrome Pro. */ - Regs->SR[0x4D] = hwp->readSeq(hwp, 0x4D); - - Regs->SR[0x4E] = hwp->readSeq(hwp, 0x4E); - Regs->SR[0x4F] = hwp->readSeq(hwp, 0x4F); - break; - default: - break; - } - - DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "Finished saving sequencer registers.\n")); - - DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "Saving IGA1 registers.\n")); - - /* UniChrome Pro or later */ - switch (pVia->Chipset) { - case VIA_PM800: - case VIA_K8M800: - case VIA_P4M800PRO: - case VIA_CX700: - case VIA_P4M890: - case VIA_K8M890: - case VIA_P4M900: - case VIA_VX800: - case VIA_VX855: - case VIA_VX900: - /* Display Fetch Blocking Control */ - Regs->CR[0x30] = hwp->readCrtc(hwp, 0x30); - - /* Half Line Position */ - Regs->CR[0x31] = hwp->readCrtc(hwp, 0x31); - break; - default: - break; - } - - Regs->CR[0x32] = hwp->readCrtc(hwp, 0x32); - Regs->CR[0x33] = hwp->readCrtc(hwp, 0x33); - Regs->CR[0x35] = hwp->readCrtc(hwp, 0x35); - Regs->CR[0x36] = hwp->readCrtc(hwp, 0x36); - - /* UniChrome Pro or later */ - switch (pVia->Chipset) { - case VIA_PM800: - case VIA_K8M800: - case VIA_P4M800PRO: - case VIA_CX700: - case VIA_P4M890: - case VIA_K8M890: - case VIA_P4M900: - case VIA_VX800: - case VIA_VX855: - case VIA_VX900: - /* DAC Control Register */ - Regs->CR[0x37] = hwp->readCrtc(hwp, 0x37); - break; - default: - break; - } - - Regs->CR[0x38] = hwp->readCrtc(hwp, 0x38); - Regs->CR[0x39] = hwp->readCrtc(hwp, 0x39); - Regs->CR[0x3A] = hwp->readCrtc(hwp, 0x3A); - Regs->CR[0x3B] = hwp->readCrtc(hwp, 0x3B); - Regs->CR[0x3C] = hwp->readCrtc(hwp, 0x3C); - Regs->CR[0x3D] = hwp->readCrtc(hwp, 0x3D); - Regs->CR[0x3E] = hwp->readCrtc(hwp, 0x3E); - Regs->CR[0x3F] = hwp->readCrtc(hwp, 0x3F); - - Regs->CR[0x40] = hwp->readCrtc(hwp, 0x40); - - /* UniChrome Pro or later */ - switch (pVia->Chipset) { - case VIA_PM800: - case VIA_K8M800: - case VIA_P4M800PRO: - case VIA_CX700: - case VIA_P4M890: - case VIA_K8M890: - case VIA_P4M900: - case VIA_VX800: - case VIA_VX855: - case VIA_VX900: - Regs->CR[0x43] = hwp->readCrtc(hwp, 0x43); - Regs->CR[0x45] = hwp->readCrtc(hwp, 0x45); - break; - default: - break; - } - - Regs->CR[0x46] = hwp->readCrtc(hwp, 0x46); - Regs->CR[0x47] = hwp->readCrtc(hwp, 0x47); - - /* Starting Address */ - /* Start Address High */ - Regs->CR[0x0C] = hwp->readCrtc(hwp, 0x0C); - - /* Start Address Low */ - Regs->CR[0x0D] = hwp->readCrtc(hwp, 0x0D); - - /* UniChrome Pro or later */ - switch (pVia->Chipset) { - case VIA_PM800: - case VIA_K8M800: - case VIA_P4M800PRO: - case VIA_CX700: - case VIA_P4M890: - case VIA_K8M890: - case VIA_P4M900: - case VIA_VX800: - case VIA_VX855: - case VIA_VX900: - /* Starting Address Overflow[28:24] */ - Regs->CR[0x48] = hwp->readCrtc(hwp, 0x48); - break; - default: - break; - } - - /* Starting Address Overflow[23:16] */ - Regs->CR[0x34] = hwp->readCrtc(hwp, 0x34); - - DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "Finished saving IGA1 registers.\n")); - - vgaHWProtect(pScrn, FALSE); - DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Exiting viaIGA1Save.\n")); } @@ -2124,7 +1901,8 @@ viaIGA1Restore(ScrnInfoPtr pScrn) { vgaHWPtr hwp = VGAHWPTR(pScrn); VIAPtr pVia = VIAPTR(pScrn); - VIARegPtr Regs = &pVia->SavedReg; + VIADisplayPtr pVIADisplay = pVia->pVIADisplay; + VIARegPtr Regs = &pVIADisplay->SavedReg; DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Entered viaIGA1Restore.\n")); @@ -3145,131 +2923,9 @@ ViaSetSecondaryFIFO(ScrnInfoPtr pScrn, DisplayModePtr mode) void viaIGA2Save(ScrnInfoPtr pScrn) { - vgaHWPtr hwp = VGAHWPTR(pScrn); - VIAPtr pVia = VIAPTR(pScrn); - VIARegPtr Regs = &pVia->SavedReg; - int i; - DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Entered viaIGA2Save.\n")); - vgaHWProtect(pScrn, TRUE); - - vgaHWSave(pScrn, &hwp->SavedReg, VGA_SR_ALL); - - DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "Saving IGA2 registers.\n")); - - /* Unlock extended registers. */ - hwp->writeSeq(hwp, 0x10, 0x01); - - for (i = 0; i < (0x88 - 0x50 + 1); i++) { - Regs->CR[i + 0x50] = hwp->readCrtc(hwp, i + 0x50); - } - - for (i = 0; i < (0x92 - 0x8A + 1); i++) { - Regs->CR[i + 0x8A] = hwp->readCrtc(hwp, i + 0x8A); - } - - for (i = 0; i < (0xA3 - 0x94 + 1); i++) { - Regs->CR[i + 0x94] = hwp->readCrtc(hwp, i + 0x94); - } - - Regs->CR[0xA4] = hwp->readCrtc(hwp, 0xA4); - - for (i = 0; i < (0xAC - 0xA5 + 1); i++) { - Regs->CR[i + 0xA5] = hwp->readCrtc(hwp, i + 0xA5); - } - - /* Chrome 9 */ - switch (pVia->Chipset) { - case VIA_K8M890: - case VIA_P4M900: - case VIA_VX800: - case VIA_VX855: - case VIA_VX900: - Regs->CR[0xAF] = hwp->readCrtc(hwp, 0xAF); - break; - default: - break; - } - - /* Chrome 9, Chrome 9 HC, and Chrome 9 HC3 */ - switch (pVia->Chipset) { - case VIA_K8M890: - case VIA_P4M900: - case VIA_VX800: - for (i = 0; i < (0xCD - 0xB0 + 1); i++) { - Regs->CR[i + 0xB0] = hwp->readCrtc(hwp, i + 0xB0); - } - - break; - default: - break; - } - - switch (pVia->Chipset) { - - /* UniChrome Pro and UniChrome Pro II */ - case VIA_PM800: - case VIA_K8M800: - case VIA_P4M800PRO: - case VIA_CX700: - case VIA_P4M890: - for (i = 0; i < (0xD7 - 0xD0 + 1); i++) { - Regs->CR[i + 0xD0] = hwp->readCrtc(hwp, i + 0xD0); - } - - break; - - /* Chrome 9 */ - case VIA_K8M890: - case VIA_P4M900: - case VIA_VX800: - case VIA_VX855: - case VIA_VX900: - for (i = 0; i < (0xEC - 0xD0 + 1); i++) { - Regs->CR[i + 0xD0] = hwp->readCrtc(hwp, i + 0xD0); - } - - break; - default: - break; - } - - /* Chrome 9 */ - switch (pVia->Chipset) { - case VIA_K8M890: - case VIA_P4M900: - case VIA_VX800: - case VIA_VX855: - case VIA_VX900: - for (i = 0; i < (0xF5 - 0xF0 + 1); i++) { - Regs->CR[i + 0xF0] = hwp->readCrtc(hwp, i + 0xF0); - } - - break; - default: - break; - } - - /* Chrome 9 HCM and Chrome 9 HD */ - if ((pVia->Chipset == VIA_VX855) || (pVia->Chipset == VIA_VX900)) { - for (i = 0; i < (0xFC - 0xF6 + 1); i++) { - Regs->CR[i + 0xF6] = hwp->readCrtc(hwp, i + 0xF6); - } - } - - /* Chrome 9 HD */ - if (pVia->Chipset == VIA_VX900) { - Regs->CR[0xFD] = hwp->readCrtc(hwp, 0xFD); - } - - DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "Finished saving IGA2 registers.\n")); - - vgaHWProtect(pScrn, FALSE); - DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Exiting viaIGA2Save.\n")); } @@ -3279,7 +2935,8 @@ viaIGA2Restore(ScrnInfoPtr pScrn) { vgaHWPtr hwp = VGAHWPTR(pScrn); VIAPtr pVia = VIAPTR(pScrn); - VIARegPtr Regs = &pVia->SavedReg; + VIADisplayPtr pVIADisplay = pVia->pVIADisplay; + VIARegPtr Regs = &pVIADisplay->SavedReg; int i; DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, diff --git a/driver/xf86-video-openchrome/src/via_driver.h b/driver/xf86-video-openchrome/src/via_driver.h index ecde134de..80b9977a3 100644 --- a/driver/xf86-video-openchrome/src/via_driver.h +++ b/driver/xf86-video-openchrome/src/via_driver.h @@ -126,11 +126,6 @@ extern int gVIAEntityIndex; -typedef struct { - CARD8 SR[256]; - CARD8 CR[256]; -} VIARegRec, *VIARegPtr; - /* * variables that need to be shared among different screens. */ @@ -195,7 +190,6 @@ typedef struct _twodContext { } ViaTwodContext; typedef struct _VIA { - VIARegRec SavedReg; int Bpp, Bpl; Bool KMS; diff --git a/driver/xf86-video-openchrome/src/via_fp.c b/driver/xf86-video-openchrome/src/via_fp.c index c536417c3..a9d1930e9 100644 --- a/driver/xf86-video-openchrome/src/via_fp.c +++ b/driver/xf86-video-openchrome/src/via_fp.c @@ -706,13 +706,16 @@ viaFPGetFPInfoScratchPad(xf86OutputPtr output) { ScrnInfoPtr pScrn = output->scrn; vgaHWPtr hwp = VGAHWPTR(pScrn); + VIAPtr pVia = VIAPTR(pScrn); + VIADisplayPtr pVIADisplay = pVia->pVIADisplay; VIAFPPtr pVIAFP = (VIAFPPtr) output->driver_private; + VIARegPtr Regs = &pVIADisplay->SavedReg; CARD8 index; DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Entered %s.\n", __func__)); - index = hwp->readCrtc(hwp, 0x3F) & 0x0F; + index = Regs->CR[0x3F] & 0x0F; pVIAFP->NativeModeIndex = index; pVIAFP->NativeWidth = ViaPanelNativeModes[index].Width; diff --git a/driver/xf86-video-openchrome/src/via_ums.c b/driver/xf86-video-openchrome/src/via_ums.c index 9b0e3d8ae..533106fcc 100644 --- a/driver/xf86-video-openchrome/src/via_ums.c +++ b/driver/xf86-video-openchrome/src/via_ums.c @@ -1075,6 +1075,7 @@ umsCrtcInit(ScrnInfoPtr pScrn) vgaHWPtr hwp = VGAHWPTR(pScrn); VIAPtr pVia = VIAPTR(pScrn); VIADisplayPtr pVIADisplay = pVia->pVIADisplay; + VIARegPtr Regs = &pVIADisplay->SavedReg; #if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,8,0,0,0) ClockRangePtr clockRanges; #else @@ -1082,13 +1083,149 @@ umsCrtcInit(ScrnInfoPtr pScrn) #endif int max_pitch, max_height; xf86CrtcPtr iga1, iga2; + uint32_t i; - /* 3X5.3B through 3X5.3F are scratch pad registers. */ - pVIADisplay->originalCR3B = hwp->readCrtc(hwp, 0x3B); - pVIADisplay->originalCR3C = hwp->readCrtc(hwp, 0x3C); - pVIADisplay->originalCR3D = hwp->readCrtc(hwp, 0x3D); - pVIADisplay->originalCR3E = hwp->readCrtc(hwp, 0x3E); - pVIADisplay->originalCR3F = hwp->readCrtc(hwp, 0x3F); + vgaHWSave(pScrn, &hwp->SavedReg, VGA_SR_ALL); + + /* Unlock extended registers. */ + hwp->writeSeq(hwp, 0x10, 0x01); + + Regs->SR[0x14] = hwp->readSeq(hwp, 0x14); + Regs->SR[0x15] = hwp->readSeq(hwp, 0x15); + Regs->SR[0x16] = hwp->readSeq(hwp, 0x16); + Regs->SR[0x17] = hwp->readSeq(hwp, 0x17); + Regs->SR[0x18] = hwp->readSeq(hwp, 0x18); + Regs->SR[0x19] = hwp->readSeq(hwp, 0x19); + Regs->SR[0x1A] = hwp->readSeq(hwp, 0x1A); + Regs->SR[0x1B] = hwp->readSeq(hwp, 0x1B); + Regs->SR[0x1C] = hwp->readSeq(hwp, 0x1C); + Regs->SR[0x1D] = hwp->readSeq(hwp, 0x1D); + Regs->SR[0x1E] = hwp->readSeq(hwp, 0x1E); + Regs->SR[0x1F] = hwp->readSeq(hwp, 0x1F); + Regs->SR[0x20] = hwp->readSeq(hwp, 0x20); + Regs->SR[0x21] = hwp->readSeq(hwp, 0x21); + Regs->SR[0x22] = hwp->readSeq(hwp, 0x22); + Regs->SR[0x23] = hwp->readSeq(hwp, 0x23); + Regs->SR[0x24] = hwp->readSeq(hwp, 0x24); + + Regs->SR[0x27] = hwp->readSeq(hwp, 0x27); + Regs->SR[0x28] = hwp->readSeq(hwp, 0x28); + Regs->SR[0x29] = hwp->readSeq(hwp, 0x29); + Regs->SR[0x2A] = hwp->readSeq(hwp, 0x2A); + Regs->SR[0x2B] = hwp->readSeq(hwp, 0x2B); + + Regs->SR[0x2D] = hwp->readSeq(hwp, 0x2D); + Regs->SR[0x2E] = hwp->readSeq(hwp, 0x2E); + Regs->SR[0x2F] = hwp->readSeq(hwp, 0x2F); + Regs->SR[0x30] = hwp->readSeq(hwp, 0x30); + + Regs->SR[0x44] = hwp->readSeq(hwp, 0x44); + Regs->SR[0x45] = hwp->readSeq(hwp, 0x45); + Regs->SR[0x46] = hwp->readSeq(hwp, 0x46); + Regs->SR[0x47] = hwp->readSeq(hwp, 0x47); + Regs->SR[0x48] = hwp->readSeq(hwp, 0x48); + Regs->SR[0x49] = hwp->readSeq(hwp, 0x49); + Regs->SR[0x4A] = hwp->readSeq(hwp, 0x4A); + Regs->SR[0x4B] = hwp->readSeq(hwp, 0x4B); + + switch (pVia->Chipset) { + case VIA_K8M800: + case VIA_P4M800PRO: + case VIA_PM800: + case VIA_CX700: + case VIA_P4M890: + case VIA_K8M890: + case VIA_P4M900: + case VIA_VX800: + case VIA_VX855: + case VIA_VX900: + Regs->SR[0x4C] = hwp->readSeq(hwp, 0x4C); + Regs->SR[0x4D] = hwp->readSeq(hwp, 0x4D); + Regs->SR[0x4E] = hwp->readSeq(hwp, 0x4E); + Regs->SR[0x4F] = hwp->readSeq(hwp, 0x4F); + break; + default: + break; + } + + if ((pVia->Chipset == VIA_VX800) || + (pVia->Chipset == VIA_VX855) || + (pVia->Chipset == VIA_VX900)) { + Regs->SR[0x14] = hwp->readSeq(hwp, 0x14); + Regs->SR[0x68] = hwp->readSeq(hwp, 0x68); + Regs->SR[0x69] = hwp->readSeq(hwp, 0x69); + Regs->SR[0x6A] = hwp->readSeq(hwp, 0x6A); + Regs->SR[0x6B] = hwp->readSeq(hwp, 0x6B); + Regs->SR[0x6C] = hwp->readSeq(hwp, 0x6C); + Regs->SR[0x6D] = hwp->readSeq(hwp, 0x6D); + Regs->SR[0x6E] = hwp->readSeq(hwp, 0x6E); + Regs->SR[0x6F] = hwp->readSeq(hwp, 0x6F); + } + + Regs->CR[0x0C] = hwp->readCrtc(hwp, 0x0C); + Regs->CR[0x0D] = hwp->readCrtc(hwp, 0x0D); + + Regs->CR[0x30] = hwp->readCrtc(hwp, 0x30); + Regs->CR[0x31] = hwp->readCrtc(hwp, 0x31); + Regs->CR[0x32] = hwp->readCrtc(hwp, 0x32); + Regs->CR[0x33] = hwp->readCrtc(hwp, 0x33); + Regs->CR[0x34] = hwp->readCrtc(hwp, 0x34); + Regs->CR[0x35] = hwp->readCrtc(hwp, 0x35); + Regs->CR[0x36] = hwp->readCrtc(hwp, 0x36); + Regs->CR[0x37] = hwp->readCrtc(hwp, 0x37); + Regs->CR[0x38] = hwp->readCrtc(hwp, 0x38); + Regs->CR[0x39] = hwp->readCrtc(hwp, 0x39); + Regs->CR[0x3A] = hwp->readCrtc(hwp, 0x3A); + Regs->CR[0x3B] = hwp->readCrtc(hwp, 0x3B); + Regs->CR[0x3C] = hwp->readCrtc(hwp, 0x3C); + Regs->CR[0x3D] = hwp->readCrtc(hwp, 0x3D); + Regs->CR[0x3E] = hwp->readCrtc(hwp, 0x3E); + Regs->CR[0x3F] = hwp->readCrtc(hwp, 0x3F); + Regs->CR[0x40] = hwp->readCrtc(hwp, 0x40); + Regs->CR[0x43] = hwp->readCrtc(hwp, 0x43); + Regs->CR[0x45] = hwp->readCrtc(hwp, 0x45); + Regs->CR[0x46] = hwp->readCrtc(hwp, 0x46); + Regs->CR[0x47] = hwp->readCrtc(hwp, 0x47); + Regs->CR[0x48] = hwp->readCrtc(hwp, 0x48); + + for (i = 0; i < (0xA8 - 0x50 + 1); i++) { + Regs->CR[i + 0x50] = hwp->readCrtc(hwp, i + 0x50); + } + + switch (pVia->Chipset) { + case VIA_CX700: + case VIA_VX800: + case VIA_VX855: + case VIA_VX900: + for (i = 0; i < (0xEF - 0xA9 + 1); i++) { + Regs->CR[i + 0xA9] = hwp->readCrtc(hwp, i + 0xA9); + } + + break; + default: + break; + } + + if ((pVia->Chipset == VIA_VX800) || + (pVia->Chipset == VIA_VX855) || + (pVia->Chipset == VIA_VX900)) { + for (i = 0; i < (0xF5 - 0xF0 + 1); i++) { + Regs->CR[i + 0xF0] = hwp->readCrtc(hwp, i + 0xF0); + } + } + + if ((pVia->Chipset == VIA_VX855) || + (pVia->Chipset == VIA_VX900)) { + for (i = 0; i < (0xFC - 0xF6 + 1); i++) { + Regs->CR[i + 0xF6] = hwp->readCrtc(hwp, i + 0xF6); + } + } + + if (pVia->Chipset == VIA_VX900) { + for (i = 0; i < (0xFF - 0xF7 + 1); i++) { + Regs->CR[i + 0xF7] = hwp->readCrtc(hwp, i + 0xF7); + } + } /* Read memory bandwidth from registers. */ pVia->MemClk = hwp->readCrtc(hwp, 0x3D) >> 4; diff --git a/driver/xf86-video-openchrome/src/via_ums.h b/driver/xf86-video-openchrome/src/via_ums.h index abdb32ae2..628698359 100644 --- a/driver/xf86-video-openchrome/src/via_ums.h +++ b/driver/xf86-video-openchrome/src/via_ums.h @@ -159,6 +159,11 @@ enum { VIA_DPA_CLK_RANGE_150M, }; +typedef struct { + CARD8 SR[256]; + CARD8 CR[256]; +} VIARegRec, *VIARegPtr; + typedef struct ViaPanelMode { int Width; int Height; @@ -223,9 +228,7 @@ typedef struct _VIADISPLAY { /* OLPC XO-1.5 */ Bool isOLPCXO15; - /* Shadow copy of CR3B through CR3F. */ - CARD8 originalCR3B, originalCR3C, originalCR3D, - originalCR3E, originalCR3F; + VIARegRec SavedReg; xf86OutputPtr tv; diff --git a/driver/xf86-video-openchrome/src/xvmc/xf86dristr.h b/driver/xf86-video-openchrome/src/xvmc/xf86dristr.h index 3b43438e7..c466564d8 100644 --- a/driver/xf86-video-openchrome/src/xvmc/xf86dristr.h +++ b/driver/xf86-video-openchrome/src/xvmc/xf86dristr.h @@ -59,7 +59,7 @@ typedef struct _XF86DRIQueryVersion { CARD8 reqType; /* always DRIReqCode */ CARD8 driReqType; /* always X_DRIQueryVersion */ - CARD16 length B16; + CARD16 length; } xXF86DRIQueryVersionReq; #define sz_xXF86DRIQueryVersionReq 4 @@ -68,15 +68,15 @@ typedef struct { BYTE type; /* X_Reply */ BOOL pad1; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD16 majorVersion B16; /* major version of DRI protocol */ - CARD16 minorVersion B16; /* minor version of DRI protocol */ - CARD32 patchVersion B32; /* patch version of DRI protocol */ - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; - CARD32 pad6 B32; + CARD16 sequenceNumber; + CARD32 length; + CARD16 majorVersion; /* major version of DRI protocol */ + CARD16 minorVersion; /* minor version of DRI protocol */ + CARD32 patchVersion; /* patch version of DRI protocol */ + CARD32 pad3; + CARD32 pad4; + CARD32 pad5; + CARD32 pad6; } xXF86DRIQueryVersionReply; #define sz_xXF86DRIQueryVersionReply 32 @@ -85,8 +85,8 @@ typedef struct _XF86DRIQueryDirectRenderingCapable { CARD8 reqType; /* always DRIReqCode */ CARD8 driReqType; /* X_DRIQueryDirectRenderingCapable */ - CARD16 length B16; - CARD32 screen B32; + CARD16 length; + CARD32 screen; } xXF86DRIQueryDirectRenderingCapableReq; #define sz_xXF86DRIQueryDirectRenderingCapableReq 8 @@ -95,17 +95,17 @@ typedef struct { BYTE type; /* X_Reply */ BOOL pad1; - CARD16 sequenceNumber B16; - CARD32 length B32; + CARD16 sequenceNumber; + CARD32 length; BOOL isCapable; BOOL pad2; BOOL pad3; BOOL pad4; - CARD32 pad5 B32; - CARD32 pad6 B32; - CARD32 pad7 B32; - CARD32 pad8 B32; - CARD32 pad9 B32; + CARD32 pad5; + CARD32 pad6; + CARD32 pad7; + CARD32 pad8; + CARD32 pad9; } xXF86DRIQueryDirectRenderingCapableReply; #define sz_xXF86DRIQueryDirectRenderingCapableReply 32 @@ -114,8 +114,8 @@ typedef struct _XF86DRIOpenConnection { CARD8 reqType; /* always DRIReqCode */ CARD8 driReqType; /* always X_DRIOpenConnection */ - CARD16 length B16; - CARD32 screen B32; + CARD16 length; + CARD32 screen; } xXF86DRIOpenConnectionReq; #define sz_xXF86DRIOpenConnectionReq 8 @@ -124,14 +124,14 @@ typedef struct { BYTE type; /* X_Reply */ BOOL pad1; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 hSAREALow B32; - CARD32 hSAREAHigh B32; - CARD32 busIdStringLength B32; - CARD32 pad6 B32; - CARD32 pad7 B32; - CARD32 pad8 B32; + CARD16 sequenceNumber; + CARD32 length; + CARD32 hSAREALow; + CARD32 hSAREAHigh; + CARD32 busIdStringLength; + CARD32 pad6; + CARD32 pad7; + CARD32 pad8; } xXF86DRIOpenConnectionReply; #define sz_xXF86DRIOpenConnectionReply 32 @@ -140,9 +140,9 @@ typedef struct _XF86DRIAuthConnection { CARD8 reqType; /* always DRIReqCode */ CARD8 driReqType; /* always X_DRICloseConnection */ - CARD16 length B16; - CARD32 screen B32; - CARD32 magic B32; + CARD16 length; + CARD32 screen; + CARD32 magic; } xXF86DRIAuthConnectionReq; #define sz_xXF86DRIAuthConnectionReq 12 @@ -151,14 +151,14 @@ typedef struct { BYTE type; BOOL pad1; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 authenticated B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; - CARD32 pad6 B32; + CARD16 sequenceNumber; + CARD32 length; + CARD32 authenticated; + CARD32 pad2; + CARD32 pad3; + CARD32 pad4; + CARD32 pad5; + CARD32 pad6; } xXF86DRIAuthConnectionReply; #define zx_xXF86DRIAuthConnectionReply 32 @@ -167,8 +167,8 @@ typedef struct _XF86DRICloseConnection { CARD8 reqType; /* always DRIReqCode */ CARD8 driReqType; /* always X_DRICloseConnection */ - CARD16 length B16; - CARD32 screen B32; + CARD16 length; + CARD32 screen; } xXF86DRICloseConnectionReq; #define sz_xXF86DRICloseConnectionReq 8 @@ -177,8 +177,8 @@ typedef struct _XF86DRIGetClientDriverName { CARD8 reqType; /* always DRIReqCode */ CARD8 driReqType; /* always X_DRIGetClientDriverName */ - CARD16 length B16; - CARD32 screen B32; + CARD16 length; + CARD32 screen; } xXF86DRIGetClientDriverNameReq; #define sz_xXF86DRIGetClientDriverNameReq 8 @@ -187,14 +187,14 @@ typedef struct { BYTE type; /* X_Reply */ BOOL pad1; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 ddxDriverMajorVersion B32; - CARD32 ddxDriverMinorVersion B32; - CARD32 ddxDriverPatchVersion B32; - CARD32 clientDriverNameLength B32; - CARD32 pad5 B32; - CARD32 pad6 B32; + CARD16 sequenceNumber; + CARD32 length; + CARD32 ddxDriverMajorVersion; + CARD32 ddxDriverMinorVersion; + CARD32 ddxDriverPatchVersion; + CARD32 clientDriverNameLength; + CARD32 pad5; + CARD32 pad6; } xXF86DRIGetClientDriverNameReply; #define sz_xXF86DRIGetClientDriverNameReply 32 @@ -203,10 +203,10 @@ typedef struct _XF86DRICreateContext { CARD8 reqType; /* always DRIReqCode */ CARD8 driReqType; /* always X_DRICreateContext */ - CARD16 length B16; - CARD32 screen B32; - CARD32 visual B32; - CARD32 context B32; + CARD16 length; + CARD32 screen; + CARD32 visual; + CARD32 context; } xXF86DRICreateContextReq; #define sz_xXF86DRICreateContextReq 16 @@ -215,14 +215,14 @@ typedef struct { BYTE type; /* X_Reply */ BOOL pad1; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 hHWContext B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; - CARD32 pad6 B32; + CARD16 sequenceNumber; + CARD32 length; + CARD32 hHWContext; + CARD32 pad2; + CARD32 pad3; + CARD32 pad4; + CARD32 pad5; + CARD32 pad6; } xXF86DRICreateContextReply; #define sz_xXF86DRICreateContextReply 32 @@ -231,9 +231,9 @@ typedef struct _XF86DRIDestroyContext { CARD8 reqType; /* always DRIReqCode */ CARD8 driReqType; /* always X_DRIDestroyContext */ - CARD16 length B16; - CARD32 screen B32; - CARD32 context B32; + CARD16 length; + CARD32 screen; + CARD32 context; } xXF86DRIDestroyContextReq; #define sz_xXF86DRIDestroyContextReq 12 @@ -242,9 +242,9 @@ typedef struct _XF86DRICreateDrawable { CARD8 reqType; /* always DRIReqCode */ CARD8 driReqType; /* always X_DRICreateDrawable */ - CARD16 length B16; - CARD32 screen B32; - CARD32 drawable B32; + CARD16 length; + CARD32 screen; + CARD32 drawable; } xXF86DRICreateDrawableReq; #define sz_xXF86DRICreateDrawableReq 12 @@ -253,14 +253,14 @@ typedef struct { BYTE type; /* X_Reply */ BOOL pad1; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 hHWDrawable B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; - CARD32 pad6 B32; + CARD16 sequenceNumber; + CARD32 length; + CARD32 hHWDrawable; + CARD32 pad2; + CARD32 pad3; + CARD32 pad4; + CARD32 pad5; + CARD32 pad6; } xXF86DRICreateDrawableReply; #define sz_xXF86DRICreateDrawableReply 32 @@ -269,9 +269,9 @@ typedef struct _XF86DRIDestroyDrawable { CARD8 reqType; /* always DRIReqCode */ CARD8 driReqType; /* always X_DRIDestroyDrawable */ - CARD16 length B16; - CARD32 screen B32; - CARD32 drawable B32; + CARD16 length; + CARD32 screen; + CARD32 drawable; } xXF86DRIDestroyDrawableReq; #define sz_xXF86DRIDestroyDrawableReq 12 @@ -280,9 +280,9 @@ typedef struct _XF86DRIGetDrawableInfo { CARD8 reqType; /* always DRIReqCode */ CARD8 driReqType; /* always X_DRIGetDrawableInfo */ - CARD16 length B16; - CARD32 screen B32; - CARD32 drawable B32; + CARD16 length; + CARD32 screen; + CARD32 drawable; } xXF86DRIGetDrawableInfoReq; #define sz_xXF86DRIGetDrawableInfoReq 12 @@ -291,18 +291,18 @@ typedef struct { BYTE type; /* X_Reply */ BOOL pad1; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 drawableTableIndex B32; - CARD32 drawableTableStamp B32; - INT16 drawableX B16; - INT16 drawableY B16; - INT16 drawableWidth B16; - INT16 drawableHeight B16; - CARD32 numClipRects B32; - INT16 backX B16; - INT16 backY B16; - CARD32 numBackClipRects B32; + CARD16 sequenceNumber; + CARD32 length; + CARD32 drawableTableIndex; + CARD32 drawableTableStamp; + INT16 drawableX; + INT16 drawableY; + INT16 drawableWidth; + INT16 drawableHeight; + CARD32 numClipRects; + INT16 backX; + INT16 backY; + CARD32 numBackClipRects; } xXF86DRIGetDrawableInfoReply; #define sz_xXF86DRIGetDrawableInfoReply 36 @@ -311,8 +311,8 @@ typedef struct _XF86DRIGetDeviceInfo { CARD8 reqType; /* always DRIReqCode */ CARD8 driReqType; /* always X_DRIGetDeviceInfo */ - CARD16 length B16; - CARD32 screen B32; + CARD16 length; + CARD32 screen; } xXF86DRIGetDeviceInfoReq; #define sz_xXF86DRIGetDeviceInfoReq 8 @@ -321,14 +321,14 @@ typedef struct { BYTE type; /* X_Reply */ BOOL pad1; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 hFrameBufferLow B32; - CARD32 hFrameBufferHigh B32; - CARD32 framebufferOrigin B32; - CARD32 framebufferSize B32; - CARD32 framebufferStride B32; - CARD32 devPrivateSize B32; + CARD16 sequenceNumber; + CARD32 length; + CARD32 hFrameBufferLow; + CARD32 hFrameBufferHigh; + CARD32 framebufferOrigin; + CARD32 framebufferSize; + CARD32 framebufferStride; + CARD32 devPrivateSize; } xXF86DRIGetDeviceInfoReply; #define sz_xXF86DRIGetDeviceInfoReply 32 @@ -337,9 +337,9 @@ typedef struct _XF86DRIOpenFullScreen { CARD8 reqType; /* always DRIReqCode */ CARD8 driReqType; /* always X_DRIOpenFullScreen */ - CARD16 length B16; - CARD32 screen B32; - CARD32 drawable B32; + CARD16 length; + CARD32 screen; + CARD32 drawable; } xXF86DRIOpenFullScreenReq; #define sz_xXF86DRIOpenFullScreenReq 12 @@ -348,14 +348,14 @@ typedef struct { BYTE type; BOOL pad1; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 isFullScreen B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; - CARD32 pad6 B32; + CARD16 sequenceNumber; + CARD32 length; + CARD32 isFullScreen; + CARD32 pad2; + CARD32 pad3; + CARD32 pad4; + CARD32 pad5; + CARD32 pad6; } xXF86DRIOpenFullScreenReply; #define sz_xXF86DRIOpenFullScreenReply 32 @@ -364,9 +364,9 @@ typedef struct _XF86DRICloseFullScreen { CARD8 reqType; /* always DRIReqCode */ CARD8 driReqType; /* always X_DRICloseFullScreen */ - CARD16 length B16; - CARD32 screen B32; - CARD32 drawable B32; + CARD16 length; + CARD32 screen; + CARD32 drawable; } xXF86DRICloseFullScreenReq; #define sz_xXF86DRICloseFullScreenReq 12 @@ -375,14 +375,14 @@ typedef struct { BYTE type; BOOL pad1; - CARD16 sequenceNumber B16; - CARD32 length B32; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; - CARD32 pad6 B32; - CARD32 pad7 B32; + CARD16 sequenceNumber; + CARD32 length; + CARD32 pad2; + CARD32 pad3; + CARD32 pad4; + CARD32 pad5; + CARD32 pad6; + CARD32 pad7; } xXF86DRICloseFullScreenReply; #define sz_xXF86DRICloseFullScreenReply 32