Update to xf86-video-mga 1.6.5
This commit is contained in:
parent
f3e3dd7c97
commit
716bb4ac53
@ -1,3 +1,107 @@
|
|||||||
|
commit 979e0e73eb3424b6a97746e29c8b4a5b7e86196e
|
||||||
|
Author: Matt Turner <mattst88@gmail.com>
|
||||||
|
Date: Tue Jan 17 14:40:48 2017 -0800
|
||||||
|
|
||||||
|
xf86-video-mga 1.6.5
|
||||||
|
|
||||||
|
Signed-off-by: Matt Turner <mattst88@gmail.com>
|
||||||
|
|
||||||
|
commit fc5d7acc23fcec9d87ca26fadf466fcf107671c0
|
||||||
|
Author: Mathieu Larouche <mathieu.larouche@matrox.com>
|
||||||
|
Date: Wed Jul 20 09:18:49 2016 -0400
|
||||||
|
|
||||||
|
xf86-video-mga: Add support for the new G200e chipset -- V2
|
||||||
|
|
||||||
|
- Added PLL algorithm for a new rev of G200e
|
||||||
|
- Removed the bandwidth limitation for the new G200e
|
||||||
|
|
||||||
|
Fixes : https://bugs.freedesktop.org/show_bug.cgi?id=92540
|
||||||
|
|
||||||
|
Change from V1 :
|
||||||
|
- Make sure we don't cause issue on previous chips. (Dave Airlie review)
|
||||||
|
|
||||||
|
Signed-off-by: Mathieu Larouche <mathieu.larouche@matrox.com>
|
||||||
|
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||||
|
|
||||||
|
commit 12781f2e3deb7f6d86fde53134384996a6004894
|
||||||
|
Author: Mathieu Larouche <mathieu.larouche@matrox.com>
|
||||||
|
Date: Fri Jun 17 10:52:42 2016 -0400
|
||||||
|
|
||||||
|
xf86-video-mga: Add support for a new G200eW3 chipset
|
||||||
|
|
||||||
|
- Added support for the new deviceID for G200eW3
|
||||||
|
- Added PLL algorithm for the G200eW3
|
||||||
|
- Added some initialization code for G200eW3
|
||||||
|
|
||||||
|
Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=92541
|
||||||
|
|
||||||
|
Signed-off-by: Mathieu Larouche <mathieu.larouche@matrox.com>
|
||||||
|
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||||
|
|
||||||
|
commit df094bfffe4ef097bfd9a569f2d2e35649c1a3c7
|
||||||
|
Author: Adam Jackson <ajax@redhat.com>
|
||||||
|
Date: Tue Jul 19 10:03:56 2016 -0400
|
||||||
|
|
||||||
|
Adapt Block/WakeupHandler signature for ABI 23
|
||||||
|
|
||||||
|
Signed-off-by: Adam Jackson <ajax@redhat.com>
|
||||||
|
|
||||||
|
commit 72a8b5ef0bcb08d4cde7b329a13a59db35342f58
|
||||||
|
Author: Thomas Klausner <wiz@NetBSD.org>
|
||||||
|
Date: Mon Feb 23 13:26:14 2015 +0100
|
||||||
|
|
||||||
|
Use correct type in function call.
|
||||||
|
|
||||||
|
Fixes
|
||||||
|
passing argument 2 of 'pci_device_cfg_read_u32' from incompatible pointer type
|
||||||
|
pciaccess.h:153:5: note: expected '__uint32_t *' but argument is of type 'CARD32 *'
|
||||||
|
|
||||||
|
Signed-off-by: Thomas Klausner <wiz@NetBSD.org>
|
||||||
|
Reviewed-by: Connor Behan <connor.behan@gmail.com>
|
||||||
|
|
||||||
|
commit f1e6c73be073c8816319104b2fde329bc286f5ec
|
||||||
|
Author: Connor Behan <connor.behan@gmail.com>
|
||||||
|
Date: Mon Aug 24 13:48:29 2015 -0400
|
||||||
|
|
||||||
|
Composite fixup
|
||||||
|
|
||||||
|
A driver like this that tries to composite a lot will definitely need to
|
||||||
|
avoid crashing for solid pictures.
|
||||||
|
|
||||||
|
Signed-off-by: Connor Behan <connor.behan@gmail.com>
|
||||||
|
|
||||||
|
commit e6770f7cc11800ab6cc2e88790f357189de7ce32
|
||||||
|
Author: Connor Behan <connor.behan@gmail.com>
|
||||||
|
Date: Mon Aug 24 11:48:16 2015 -0400
|
||||||
|
|
||||||
|
Remove DownloadFromScreen
|
||||||
|
|
||||||
|
This hook was broken and did the same thing as a software fallback.
|
||||||
|
|
||||||
|
Signed-off-by: Connor Behan <connor.behan@gmail.com>
|
||||||
|
|
||||||
|
commit 04432b9c1db255e8e3d39a924f8803f83c407acc
|
||||||
|
Author: Adam Jackson <ajax@redhat.com>
|
||||||
|
Date: Tue May 5 11:05:44 2015 -0400
|
||||||
|
|
||||||
|
Enable write-combining on the framebuffer BAR
|
||||||
|
|
||||||
|
Signed-off-by: Adam Jackson <ajax@redhat.com>
|
||||||
|
|
||||||
|
commit da1223394ac9b6f3974b0b2570cbf46a2425fc11
|
||||||
|
Author: Matthew Rezny <matthew@reztek.cz>
|
||||||
|
Date: Sun Jun 21 19:50:43 2015 +0200
|
||||||
|
|
||||||
|
MGA DDX: make it possible to find EXA support
|
||||||
|
|
||||||
|
Newer versions of the xserver stricter requirements on header order
|
||||||
|
which caused the configure tests for EXA support to erroneously fail.
|
||||||
|
Since XAA was already removed from an earlier version of xserver, the
|
||||||
|
configure failure meant no acceleration was possible. Patch configure
|
||||||
|
tests similar to r128.
|
||||||
|
|
||||||
|
Reviewed-by: Adam Jackson <ajax@redhat.com>
|
||||||
|
|
||||||
commit 8ed77eb7920f375e9490a31f907eccb02fb123cd
|
commit 8ed77eb7920f375e9490a31f907eccb02fb123cd
|
||||||
Author: Matt Turner <mattst88@gmail.com>
|
Author: Matt Turner <mattst88@gmail.com>
|
||||||
Date: Thu Feb 19 13:39:18 2015 -0800
|
Date: Thu Feb 19 13:39:18 2015 -0800
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
scriptversion=2012-10-14.11; # UTC
|
scriptversion=2012-10-14.11; # UTC
|
||||||
|
|
||||||
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
|
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
|
||||||
# Written by Tom Tromey <tromey@cygnus.com>.
|
# Written by Tom Tromey <tromey@cygnus.com>.
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
@ -5,6 +5,9 @@
|
|||||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||||
#undef HAVE_DLFCN_H
|
#undef HAVE_DLFCN_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <exa.h> header file. */
|
||||||
|
#undef HAVE_EXA_H
|
||||||
|
|
||||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||||
#undef HAVE_INTTYPES_H
|
#undef HAVE_INTTYPES_H
|
||||||
|
|
||||||
|
31
driver/xf86-video-mga/configure
vendored
31
driver/xf86-video-mga/configure
vendored
@ -1,6 +1,6 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Guess values for system-dependent variables and create Makefiles.
|
# Guess values for system-dependent variables and create Makefiles.
|
||||||
# Generated by GNU Autoconf 2.69 for xf86-video-mga 1.6.4.
|
# Generated by GNU Autoconf 2.69 for xf86-video-mga 1.6.5.
|
||||||
#
|
#
|
||||||
# Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg>.
|
# Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg>.
|
||||||
#
|
#
|
||||||
@ -591,8 +591,8 @@ MAKEFLAGS=
|
|||||||
# Identity of this package.
|
# Identity of this package.
|
||||||
PACKAGE_NAME='xf86-video-mga'
|
PACKAGE_NAME='xf86-video-mga'
|
||||||
PACKAGE_TARNAME='xf86-video-mga'
|
PACKAGE_TARNAME='xf86-video-mga'
|
||||||
PACKAGE_VERSION='1.6.4'
|
PACKAGE_VERSION='1.6.5'
|
||||||
PACKAGE_STRING='xf86-video-mga 1.6.4'
|
PACKAGE_STRING='xf86-video-mga 1.6.5'
|
||||||
PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg'
|
PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg'
|
||||||
PACKAGE_URL=''
|
PACKAGE_URL=''
|
||||||
|
|
||||||
@ -1368,7 +1368,7 @@ if test "$ac_init_help" = "long"; then
|
|||||||
# Omit some internal or obsolete options to make the list less imposing.
|
# 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.
|
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||||
cat <<_ACEOF
|
cat <<_ACEOF
|
||||||
\`configure' configures xf86-video-mga 1.6.4 to adapt to many kinds of systems.
|
\`configure' configures xf86-video-mga 1.6.5 to adapt to many kinds of systems.
|
||||||
|
|
||||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||||
|
|
||||||
@ -1438,7 +1438,7 @@ fi
|
|||||||
|
|
||||||
if test -n "$ac_init_help"; then
|
if test -n "$ac_init_help"; then
|
||||||
case $ac_init_help in
|
case $ac_init_help in
|
||||||
short | recursive ) echo "Configuration of xf86-video-mga 1.6.4:";;
|
short | recursive ) echo "Configuration of xf86-video-mga 1.6.5:";;
|
||||||
esac
|
esac
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
|
|
||||||
@ -1572,7 +1572,7 @@ fi
|
|||||||
test -n "$ac_init_help" && exit $ac_status
|
test -n "$ac_init_help" && exit $ac_status
|
||||||
if $ac_init_version; then
|
if $ac_init_version; then
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
xf86-video-mga configure 1.6.4
|
xf86-video-mga configure 1.6.5
|
||||||
generated by GNU Autoconf 2.69
|
generated by GNU Autoconf 2.69
|
||||||
|
|
||||||
Copyright (C) 2012 Free Software Foundation, Inc.
|
Copyright (C) 2012 Free Software Foundation, Inc.
|
||||||
@ -1987,7 +1987,7 @@ cat >config.log <<_ACEOF
|
|||||||
This file contains any messages produced by compilers while
|
This file contains any messages produced by compilers while
|
||||||
running configure, to aid debugging if configure makes a mistake.
|
running configure, to aid debugging if configure makes a mistake.
|
||||||
|
|
||||||
It was created by xf86-video-mga $as_me 1.6.4, which was
|
It was created by xf86-video-mga $as_me 1.6.5, which was
|
||||||
generated by GNU Autoconf 2.69. Invocation command line was
|
generated by GNU Autoconf 2.69. Invocation command line was
|
||||||
|
|
||||||
$ $0 $@
|
$ $0 $@
|
||||||
@ -10461,7 +10461,7 @@ fi
|
|||||||
|
|
||||||
# Define the identity of the package.
|
# Define the identity of the package.
|
||||||
PACKAGE='xf86-video-mga'
|
PACKAGE='xf86-video-mga'
|
||||||
VERSION='1.6.4'
|
VERSION='1.6.5'
|
||||||
|
|
||||||
|
|
||||||
cat >>confdefs.h <<_ACEOF
|
cat >>confdefs.h <<_ACEOF
|
||||||
@ -18385,11 +18385,6 @@ fi
|
|||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
if test "x$XAA" = xyes; then
|
|
||||||
|
|
||||||
$as_echo "#define USE_XAA 1" >>confdefs.h
|
|
||||||
|
|
||||||
fi
|
|
||||||
CFLAGS=$save_CFLAGS
|
CFLAGS=$save_CFLAGS
|
||||||
CPPFLAGS=$save_CPPFLAGS
|
CPPFLAGS=$save_CPPFLAGS
|
||||||
fi
|
fi
|
||||||
@ -18420,14 +18415,20 @@ $as_echo "yes" >&6; }
|
|||||||
|
|
||||||
SAVE_CPPFLAGS="$CPPFLAGS"
|
SAVE_CPPFLAGS="$CPPFLAGS"
|
||||||
CPPFLAGS="$CPPFLAGS $XORG_CFLAGS"
|
CPPFLAGS="$CPPFLAGS $XORG_CFLAGS"
|
||||||
|
for ac_header in exa.h
|
||||||
|
do :
|
||||||
ac_fn_c_check_header_compile "$LINENO" "exa.h" "ac_cv_header_exa_h" "#include \"xorg-server.h\"
|
ac_fn_c_check_header_compile "$LINENO" "exa.h" "ac_cv_header_exa_h" "#include \"xorg-server.h\"
|
||||||
"
|
"
|
||||||
if test "x$ac_cv_header_exa_h" = xyes; then :
|
if test "x$ac_cv_header_exa_h" = xyes; then :
|
||||||
|
cat >>confdefs.h <<_ACEOF
|
||||||
|
#define HAVE_EXA_H 1
|
||||||
|
_ACEOF
|
||||||
have_exa_h="yes"
|
have_exa_h="yes"
|
||||||
else
|
else
|
||||||
have_exa_h="no"
|
have_exa_h="no"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
CPPFLAGS="$SAVE_CPPFLAGS"
|
CPPFLAGS="$SAVE_CPPFLAGS"
|
||||||
else
|
else
|
||||||
@ -19044,7 +19045,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
|||||||
# report actual input values of CONFIG_FILES etc. instead of their
|
# report actual input values of CONFIG_FILES etc. instead of their
|
||||||
# values after options handling.
|
# values after options handling.
|
||||||
ac_log="
|
ac_log="
|
||||||
This file was extended by xf86-video-mga $as_me 1.6.4, which was
|
This file was extended by xf86-video-mga $as_me 1.6.5, which was
|
||||||
generated by GNU Autoconf 2.69. Invocation command line was
|
generated by GNU Autoconf 2.69. Invocation command line was
|
||||||
|
|
||||||
CONFIG_FILES = $CONFIG_FILES
|
CONFIG_FILES = $CONFIG_FILES
|
||||||
@ -19110,7 +19111,7 @@ _ACEOF
|
|||||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||||
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
||||||
ac_cs_version="\\
|
ac_cs_version="\\
|
||||||
xf86-video-mga config.status 1.6.4
|
xf86-video-mga config.status 1.6.5
|
||||||
configured by $0, generated by GNU Autoconf 2.69,
|
configured by $0, generated by GNU Autoconf 2.69,
|
||||||
with options \\"\$ac_cs_config\\"
|
with options \\"\$ac_cs_config\\"
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
# Initialize Autoconf
|
# Initialize Autoconf
|
||||||
AC_PREREQ([2.60])
|
AC_PREREQ([2.60])
|
||||||
AC_INIT([xf86-video-mga],
|
AC_INIT([xf86-video-mga],
|
||||||
[1.6.4],
|
[1.6.5],
|
||||||
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
|
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
|
||||||
[xf86-video-mga])
|
[xf86-video-mga])
|
||||||
AC_CONFIG_SRCDIR([Makefile.am])
|
AC_CONFIG_SRCDIR([Makefile.am])
|
||||||
@ -138,9 +138,6 @@ if test "x$XAA" != xno; then
|
|||||||
CFLAGS=$XORG_CFLAGS
|
CFLAGS=$XORG_CFLAGS
|
||||||
CPPFLAGS="$XORG_CFLAGS"
|
CPPFLAGS="$XORG_CFLAGS"
|
||||||
AC_CHECK_HEADERS([xaa.h], XAA=yes, XAA=no)
|
AC_CHECK_HEADERS([xaa.h], XAA=yes, XAA=no)
|
||||||
if test "x$XAA" = xyes; then
|
|
||||||
AC_DEFINE(USE_XAA, 1, [Build support for xaa])
|
|
||||||
fi
|
|
||||||
CFLAGS=$save_CFLAGS
|
CFLAGS=$save_CFLAGS
|
||||||
CPPFLAGS=$save_CPPFLAGS
|
CPPFLAGS=$save_CPPFLAGS
|
||||||
fi
|
fi
|
||||||
@ -158,7 +155,7 @@ if test "x$EXA" = xyes; then
|
|||||||
|
|
||||||
SAVE_CPPFLAGS="$CPPFLAGS"
|
SAVE_CPPFLAGS="$CPPFLAGS"
|
||||||
CPPFLAGS="$CPPFLAGS $XORG_CFLAGS"
|
CPPFLAGS="$CPPFLAGS $XORG_CFLAGS"
|
||||||
AC_CHECK_HEADER(exa.h,
|
AC_CHECK_HEADERS(exa.h,
|
||||||
[have_exa_h="yes"], [have_exa_h="no"],
|
[have_exa_h="yes"], [have_exa_h="no"],
|
||||||
[#include "xorg-server.h"])
|
[#include "xorg-server.h"])
|
||||||
CPPFLAGS="$SAVE_CPPFLAGS"
|
CPPFLAGS="$SAVE_CPPFLAGS"
|
||||||
|
@ -75,8 +75,13 @@
|
|||||||
|
|
||||||
#define SCREEN_INIT_ARGS_DECL ScreenPtr pScreen, int argc, char **argv
|
#define SCREEN_INIT_ARGS_DECL ScreenPtr pScreen, int argc, char **argv
|
||||||
|
|
||||||
|
#if ABI_VIDEODRV_VERSION >= SET_ABI_VERSION(23, 0)
|
||||||
|
#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout
|
||||||
|
#define BLOCKHANDLER_ARGS arg, pTimeout
|
||||||
|
#else
|
||||||
#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout, pointer pReadmask
|
#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout, pointer pReadmask
|
||||||
#define BLOCKHANDLER_ARGS arg, pTimeout, pReadmask
|
#define BLOCKHANDLER_ARGS arg, pTimeout, pReadmask
|
||||||
|
#endif
|
||||||
|
|
||||||
#define CLOSE_SCREEN_ARGS_DECL ScreenPtr pScreen
|
#define CLOSE_SCREEN_ARGS_DECL ScreenPtr pScreen
|
||||||
#define CLOSE_SCREEN_ARGS pScreen
|
#define CLOSE_SCREEN_ARGS pScreen
|
||||||
|
@ -146,6 +146,12 @@ void MGAdbg_outreg32(ScrnInfoPtr, int,int, char*);
|
|||||||
#define PCI_CHIP_MGAG400 0x0525
|
#define PCI_CHIP_MGAG400 0x0525
|
||||||
#define PCI_CHIP_MGAG550 0x2527
|
#define PCI_CHIP_MGAG550 0x2527
|
||||||
|
|
||||||
|
#ifndef PCI_CHIP_MGAG200_EW3_PCI
|
||||||
|
#define PCI_CHIP_MGAG200_EW3_PCI 0x0536
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Read/write to the DAC via MMIO
|
* Read/write to the DAC via MMIO
|
||||||
*/
|
*/
|
||||||
@ -209,7 +215,7 @@ void MGAdbg_outreg32(ScrnInfoPtr, int,int, char*);
|
|||||||
typedef struct {
|
typedef struct {
|
||||||
unsigned char ExtVga[6];
|
unsigned char ExtVga[6];
|
||||||
unsigned char DacClk[6];
|
unsigned char DacClk[6];
|
||||||
unsigned char ExtVga_Index24;
|
unsigned char ExtVga_MgaReq;
|
||||||
unsigned char Dac_Index90;
|
unsigned char Dac_Index90;
|
||||||
unsigned char * DacRegs;
|
unsigned char * DacRegs;
|
||||||
unsigned long crtc2[0x58];
|
unsigned long crtc2[0x58];
|
||||||
|
@ -852,8 +852,12 @@ MGA3026Save(ScrnInfoPtr pScrn, vgaRegPtr vgaReg, MGARegPtr mgaReg,
|
|||||||
mgaReg->DacRegs[i] = inTi3026(MGADACregs[i]);
|
mgaReg->DacRegs[i] = inTi3026(MGADACregs[i]);
|
||||||
|
|
||||||
#ifdef XSERVER_LIBPCIACCESS
|
#ifdef XSERVER_LIBPCIACCESS
|
||||||
pci_device_cfg_read_u32(pMga->PciInfo, & mgaReg->Option,
|
{
|
||||||
|
uint32_t Option;
|
||||||
|
pci_device_cfg_read_u32(pMga->PciInfo, & Option,
|
||||||
PCI_OPTION_REG);
|
PCI_OPTION_REG);
|
||||||
|
mgaReg->Option = Option;
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
mgaReg->Option = pciReadLong(pMga->PciTag, PCI_OPTION_REG);
|
mgaReg->Option = pciReadLong(pMga->PciTag, PCI_OPTION_REG);
|
||||||
#endif
|
#endif
|
||||||
|
@ -51,6 +51,75 @@ static Bool MGAGInit(ScrnInfoPtr, DisplayModePtr);
|
|||||||
static void MGAGLoadPalette(ScrnInfoPtr, int, int*, LOCO*, VisualPtr);
|
static void MGAGLoadPalette(ScrnInfoPtr, int, int*, LOCO*, VisualPtr);
|
||||||
static Bool MGAG_i2cInit(ScrnInfoPtr pScrn);
|
static Bool MGAG_i2cInit(ScrnInfoPtr pScrn);
|
||||||
|
|
||||||
|
#define P_ARRAY_SIZE 9
|
||||||
|
|
||||||
|
void
|
||||||
|
MGAG200E4ComputePLLParam(ScrnInfoPtr pScrn, long lFo, int *M, int *N, int *P)
|
||||||
|
{
|
||||||
|
unsigned int ulComputedFo;
|
||||||
|
unsigned int ulFDelta;
|
||||||
|
unsigned int ulFPermitedDelta;
|
||||||
|
unsigned int ulFTmpDelta;
|
||||||
|
unsigned int ulVCOMax, ulVCOMin;
|
||||||
|
unsigned int ulTestP;
|
||||||
|
unsigned int ulTestM;
|
||||||
|
unsigned int ulTestN;
|
||||||
|
unsigned int ulFoInternal;
|
||||||
|
unsigned int ulPLLFreqRef;
|
||||||
|
unsigned int pulPValues[P_ARRAY_SIZE] = {16, 14, 12, 10, 8, 6, 4, 2, 1};
|
||||||
|
unsigned int i;
|
||||||
|
unsigned int ulVCO;
|
||||||
|
unsigned int ulFVV;
|
||||||
|
|
||||||
|
ulVCOMax = 1600000;
|
||||||
|
ulVCOMin = 800000;
|
||||||
|
ulPLLFreqRef = 25000;
|
||||||
|
|
||||||
|
if(lFo < 25000)
|
||||||
|
lFo = 25000;
|
||||||
|
|
||||||
|
ulFoInternal = lFo * 2;
|
||||||
|
|
||||||
|
ulFDelta = 0xFFFFFFFF;
|
||||||
|
/* Permited delta is 0.5% as VESA Specification */
|
||||||
|
ulFPermitedDelta = ulFoInternal * 5 / 1000;
|
||||||
|
|
||||||
|
for (i = 0 ; i < P_ARRAY_SIZE ; i++)
|
||||||
|
{
|
||||||
|
ulTestP = pulPValues[i];
|
||||||
|
|
||||||
|
if ((ulFoInternal * ulTestP) > ulVCOMax) continue;
|
||||||
|
if ((ulFoInternal * ulTestP) < ulVCOMin) continue;
|
||||||
|
|
||||||
|
for (ulTestN = 50; ulTestN <= 256; ulTestN++) {
|
||||||
|
for (ulTestM = 1; ulTestM <= 32; ulTestM++) {
|
||||||
|
ulComputedFo = (ulPLLFreqRef * ulTestN) / (ulTestM * ulTestP);
|
||||||
|
if (ulComputedFo > ulFoInternal)
|
||||||
|
ulFTmpDelta = ulComputedFo - ulFoInternal;
|
||||||
|
else
|
||||||
|
ulFTmpDelta = ulFoInternal - ulComputedFo;
|
||||||
|
|
||||||
|
if (ulFTmpDelta < ulFDelta) {
|
||||||
|
ulFDelta = ulFTmpDelta;
|
||||||
|
*M = ulTestM - 1;
|
||||||
|
*N = ulTestN - 1;
|
||||||
|
*P = ulTestP - 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ulVCO = ulPLLFreqRef * ((*N)+1) / ((*M)+1);
|
||||||
|
ulFVV = (ulVCO - 800000) / 50000;
|
||||||
|
|
||||||
|
if (ulFVV > 15)
|
||||||
|
ulFVV = 15;
|
||||||
|
|
||||||
|
*P |= (ulFVV << 4);
|
||||||
|
|
||||||
|
*M |= 0x80;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
MGAG200SEComputePLLParam(ScrnInfoPtr pScrn, long lFo, int *M, int *N, int *P)
|
MGAG200SEComputePLLParam(ScrnInfoPtr pScrn, long lFo, int *M, int *N, int *P)
|
||||||
{
|
{
|
||||||
@ -207,6 +276,74 @@ MGAG200WBComputePLLParam(ScrnInfoPtr pScrn, long lFo, int *M, int *N, int *P)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MGAG200EW3ComputePLLParam(ScrnInfoPtr pScrn ,long lFo, int *M, int *N, int *P)
|
||||||
|
{
|
||||||
|
unsigned int ulComputedFo;
|
||||||
|
unsigned int ulFDelta;
|
||||||
|
unsigned int ulFPermitedDelta;
|
||||||
|
unsigned int ulFTmpDelta;
|
||||||
|
unsigned int ulVCOMax, ulVCOMin;
|
||||||
|
unsigned int ulTestP1;
|
||||||
|
unsigned int ulTestP2;
|
||||||
|
unsigned int ulTestM;
|
||||||
|
unsigned int ulTestN;
|
||||||
|
unsigned int ulPLLFreqRef;
|
||||||
|
unsigned int ulTestP1Start;
|
||||||
|
unsigned int ulTestP1End;
|
||||||
|
unsigned int ulTestP2Start;
|
||||||
|
unsigned int ulTestP2End;
|
||||||
|
unsigned int ulTestMStart;
|
||||||
|
unsigned int ulTestMEnd;
|
||||||
|
unsigned int ulTestNStart;
|
||||||
|
unsigned int ulTestNEnd;
|
||||||
|
|
||||||
|
ulVCOMax = 800000;
|
||||||
|
ulVCOMin = 400000;
|
||||||
|
ulPLLFreqRef = 25000;
|
||||||
|
ulTestP1Start = 1;
|
||||||
|
ulTestP1End = 8;
|
||||||
|
ulTestP2Start = 1;
|
||||||
|
ulTestP2End = 8;
|
||||||
|
ulTestMStart = 1;
|
||||||
|
ulTestMEnd = 26;
|
||||||
|
ulTestNStart = 32;
|
||||||
|
ulTestNEnd = 2048;
|
||||||
|
|
||||||
|
ulFDelta = 0xFFFFFFFF;
|
||||||
|
/* Permited delta is 0.5% as VESA Specification */
|
||||||
|
ulFPermitedDelta = lFo * 5 / 1000;
|
||||||
|
|
||||||
|
/* Then we need to minimize the M while staying within 0.5% */
|
||||||
|
for (ulTestP1 = ulTestP1Start; ulTestP1 < ulTestP1End; ulTestP1++) {
|
||||||
|
for (ulTestP2 = ulTestP2Start; ulTestP2 < ulTestP2End; ulTestP2++) {
|
||||||
|
if (ulTestP1 < ulTestP2) continue;
|
||||||
|
if ((lFo * ulTestP1 * ulTestP2) > ulVCOMax) continue;
|
||||||
|
if ((lFo * ulTestP1 * ulTestP2) < ulVCOMin) continue;
|
||||||
|
|
||||||
|
for (ulTestM = ulTestMStart; ulTestM < ulTestMEnd; ulTestM++) {
|
||||||
|
for (ulTestN = ulTestNStart; ulTestN < ulTestNEnd; ulTestN++) {
|
||||||
|
ulComputedFo = (ulPLLFreqRef * ulTestN) / (ulTestM * ulTestP1 * ulTestP2);
|
||||||
|
if (ulComputedFo > lFo)
|
||||||
|
ulFTmpDelta = ulComputedFo - lFo;
|
||||||
|
else
|
||||||
|
ulFTmpDelta = lFo - ulComputedFo;
|
||||||
|
|
||||||
|
if (ulFTmpDelta < ulFDelta) {
|
||||||
|
ulFDelta = ulFTmpDelta;
|
||||||
|
*M = (CARD8)((ulTestN & 0x100) >> 1) |
|
||||||
|
(CARD8)(ulTestM);
|
||||||
|
*N = (CARD8)(ulTestN & 0xFF);
|
||||||
|
*P = (CARD8)((ulTestN & 0x600) >> 3) |
|
||||||
|
(CARD8)(ulTestP2 << 3) |
|
||||||
|
(CARD8)ulTestP1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
MGAG200EHComputePLLParam(ScrnInfoPtr pScrn, long lFo, int *M, int *N, int *P)
|
MGAG200EHComputePLLParam(ScrnInfoPtr pScrn, long lFo, int *M, int *N, int *P)
|
||||||
{
|
{
|
||||||
@ -890,7 +1027,11 @@ MGAGSetPCLK( ScrnInfoPtr pScrn, long f_out )
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (pMga->is_G200SE) {
|
if (pMga->is_G200SE) {
|
||||||
|
if (pMga->reg_1e24 >= 0x04) {
|
||||||
|
MGAG200E4ComputePLLParam(pScrn, f_out, &m, &n, &p);
|
||||||
|
} else {
|
||||||
MGAG200SEComputePLLParam(pScrn, f_out, &m, &n, &p);
|
MGAG200SEComputePLLParam(pScrn, f_out, &m, &n, &p);
|
||||||
|
}
|
||||||
|
|
||||||
pReg->DacRegs[ MGA1064_PIX_PLLC_M ] = m;
|
pReg->DacRegs[ MGA1064_PIX_PLLC_M ] = m;
|
||||||
pReg->DacRegs[ MGA1064_PIX_PLLC_N ] = n;
|
pReg->DacRegs[ MGA1064_PIX_PLLC_N ] = n;
|
||||||
@ -902,7 +1043,14 @@ MGAGSetPCLK( ScrnInfoPtr pScrn, long f_out )
|
|||||||
pReg->PllN = n;
|
pReg->PllN = n;
|
||||||
pReg->PllP = p;
|
pReg->PllP = p;
|
||||||
} else if (pMga->is_G200WB) {
|
} else if (pMga->is_G200WB) {
|
||||||
|
if (pMga->Chipset == PCI_CHIP_MGAG200_EW3_PCI)
|
||||||
|
{
|
||||||
|
MGAG200EW3ComputePLLParam(pScrn, f_out, &m, &n, &p);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
MGAG200WBComputePLLParam(pScrn, f_out, &m, &n, &p);
|
MGAG200WBComputePLLParam(pScrn, f_out, &m, &n, &p);
|
||||||
|
}
|
||||||
|
|
||||||
pReg->PllM = m;
|
pReg->PllM = m;
|
||||||
pReg->PllN = n;
|
pReg->PllN = n;
|
||||||
@ -1092,6 +1240,7 @@ MGAGInit(ScrnInfoPtr pScrn, DisplayModePtr mode)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case PCI_CHIP_MGAG200_WINBOND_PCI:
|
case PCI_CHIP_MGAG200_WINBOND_PCI:
|
||||||
|
case PCI_CHIP_MGAG200_EW3_PCI:
|
||||||
pReg->DacRegs[MGA1064_VREF_CTL] = 0x07;
|
pReg->DacRegs[MGA1064_VREF_CTL] = 0x07;
|
||||||
pReg->Option = 0x41049120;
|
pReg->Option = 0x41049120;
|
||||||
pReg->Option2 = 0x0000b000;
|
pReg->Option2 = 0x0000b000;
|
||||||
@ -1232,7 +1381,7 @@ MGAGInit(ScrnInfoPtr pScrn, DisplayModePtr mode)
|
|||||||
if (pMga->is_G200WB){
|
if (pMga->is_G200WB){
|
||||||
pReg->ExtVga[1] |= 0x88;
|
pReg->ExtVga[1] |= 0x88;
|
||||||
}
|
}
|
||||||
pReg->ExtVga_Index24 = 0x05;
|
pReg->ExtVga_MgaReq = 0x05;
|
||||||
|
|
||||||
pVga->CRTC[0] = ht - 4;
|
pVga->CRTC[0] = ht - 4;
|
||||||
pVga->CRTC[1] = hd;
|
pVga->CRTC[1] = hd;
|
||||||
@ -1481,6 +1630,11 @@ MGA_NOT_HAL(
|
|||||||
{
|
{
|
||||||
outMGAdac(0x90, mgaReg->Dac_Index90);
|
outMGAdac(0x90, mgaReg->Dac_Index90);
|
||||||
}
|
}
|
||||||
|
if (pMga->is_G200SE && (pMga->reg_1e24 >= 0x04)) {
|
||||||
|
outMGAdac( 0x1a, 0x09);
|
||||||
|
usleep(500);
|
||||||
|
outMGAdac( 0x1a, 0x01);
|
||||||
|
}
|
||||||
|
|
||||||
if (!MGAISGx50(pMga)) {
|
if (!MGAISGx50(pMga)) {
|
||||||
/* restore pci_option register */
|
/* restore pci_option register */
|
||||||
@ -1528,7 +1682,15 @@ MGA_NOT_HAL(
|
|||||||
|
|
||||||
if (pMga->is_G200ER) {
|
if (pMga->is_G200ER) {
|
||||||
OUTREG8(MGAREG_CRTCEXT_INDEX, 0x24);
|
OUTREG8(MGAREG_CRTCEXT_INDEX, 0x24);
|
||||||
OUTREG8(MGAREG_CRTCEXT_DATA, mgaReg->ExtVga_Index24);
|
OUTREG8(MGAREG_CRTCEXT_DATA, mgaReg->ExtVga_MgaReq);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pMga->is_G200WB) {
|
||||||
|
if(pMga->Chipset == PCI_CHIP_MGAG200_EW3_PCI)
|
||||||
|
{
|
||||||
|
OUTREG8(MGAREG_CRTCEXT_INDEX, 0x34);
|
||||||
|
OUTREG8(MGAREG_CRTCEXT_DATA, mgaReg->ExtVga_MgaReq);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This handles restoring the generic VGA registers. */
|
/* This handles restoring the generic VGA registers. */
|
||||||
@ -1717,7 +1879,15 @@ MGAGSave(ScrnInfoPtr pScrn, vgaRegPtr vgaReg, MGARegPtr mgaReg,
|
|||||||
if (pMga->is_G200ER)
|
if (pMga->is_G200ER)
|
||||||
{
|
{
|
||||||
OUTREG8(MGAREG_CRTCEXT_INDEX, 0x24);
|
OUTREG8(MGAREG_CRTCEXT_INDEX, 0x24);
|
||||||
mgaReg->ExtVga_Index24 = INREG8(MGAREG_CRTCEXT_DATA);
|
mgaReg->ExtVga_MgaReq = INREG8(MGAREG_CRTCEXT_DATA);
|
||||||
|
}
|
||||||
|
if (pMga->is_G200WB)
|
||||||
|
{
|
||||||
|
if(pMga->Chipset == PCI_CHIP_MGAG200_EW3_PCI)
|
||||||
|
{
|
||||||
|
OUTREG8(MGAREG_CRTCEXT_INDEX, 0x34);
|
||||||
|
mgaReg->ExtVga_MgaReq = INREG8(MGAREG_CRTCEXT_DATA);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
|
@ -87,7 +87,7 @@
|
|||||||
#include "mga_macros.h"
|
#include "mga_macros.h"
|
||||||
#include "mga_maven.h"
|
#include "mga_maven.h"
|
||||||
|
|
||||||
#ifdef HAVE_XAA_H
|
#ifdef USE_XAA
|
||||||
#include "xaa.h"
|
#include "xaa.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -315,7 +315,7 @@ static const struct mga_device_attributes attribs[] = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
/* G200SE A PCI */
|
/* G200SE A PCI */
|
||||||
[10] = { 0, 1, 0, 0, 1, 0, 0, 1, new_BARs,
|
[10] = { 0, 1, 0, 0, 1, 0, 0, 0, new_BARs,
|
||||||
(TRANSC_SOLID_FILL | TWO_PASS_COLOR_EXPAND | USE_LINEAR_EXPANSION),
|
(TRANSC_SOLID_FILL | TWO_PASS_COLOR_EXPAND | USE_LINEAR_EXPANSION),
|
||||||
{
|
{
|
||||||
{ 50000, 230000 }, /* System VCO frequencies */
|
{ 50000, 230000 }, /* System VCO frequencies */
|
||||||
@ -331,7 +331,7 @@ static const struct mga_device_attributes attribs[] = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
/* G200SE B PCI */
|
/* G200SE B PCI */
|
||||||
[11] = { 0, 1, 0, 0, 1, 0, 0, 1, new_BARs,
|
[11] = { 0, 1, 0, 0, 1, 0, 0, 0, new_BARs,
|
||||||
(TRANSC_SOLID_FILL | TWO_PASS_COLOR_EXPAND | USE_LINEAR_EXPANSION),
|
(TRANSC_SOLID_FILL | TWO_PASS_COLOR_EXPAND | USE_LINEAR_EXPANSION),
|
||||||
{
|
{
|
||||||
{ 50000, 114000 }, /* System VCO frequencies */
|
{ 50000, 114000 }, /* System VCO frequencies */
|
||||||
@ -407,6 +407,22 @@ static const struct mga_device_attributes attribs[] = {
|
|||||||
MGA_HOST_PCI /* Host interface */
|
MGA_HOST_PCI /* Host interface */
|
||||||
},
|
},
|
||||||
|
|
||||||
|
16384, 0x4000, /* Memory probe size & offset values */
|
||||||
|
},
|
||||||
|
|
||||||
|
/* G200WB */
|
||||||
|
[16] = { 0, 1, 0, 0, 1, 0, 0, 0, new_BARs,
|
||||||
|
(TRANSC_SOLID_FILL | TWO_PASS_COLOR_EXPAND | USE_LINEAR_EXPANSION),
|
||||||
|
{
|
||||||
|
{ 50000, 230000 }, /* System VCO frequencies */
|
||||||
|
{ 50000, 203400 }, /* Pixel VCO frequencies */
|
||||||
|
{ 0, 0 }, /* Video VCO frequencies */
|
||||||
|
45000, /* Memory clock */
|
||||||
|
27050, /* PLL reference frequency */
|
||||||
|
0, /* Supports fast bitblt? */
|
||||||
|
MGA_HOST_PCI /* Host interface */
|
||||||
|
},
|
||||||
|
|
||||||
16384, 0x4000, /* Memory probe size & offset values */
|
16384, 0x4000, /* Memory probe size & offset values */
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -440,6 +456,8 @@ static const struct pci_id_match mga_device_match[] = {
|
|||||||
|
|
||||||
MGA_DEVICE_MATCH(PCI_CHIP_MGAG200_ER_PCI, 15 ),
|
MGA_DEVICE_MATCH(PCI_CHIP_MGAG200_ER_PCI, 15 ),
|
||||||
|
|
||||||
|
MGA_DEVICE_MATCH( PCI_CHIP_MGAG200_EW3_PCI, 16 ),
|
||||||
|
|
||||||
{ 0, 0, 0 },
|
{ 0, 0, 0 },
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
@ -459,6 +477,7 @@ static SymTabRec MGAChipsets[] = {
|
|||||||
{ PCI_CHIP_MGAG200_EV_PCI, "mgag200 EV Maxim" },
|
{ PCI_CHIP_MGAG200_EV_PCI, "mgag200 EV Maxim" },
|
||||||
{ PCI_CHIP_MGAG200_ER_PCI, "mgag200 ER SH7757" },
|
{ PCI_CHIP_MGAG200_ER_PCI, "mgag200 ER SH7757" },
|
||||||
{ PCI_CHIP_MGAG200_WINBOND_PCI, "mgag200 eW Nuvoton" },
|
{ PCI_CHIP_MGAG200_WINBOND_PCI, "mgag200 eW Nuvoton" },
|
||||||
|
{ PCI_CHIP_MGAG200_EW3_PCI, "mgag200 eW3 Nuvoton" },
|
||||||
{ PCI_CHIP_MGAG200_EH_PCI, "mgag200eH" },
|
{ PCI_CHIP_MGAG200_EH_PCI, "mgag200eH" },
|
||||||
{ PCI_CHIP_MGAG400, "mgag400" },
|
{ PCI_CHIP_MGAG400, "mgag400" },
|
||||||
{ PCI_CHIP_MGAG550, "mgag550" },
|
{ PCI_CHIP_MGAG550, "mgag550" },
|
||||||
@ -484,6 +503,8 @@ static PciChipsets MGAPciChipsets[] = {
|
|||||||
RES_SHARED_VGA },
|
RES_SHARED_VGA },
|
||||||
{ PCI_CHIP_MGAG200_WINBOND_PCI, PCI_CHIP_MGAG200_WINBOND_PCI,
|
{ PCI_CHIP_MGAG200_WINBOND_PCI, PCI_CHIP_MGAG200_WINBOND_PCI,
|
||||||
RES_SHARED_VGA },
|
RES_SHARED_VGA },
|
||||||
|
{ PCI_CHIP_MGAG200_EW3_PCI, PCI_CHIP_MGAG200_EW3_PCI,
|
||||||
|
RES_SHARED_VGA },
|
||||||
{ PCI_CHIP_MGAG200_EH_PCI, PCI_CHIP_MGAG200_EH_PCI,
|
{ PCI_CHIP_MGAG200_EH_PCI, PCI_CHIP_MGAG200_EH_PCI,
|
||||||
RES_SHARED_VGA },
|
RES_SHARED_VGA },
|
||||||
{ PCI_CHIP_MGAG400, PCI_CHIP_MGAG400, RES_SHARED_VGA },
|
{ PCI_CHIP_MGAG400, PCI_CHIP_MGAG400, RES_SHARED_VGA },
|
||||||
@ -923,6 +944,9 @@ MGAProbe(DriverPtr drv, int flags)
|
|||||||
attrib_no = 15;
|
attrib_no = 15;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PCI_CHIP_MGAG200_EW3_PCI:
|
||||||
|
attrib_no = 16;
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@ -1541,7 +1565,8 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
|
|||||||
pMga->is_G200SE = (pMga->Chipset == PCI_CHIP_MGAG200_SE_A_PCI)
|
pMga->is_G200SE = (pMga->Chipset == PCI_CHIP_MGAG200_SE_A_PCI)
|
||||||
|| (pMga->Chipset == PCI_CHIP_MGAG200_SE_B_PCI);
|
|| (pMga->Chipset == PCI_CHIP_MGAG200_SE_B_PCI);
|
||||||
pMga->is_G200EV = (pMga->Chipset == PCI_CHIP_MGAG200_EV_PCI);
|
pMga->is_G200EV = (pMga->Chipset == PCI_CHIP_MGAG200_EV_PCI);
|
||||||
pMga->is_G200WB = (pMga->Chipset == PCI_CHIP_MGAG200_WINBOND_PCI);
|
pMga->is_G200WB = (pMga->Chipset == PCI_CHIP_MGAG200_WINBOND_PCI)
|
||||||
|
|| (pMga->Chipset == PCI_CHIP_MGAG200_EW3_PCI);
|
||||||
pMga->is_G200EH = (pMga->Chipset == PCI_CHIP_MGAG200_EH_PCI);
|
pMga->is_G200EH = (pMga->Chipset == PCI_CHIP_MGAG200_EH_PCI);
|
||||||
pMga->is_G200ER = (pMga->Chipset == PCI_CHIP_MGAG200_ER_PCI);
|
pMga->is_G200ER = (pMga->Chipset == PCI_CHIP_MGAG200_ER_PCI);
|
||||||
|
|
||||||
@ -1911,14 +1936,12 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
|
|||||||
char *s = xf86GetOptValString(pMga->Options, OPTION_ACCELMETHOD);
|
char *s = xf86GetOptValString(pMga->Options, OPTION_ACCELMETHOD);
|
||||||
#endif
|
#endif
|
||||||
pMga->NoAccel = FALSE;
|
pMga->NoAccel = FALSE;
|
||||||
#ifdef USE_EXA
|
|
||||||
pMga->Exa = TRUE;
|
|
||||||
if (!xf86NameCmp(s, "XAA")) {
|
|
||||||
pMga->Exa = FALSE;
|
pMga->Exa = FALSE;
|
||||||
|
#ifdef USE_EXA
|
||||||
|
if (!xf86NameCmp(s, "EXA")) {
|
||||||
|
pMga->Exa = TRUE;
|
||||||
from = X_CONFIG;
|
from = X_CONFIG;
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
pMga->Exa = FALSE;
|
|
||||||
#endif
|
#endif
|
||||||
xf86DrvMsg(pScrn->scrnIndex, from, "Using %s acceleration\n",
|
xf86DrvMsg(pScrn->scrnIndex, from, "Using %s acceleration\n",
|
||||||
pMga->Exa ? "EXA" : "XAA");
|
pMga->Exa ? "EXA" : "XAA");
|
||||||
@ -2051,6 +2074,7 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
|
|||||||
case PCI_CHIP_MGAG200_SE_A_PCI:
|
case PCI_CHIP_MGAG200_SE_A_PCI:
|
||||||
case PCI_CHIP_MGAG200_SE_B_PCI:
|
case PCI_CHIP_MGAG200_SE_B_PCI:
|
||||||
case PCI_CHIP_MGAG200_WINBOND_PCI:
|
case PCI_CHIP_MGAG200_WINBOND_PCI:
|
||||||
|
case PCI_CHIP_MGAG200_EW3_PCI:
|
||||||
case PCI_CHIP_MGAG200_EV_PCI:
|
case PCI_CHIP_MGAG200_EV_PCI:
|
||||||
case PCI_CHIP_MGAG200_EH_PCI:
|
case PCI_CHIP_MGAG200_EH_PCI:
|
||||||
case PCI_CHIP_MGAG200_ER_PCI:
|
case PCI_CHIP_MGAG200_ER_PCI:
|
||||||
@ -2165,6 +2189,7 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
|
|||||||
case PCI_CHIP_MGAG200_SE_A_PCI:
|
case PCI_CHIP_MGAG200_SE_A_PCI:
|
||||||
case PCI_CHIP_MGAG200_SE_B_PCI:
|
case PCI_CHIP_MGAG200_SE_B_PCI:
|
||||||
case PCI_CHIP_MGAG200_WINBOND_PCI:
|
case PCI_CHIP_MGAG200_WINBOND_PCI:
|
||||||
|
case PCI_CHIP_MGAG200_EW3_PCI:
|
||||||
case PCI_CHIP_MGAG200_EV_PCI:
|
case PCI_CHIP_MGAG200_EV_PCI:
|
||||||
case PCI_CHIP_MGAG200_EH_PCI:
|
case PCI_CHIP_MGAG200_EH_PCI:
|
||||||
case PCI_CHIP_MGAG200_ER_PCI:
|
case PCI_CHIP_MGAG200_ER_PCI:
|
||||||
@ -2349,6 +2374,7 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
|
|||||||
case PCI_CHIP_MGAG200_PCI:
|
case PCI_CHIP_MGAG200_PCI:
|
||||||
case PCI_CHIP_MGAG200_SE_B_PCI:
|
case PCI_CHIP_MGAG200_SE_B_PCI:
|
||||||
case PCI_CHIP_MGAG200_WINBOND_PCI:
|
case PCI_CHIP_MGAG200_WINBOND_PCI:
|
||||||
|
case PCI_CHIP_MGAG200_EW3_PCI:
|
||||||
case PCI_CHIP_MGAG200_EV_PCI:
|
case PCI_CHIP_MGAG200_EV_PCI:
|
||||||
case PCI_CHIP_MGAG200_EH_PCI:
|
case PCI_CHIP_MGAG200_EH_PCI:
|
||||||
case PCI_CHIP_MGAG200_ER_PCI:
|
case PCI_CHIP_MGAG200_ER_PCI:
|
||||||
@ -2596,7 +2622,8 @@ MGAMapMem(ScrnInfoPtr pScrn)
|
|||||||
pciaddr_t fbsize = pMga->FbMapSize;
|
pciaddr_t fbsize = pMga->FbMapSize;
|
||||||
err = pci_device_map_range(dev,
|
err = pci_device_map_range(dev,
|
||||||
fbaddr, fbsize,
|
fbaddr, fbsize,
|
||||||
PCI_DEV_MAP_FLAG_WRITABLE,
|
PCI_DEV_MAP_FLAG_WRITABLE |
|
||||||
|
PCI_DEV_MAP_FLAG_WRITE_COMBINE,
|
||||||
(void **)&pMga->FbBase);
|
(void **)&pMga->FbBase);
|
||||||
|
|
||||||
if (err) {
|
if (err) {
|
||||||
@ -3827,7 +3854,7 @@ MGAValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode, Bool verbose, int flags)
|
|||||||
if (xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 244)
|
if (xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 244)
|
||||||
return MODE_BANDWIDTH;
|
return MODE_BANDWIDTH;
|
||||||
} else {
|
} else {
|
||||||
if (pMga->reg_1e24 >= 0x02) {
|
if (pMga->reg_1e24 == 0x02) {
|
||||||
if (mode->HDisplay > 1920)
|
if (mode->HDisplay > 1920)
|
||||||
return MODE_VIRTUAL_X;
|
return MODE_VIRTUAL_X;
|
||||||
if (mode->VDisplay > 1200)
|
if (mode->VDisplay > 1200)
|
||||||
@ -3839,12 +3866,15 @@ MGAValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode, Bool verbose, int flags)
|
|||||||
} else if (pMga->is_G200WB){
|
} else if (pMga->is_G200WB){
|
||||||
if (mode->Flags & V_DBLSCAN)
|
if (mode->Flags & V_DBLSCAN)
|
||||||
return MODE_NO_DBLESCAN;
|
return MODE_NO_DBLESCAN;
|
||||||
|
if (pMga->Chipset != PCI_CHIP_MGAG200_EW3_PCI)
|
||||||
|
{
|
||||||
if (pMga->KVM && mode->HDisplay > 1280)
|
if (pMga->KVM && mode->HDisplay > 1280)
|
||||||
return MODE_VIRTUAL_X;
|
return MODE_VIRTUAL_X;
|
||||||
if (pMga->KVM && mode->VDisplay > 1024)
|
if (pMga->KVM && mode->VDisplay > 1024)
|
||||||
return MODE_VIRTUAL_Y;
|
return MODE_VIRTUAL_Y;
|
||||||
if (xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 318.77)
|
if (xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 318.77)
|
||||||
return MODE_BANDWIDTH;
|
return MODE_BANDWIDTH;
|
||||||
|
}
|
||||||
} else if (pMga->is_G200EV
|
} else if (pMga->is_G200EV
|
||||||
&& (xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 327)) {
|
&& (xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 327)) {
|
||||||
return MODE_BANDWIDTH;
|
return MODE_BANDWIDTH;
|
||||||
|
@ -318,6 +318,11 @@ mgaGetTexFormat(PicturePtr pPict)
|
|||||||
static Bool
|
static Bool
|
||||||
mgaCheckSourceTexture(int tmu, PicturePtr pPict)
|
mgaCheckSourceTexture(int tmu, PicturePtr pPict)
|
||||||
{
|
{
|
||||||
|
if (!pPict->pDrawable) {
|
||||||
|
DEBUG_MSG(("Solid / gradient pictures not supported\n"));
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
int w = pPict->pDrawable->width;
|
int w = pPict->pDrawable->width;
|
||||||
int h = pPict->pDrawable->height;
|
int h = pPict->pDrawable->height;
|
||||||
|
|
||||||
@ -354,7 +359,7 @@ static Bool
|
|||||||
mgaCheckComposite(int op, PicturePtr pSrcPict, PicturePtr pMaskPict,
|
mgaCheckComposite(int op, PicturePtr pSrcPict, PicturePtr pMaskPict,
|
||||||
PicturePtr pDstPict)
|
PicturePtr pDstPict)
|
||||||
{
|
{
|
||||||
MGAPtr pMga = xf86ScreenToScrn(pSrcPict->pDrawable->pScreen)->driverPrivate;
|
MGAPtr pMga = xf86ScreenToScrn(pDstPict->pDrawable->pScreen)->driverPrivate;
|
||||||
|
|
||||||
if (op >= sizeof(mgaBlendOp) / sizeof(mgaBlendOp[0])) {
|
if (op >= sizeof(mgaBlendOp) / sizeof(mgaBlendOp[0])) {
|
||||||
DEBUG_MSG(("unsupported op %x\n", op));
|
DEBUG_MSG(("unsupported op %x\n", op));
|
||||||
@ -521,6 +526,7 @@ mgaPrepareComposite(int op, PicturePtr pSrcPict, PicturePtr pMaskPict,
|
|||||||
{
|
{
|
||||||
PMGA(pDst);
|
PMGA(pDst);
|
||||||
CARD32 fcol = 0xff000000, ds0 = 0, ds1 = 0, cmd, blendcntl;
|
CARD32 fcol = 0xff000000, ds0 = 0, ds1 = 0, cmd, blendcntl;
|
||||||
|
if (!pSrc || !pSrcPict->pDrawable) return FALSE;
|
||||||
|
|
||||||
mgaSetup(pMga, pDst, pDstPict, 2);
|
mgaSetup(pMga, pDst, pDstPict, 2);
|
||||||
OUTREG(MGAREG_DSTORG, exaGetPixmapOffset(pDst));
|
OUTREG(MGAREG_DSTORG, exaGetPixmapOffset(pDst));
|
||||||
@ -723,31 +729,6 @@ mgaUploadToScreen(PixmapPtr pDst, int x, int y, int w, int h,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Bool
|
|
||||||
mgaDownloadFromScreen(PixmapPtr pSrc, int x, int y, int w, int h,
|
|
||||||
char *dst, int dst_pitch)
|
|
||||||
{
|
|
||||||
PMGA(pSrc);
|
|
||||||
|
|
||||||
char *src = (char *) exaGetPixmapFirstPixel(pSrc);
|
|
||||||
int src_pitch = exaGetPixmapPitch(pSrc);
|
|
||||||
|
|
||||||
int cpp = (pSrc->drawable.bitsPerPixel + 7) / 8;
|
|
||||||
int bytes = w * cpp;
|
|
||||||
|
|
||||||
src += y * src_pitch + x * cpp;
|
|
||||||
|
|
||||||
QUIESCE_DMA(pSrc);
|
|
||||||
|
|
||||||
while (h--) {
|
|
||||||
memcpy (dst, src, bytes);
|
|
||||||
src += src_pitch;
|
|
||||||
dst += dst_pitch;
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
mgaWaitMarker(ScreenPtr pScreen, int marker)
|
mgaWaitMarker(ScreenPtr pScreen, int marker)
|
||||||
{
|
{
|
||||||
@ -886,7 +867,6 @@ mgaExaInit(ScreenPtr pScreen)
|
|||||||
pExa->Copy = mgaCopy;
|
pExa->Copy = mgaCopy;
|
||||||
pExa->DoneCopy = mgaNoopDone;
|
pExa->DoneCopy = mgaNoopDone;
|
||||||
|
|
||||||
#if 0
|
|
||||||
if (pMga->Chipset == PCI_CHIP_MGAG400 ||
|
if (pMga->Chipset == PCI_CHIP_MGAG400 ||
|
||||||
pMga->Chipset == PCI_CHIP_MGAG550) {
|
pMga->Chipset == PCI_CHIP_MGAG550) {
|
||||||
pExa->CheckComposite = mgaCheckComposite;
|
pExa->CheckComposite = mgaCheckComposite;
|
||||||
@ -896,8 +876,6 @@ mgaExaInit(ScreenPtr pScreen)
|
|||||||
}
|
}
|
||||||
|
|
||||||
pExa->UploadToScreen = mgaUploadToScreen;
|
pExa->UploadToScreen = mgaUploadToScreen;
|
||||||
pExa->DownloadFromScreen = mgaDownloadFromScreen;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef MGADRI
|
#ifdef MGADRI
|
||||||
if (pMga->directRenderingEnabled)
|
if (pMga->directRenderingEnabled)
|
||||||
|
@ -353,6 +353,7 @@ MGAPreInitMergedFB(ScrnInfoPtr pScrn1, int flags)
|
|||||||
case PCI_CHIP_MGAG200_SE_A_PCI:
|
case PCI_CHIP_MGAG200_SE_A_PCI:
|
||||||
case PCI_CHIP_MGAG200_SE_B_PCI:
|
case PCI_CHIP_MGAG200_SE_B_PCI:
|
||||||
case PCI_CHIP_MGAG200_WINBOND_PCI:
|
case PCI_CHIP_MGAG200_WINBOND_PCI:
|
||||||
|
case PCI_CHIP_MGAG200_EW3_PCI:
|
||||||
case PCI_CHIP_MGAG200_EV_PCI:
|
case PCI_CHIP_MGAG200_EV_PCI:
|
||||||
case PCI_CHIP_MGAG200_EH_PCI:
|
case PCI_CHIP_MGAG200_EH_PCI:
|
||||||
case PCI_CHIP_MGAG200_ER_PCI:
|
case PCI_CHIP_MGAG200_ER_PCI:
|
||||||
@ -505,6 +506,7 @@ MGAPreInitMergedFB(ScrnInfoPtr pScrn1, int flags)
|
|||||||
case PCI_CHIP_MGAG200_SE_A_PCI:
|
case PCI_CHIP_MGAG200_SE_A_PCI:
|
||||||
case PCI_CHIP_MGAG200_SE_B_PCI:
|
case PCI_CHIP_MGAG200_SE_B_PCI:
|
||||||
case PCI_CHIP_MGAG200_WINBOND_PCI:
|
case PCI_CHIP_MGAG200_WINBOND_PCI:
|
||||||
|
case PCI_CHIP_MGAG200_EW3_PCI:
|
||||||
case PCI_CHIP_MGAG200_EV_PCI:
|
case PCI_CHIP_MGAG200_EV_PCI:
|
||||||
case PCI_CHIP_MGAG200_EH_PCI:
|
case PCI_CHIP_MGAG200_EH_PCI:
|
||||||
case PCI_CHIP_MGAG200_ER_PCI:
|
case PCI_CHIP_MGAG200_ER_PCI:
|
||||||
|
@ -1148,6 +1148,7 @@ void MGAStormEngineInit( ScrnInfoPtr pScrn )
|
|||||||
case PCI_CHIP_MGAG200_SE_A_PCI:
|
case PCI_CHIP_MGAG200_SE_A_PCI:
|
||||||
case PCI_CHIP_MGAG200_SE_B_PCI:
|
case PCI_CHIP_MGAG200_SE_B_PCI:
|
||||||
case PCI_CHIP_MGAG200_WINBOND_PCI:
|
case PCI_CHIP_MGAG200_WINBOND_PCI:
|
||||||
|
case PCI_CHIP_MGAG200_EW3_PCI:
|
||||||
case PCI_CHIP_MGAG200_EV_PCI:
|
case PCI_CHIP_MGAG200_EV_PCI:
|
||||||
case PCI_CHIP_MGAG200_EH_PCI:
|
case PCI_CHIP_MGAG200_EH_PCI:
|
||||||
case PCI_CHIP_MGAG200_ER_PCI:
|
case PCI_CHIP_MGAG200_ER_PCI:
|
||||||
|
Loading…
Reference in New Issue
Block a user