Update to xf86-video-geode 2.11.19. tested on Geode LX (Alix 3C3).

This commit is contained in:
matthieu 2017-01-02 16:35:51 +00:00
parent c503a0e73b
commit f0c1142d0d
10 changed files with 192 additions and 16 deletions

View File

@ -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

View File

@ -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()

View File

@ -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\\"

View File

@ -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])

View File

@ -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

View File

@ -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);

View File

@ -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();

View File

@ -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;

View File

@ -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);

View File

@ -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;
}