summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthieu Herrb <matthieu@cvs.openbsd.org>2017-01-02 16:35:52 +0000
committerMatthieu Herrb <matthieu@cvs.openbsd.org>2017-01-02 16:35:52 +0000
commit339207d0ede4eacceb12a4f9b5ba9400b6a4a6e4 (patch)
tree4c7eae5ab6ef5280efcac0e042117f4cd6a33dea
parent36fe995dbb0193705bec5d90f06120615c131418 (diff)
Update to xf86-video-geode 2.11.19. tested on Geode LX (Alix 3C3).
-rw-r--r--driver/xf86-video-geode/ChangeLog102
-rw-r--r--driver/xf86-video-geode/aclocal.m41
-rwxr-xr-xdriver/xf86-video-geode/configure47
-rw-r--r--driver/xf86-video-geode/configure.ac2
-rw-r--r--driver/xf86-video-geode/src/compat-api.h5
-rw-r--r--driver/xf86-video-geode/src/geode.h8
-rw-r--r--driver/xf86-video-geode/src/geode_msr.c29
-rw-r--r--driver/xf86-video-geode/src/gx_accel.c7
-rw-r--r--driver/xf86-video-geode/src/lx_display.c4
-rw-r--r--driver/xf86-video-geode/src/lx_driver.c3
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;
}