diff options
author | Matthieu Herrb <matthieu@cvs.openbsd.org> | 2017-01-02 16:35:52 +0000 |
---|---|---|
committer | Matthieu Herrb <matthieu@cvs.openbsd.org> | 2017-01-02 16:35:52 +0000 |
commit | 339207d0ede4eacceb12a4f9b5ba9400b6a4a6e4 (patch) | |
tree | 4c7eae5ab6ef5280efcac0e042117f4cd6a33dea | |
parent | 36fe995dbb0193705bec5d90f06120615c131418 (diff) |
Update to xf86-video-geode 2.11.19. tested on Geode LX (Alix 3C3).
-rw-r--r-- | driver/xf86-video-geode/ChangeLog | 102 | ||||
-rw-r--r-- | driver/xf86-video-geode/aclocal.m4 | 1 | ||||
-rwxr-xr-x | driver/xf86-video-geode/configure | 47 | ||||
-rw-r--r-- | driver/xf86-video-geode/configure.ac | 2 | ||||
-rw-r--r-- | driver/xf86-video-geode/src/compat-api.h | 5 | ||||
-rw-r--r-- | driver/xf86-video-geode/src/geode.h | 8 | ||||
-rw-r--r-- | driver/xf86-video-geode/src/geode_msr.c | 29 | ||||
-rw-r--r-- | driver/xf86-video-geode/src/gx_accel.c | 7 | ||||
-rw-r--r-- | driver/xf86-video-geode/src/lx_display.c | 4 | ||||
-rw-r--r-- | driver/xf86-video-geode/src/lx_driver.c | 3 |
10 files changed, 192 insertions, 16 deletions
diff --git a/driver/xf86-video-geode/ChangeLog b/driver/xf86-video-geode/ChangeLog index fa385cb71..9067f4f2d 100644 --- a/driver/xf86-video-geode/ChangeLog +++ b/driver/xf86-video-geode/ChangeLog @@ -1,3 +1,105 @@ +commit ec3440ea602aa2c8fc826adfd921506aec60eb7d +Author: Martin-Éric Racine <martin-eric.racine@iki.fi> +Date: Sat Dec 10 15:18:28 2016 +0200 + + Geode 2.11.19 + + This release restores compatibility with xserver-1.19 and newer. + + VALIDATION PLATFORM + * Debian (X server 1.19.0) on FIC ION603A (Geode LX800). + + Signed-off-by: Martin-Éric Racine <martin-eric.racine@iki.fi> + +commit 4d27afae183123ad947416e98cb6cb62e20aeebe +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 9b04a4df4239e7e9414402f8522cb31728481a27 +Author: Martin-Éric Racine <martin-eric.racine@iki.fi> +Date: Wed Feb 3 20:38:37 2016 +0200 + + Geode 2.11.18 + + This release restores compatibility with xserver-1.18 and newer. + + Conditional support for the Geode MSR device on FreeBSD is merged. + + GX acceleration and compositing is upgraded to current standards. + + LX switching to VT and back is restored. Farewell blanks screens! + + VALIDATION PLATFORM + * Debian (X server 1.18.0) on FIC ION603A (Geode LX800). + + Signed-off-by: Martin-Éric Racine <martin-eric.racine@iki.fi> + +commit cecdf5085739649dc3b52e343c246f6c3c1dda4d +Author: Connor Behan <connor.behan@gmail.com> +Date: Tue Dec 1 18:45:59 2015 -0500 + + LX: Restore old VT switch code + + Calls for enabling and disabling outputs were removed from the VT switch + routine when RandR support was added. Presumably, this is because the + server already sets DPMS properly on a VT switch. However, DDX code can + undo what the server does so it seems best to keep the explicit calls. + + Closes: X.Org Bugzilla #80825 + + Signed-off-by: Connor Behan <connor.behan@gmail.com> + +commit 44c508916af7a6e59d898829faaec599dbd51f4a +Author: Arrigo Marchiori <ardovm@yahoo.it> +Date: Mon Sep 28 13:52:34 2015 +0300 + + Geode MSR support for FreeBSD + + The file src/geode_msr.c does not compile under FreeBSD. + The attached patch allows to compile the driver. + + Closes: Free Desktop Bug #92158 + + Signed-off-by: Arrigo Marchiori <ardovm@yahoo.it> + +commit aecb0803d318e8100d6024f34a96df225ff738aa +Author: Connor Behan <connor.behan@gmail.com> +Date: Thu Aug 27 01:09:53 2015 -0400 + + Fix GX UploadToScreen and DownloadFromScreen + + Even though most embedded drivers don't do it, there could be a slight + advantage on a single arch from reimplementing unaccelerated UTS and DFS + since the xserver avoids assembly. This does not remove them, it merely + updates them to work with the latest EXA. + + Signed-off-by: Connor Behan <connor.behan@gmail.com> + +commit d0d07108b7db4536ec12a45d5b7633b1abb22f60 +Author: Connor Behan <connor.behan@gmail.com> +Date: Tue Aug 25 23:32:29 2015 -0400 + + Fix GX composite hooks + + These need to fallback for solid and gradient pictures. + + Signed-off-by: Connor Behan <connor.behan@gmail.com> + +commit fc5d97e06c922de929017f676a58adf741770bc7 +Author: Matthew Green <mrg@NetBSD.org> +Date: Mon Jul 20 10:37:16 2015 +0200 + + Properly hide config.h inclusion inside HAVE_CONFIG_H. + + v2: make config.h inclusion the first one. + + Signed-off-by: Thomas Klausner <wiz@NetBSD.org> + Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com> + commit 97e53b5896752a7e504d0159a7009418e2510521 Author: Martin-Éric Racine <martin-eric.racine@iki.fi> Date: Wed May 20 11:24:30 2015 +0300 diff --git a/driver/xf86-video-geode/aclocal.m4 b/driver/xf86-video-geode/aclocal.m4 index 94e201bec..38ce71048 100644 --- a/driver/xf86-video-geode/aclocal.m4 +++ b/driver/xf86-video-geode/aclocal.m4 @@ -1294,6 +1294,7 @@ m4_if(m4_version_compare(vers_have, [$1]), -1, m4_undefine([vers_have]) m4_undefine([maj_have]) m4_undefine([maj_needed]) +AM_MAINTAINER_MODE ]) # XORG_MACROS_VERSION # XORG_PROG_RAWCPP() diff --git a/driver/xf86-video-geode/configure b/driver/xf86-video-geode/configure index b13767de7..447446aaa 100755 --- a/driver/xf86-video-geode/configure +++ b/driver/xf86-video-geode/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-geode 2.11.17. +# Generated by GNU Autoconf 2.69 for xf86-video-geode 2.11.19. # # Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg&component=Driver%2Fgeode>. # @@ -591,8 +591,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='xf86-video-geode' PACKAGE_TARNAME='xf86-video-geode' -PACKAGE_VERSION='2.11.17' -PACKAGE_STRING='xf86-video-geode 2.11.17' +PACKAGE_VERSION='2.11.19' +PACKAGE_STRING='xf86-video-geode 2.11.19' PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg&component=Driver%2Fgeode' PACKAGE_URL='http://www.x.org/wiki/GeodeDriver' @@ -1363,7 +1363,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-geode 2.11.17 to adapt to many kinds of systems. +\`configure' configures xf86-video-geode 2.11.19 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1434,7 +1434,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of xf86-video-geode 2.11.17:";; + short | recursive ) echo "Configuration of xf86-video-geode 2.11.19:";; esac cat <<\_ACEOF @@ -1570,7 +1570,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -xf86-video-geode configure 2.11.17 +xf86-video-geode configure 2.11.19 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1985,7 +1985,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-geode $as_me 2.11.17, which was +It was created by xf86-video-geode $as_me 2.11.19, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2816,7 +2816,7 @@ fi # Define the identity of the package. PACKAGE='xf86-video-geode' - VERSION='2.11.17' + VERSION='2.11.19' cat >>confdefs.h <<_ACEOF @@ -11463,6 +11463,29 @@ CC="$lt_save_CC" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 +$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } + # Check whether --enable-maintainer-mode was given. +if test "${enable_maintainer_mode+set}" = set; then : + enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval +else + USE_MAINTAINER_MODE=no +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 +$as_echo "$USE_MAINTAINER_MODE" >&6; } + if test $USE_MAINTAINER_MODE = yes; then + MAINTAINER_MODE_TRUE= + MAINTAINER_MODE_FALSE='#' +else + MAINTAINER_MODE_TRUE='#' + MAINTAINER_MODE_FALSE= +fi + + MAINT=$MAINTAINER_MODE_TRUE + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5 $as_echo_n "checking for $CC option to accept ISO C99... " >&6; } if ${ac_cv_prog_cc_c99+:} false; then : @@ -18391,6 +18414,10 @@ if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then + as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${BUILD_ZTV_TRUE}" && test -z "${BUILD_ZTV_FALSE}"; then as_fn_error $? "conditional \"BUILD_ZTV\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -18792,7 +18819,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-geode $as_me 2.11.17, which was +This file was extended by xf86-video-geode $as_me 2.11.19, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -18859,7 +18886,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-geode config.status 2.11.17 +xf86-video-geode config.status 2.11.19 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/driver/xf86-video-geode/configure.ac b/driver/xf86-video-geode/configure.ac index a819ccb88..ab403a75c 100644 --- a/driver/xf86-video-geode/configure.ac +++ b/driver/xf86-video-geode/configure.ac @@ -23,7 +23,7 @@ # Initialize Autoconf AC_PREREQ(2.60) AC_INIT([xf86-video-geode], - [2.11.17], + [2.11.19], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg&component=Driver%2Fgeode], [xf86-video-geode], [http://www.x.org/wiki/GeodeDriver]) diff --git a/driver/xf86-video-geode/src/compat-api.h b/driver/xf86-video-geode/src/compat-api.h index f8b841685..f6df9258c 100644 --- a/driver/xf86-video-geode/src/compat-api.h +++ b/driver/xf86-video-geode/src/compat-api.h @@ -89,8 +89,13 @@ #define SCREEN_INIT_ARGS_DECL ScreenPtr pScrn, 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 arg, pTimeout, pReadmask +#endif #define CLOSE_SCREEN_ARGS_DECL ScreenPtr pScrn #define CLOSE_SCREEN_ARGS pScrn diff --git a/driver/xf86-video-geode/src/geode.h b/driver/xf86-video-geode/src/geode.h index ac693687c..eb61c2853 100644 --- a/driver/xf86-video-geode/src/geode.h +++ b/driver/xf86-video-geode/src/geode.h @@ -27,8 +27,10 @@ #ifndef _GEODE_H_ #define _GEODE_H_ -#include "geode_pcirename.h" +#ifdef HAVE_CONFIG_H #include "config.h" +#endif +#include "geode_pcirename.h" #ifdef HAVE_XAA_H #include "xaa.h" @@ -439,6 +441,10 @@ void GXAccelSync(ScrnInfoPtr pScrni); /* gx_video.c */ void GXInitVideo(ScreenPtr pScrn); +/* lx_display.c */ +void lx_enable_dac_power(ScrnInfoPtr pScrni, int option); +void lx_disable_dac_power(ScrnInfoPtr pScrni, int option); + /* lx_driver.c */ void LXSetupChipsetFPtr(ScrnInfoPtr pScrn); diff --git a/driver/xf86-video-geode/src/geode_msr.c b/driver/xf86-video-geode/src/geode_msr.c index 8f579392f..8cecb3094 100644 --- a/driver/xf86-video-geode/src/geode_msr.c +++ b/driver/xf86-video-geode/src/geode_msr.c @@ -39,12 +39,19 @@ #include <machine/amdmsr.h> #endif +#ifdef __FreeBSD__ +#include <sys/ioctl.h> +#include <sys/cpuctl.h> +#endif + #include "os.h" #include "geode.h" #ifdef __OpenBSD__ #define _PATH_MSRDEV "/dev/amdmsr" #define X_PRIVSEP +#elif defined __FreeBSD__ +#define _PATH_MSRDEV "/dev/cpuctl0" #else #define _PATH_MSRDEV "/dev/cpu/0/msr" #endif @@ -83,6 +90,18 @@ GeodeReadMSR(unsigned long addr, unsigned long *lo, unsigned long *hi) *hi = req.val >> 32; *lo = req.val & 0xffffffff; +#elif defined __FreeBSD__ + cpuctl_msr_args_t args; + int fd = _msr_open(); + + args.msr = addr; + + if (ioctl(fd, CPUCTL_RDMSR, &args) == -1) + FatalError("Unable to read MSR at address %0x06x: %s\n", addr, + strerror(errno)); + + *hi = args.data >> 32; + *lo = args.data & 0xffffffff; #else unsigned int data[2]; int fd = _msr_open(); @@ -120,6 +139,16 @@ GeodeWriteMSR(unsigned long addr, unsigned long lo, unsigned long hi) if (ioctl(fd, WRMSR, &req) == -1) FatalError("Unable to write MSR at address 0x%06x: %s\n", addr, strerror(errno)); +#elif defined __FreeBSD__ + cpuctl_msr_args_t args; + int fd = _msr_open(); + + args.msr = addr; + args.data = (u_int64_t) hi << 32 | (u_int64_t)lo; + + if (ioctl(fd, CPUCTL_WRMSR, &args) == -1) + FatalError("Unable to write MSR at address 0x%06x: %s\n", addr, + strerror(errno)); #else unsigned int data[2]; int fd = _msr_open(); diff --git a/driver/xf86-video-geode/src/gx_accel.c b/driver/xf86-video-geode/src/gx_accel.c index c3b3bc470..41fb7ece5 100644 --- a/driver/xf86-video-geode/src/gx_accel.c +++ b/driver/xf86-video-geode/src/gx_accel.c @@ -1489,7 +1489,8 @@ static Bool amd_gx_exa_UploadToScreen(PixmapPtr pDst, int x, int y, int w, int h, char *src, int src_pitch) { - char *dst = pDst->devPrivate.ptr; + GeodeRec *pGeode = GEODEPTR_FROM_PIXMAP(pDst); + char *dst = pGeode->pExa->memoryBase + exaGetPixmapOffset(pDst); int dst_pitch = exaGetPixmapPitch(pDst); int bpp = pDst->drawable.bitsPerPixel; @@ -1504,7 +1505,8 @@ static Bool amd_gx_exa_DownloadFromScreen(PixmapPtr pSrc, int x, int y, int w, int h, char *dst, int dst_pitch) { - char *src = pSrc->devPrivate.ptr; + GeodeRec *pGeode = GEODEPTR_FROM_PIXMAP(pSrc); + char *src = pGeode->pExa->memoryBase + exaGetPixmapOffset(pSrc); int src_pitch = exaGetPixmapPitch(pSrc); int bpp = pSrc->drawable.bitsPerPixel; @@ -1740,6 +1742,7 @@ amd_gx_exa_PrepareComposite(int op, PicturePtr pSrc, PicturePtr pMsk, PixmapPtr pxDst) { int srcPitch; + if (!pxSrc || !pSrc->pDrawable) return FALSE; GeodeRec *pGeode = GEODEPTR_FROM_PIXMAP(pxDst); amd_gx_exa_fmt_t *sfp, *dfp; diff --git a/driver/xf86-video-geode/src/lx_display.c b/driver/xf86-video-geode/src/lx_display.c index 997d53d26..6315f9f14 100644 --- a/driver/xf86-video-geode/src/lx_display.c +++ b/driver/xf86-video-geode/src/lx_display.c @@ -39,7 +39,7 @@ typedef struct _LXOutputPrivateRec { GeodeMemPtr rotate_mem; } LXCrtcPrivateRec, *LXCrtcPrivatePtr; -static void +void lx_enable_dac_power(ScrnInfoPtr pScrni, int option) { GeodeRec *pGeode = GEODEPTR(pScrni); @@ -59,7 +59,7 @@ lx_enable_dac_power(ScrnInfoPtr pScrni, int option) df_set_panel_enable(1); } -static void +void lx_disable_dac_power(ScrnInfoPtr pScrni, int option) { GeodeRec *pGeode = GEODEPTR(pScrni); diff --git a/driver/xf86-video-geode/src/lx_driver.c b/driver/xf86-video-geode/src/lx_driver.c index 5583888b5..8c61eae5e 100644 --- a/driver/xf86-video-geode/src/lx_driver.c +++ b/driver/xf86-video-geode/src/lx_driver.c @@ -689,6 +689,8 @@ LXLeaveGraphics(ScrnInfoPtr pScrni) gp_wait_until_idle(); + lx_disable_dac_power(pScrni, DF_CRT_DISABLE); + vg_set_custom_mode(&(pGeode->FBcimdisplaytiming.vgDisplayMode), pGeode->FBcimdisplaytiming.wBpp); @@ -717,6 +719,7 @@ LXLeaveGraphics(ScrnInfoPtr pScrni) vg_delay_milliseconds(3); } + lx_enable_dac_power(pScrni, 1); pScrni->vtSema = FALSE; } |