Compare commits

..

3 Commits

Author SHA1 Message Date
Egbert Eich
010b0aa643 18. Merged in XFree86 code up to 4.4.0 including changes to files that had
a changed license. There was only one change which happened to be from
    me (Egbert Eich).
2004-03-04 17:47:43 +00:00
Kaleb Keithley
b058394c8c merge most of XFree86 RC3 (4.3.99.903) from vendor branch. bug #214 2004-02-23 21:35:28 +00:00
Kaleb Keithley
bacb9bacd1 merge latest (4.3.99.16) from XFree86 (vendor) branch 2003-11-26 22:48:59 +00:00
10 changed files with 138 additions and 632 deletions

23
.gitignore vendored
View File

@@ -1,23 +0,0 @@
.deps
.libs
Makefile
Makefile.in
*~
*.la
*.lo
aclocal.m4
autom4te.cache
config.guess
config.h
config.h.in
config.log
config.status
config.sub
configure
depcomp
fbdev.4
install-sh
libtool
ltmain.sh
missing
stamp-h1

23
COPYING
View File

@@ -1,23 +0,0 @@
Copyright (C) 1994-2003 The XFree86 Project, Inc. All Rights Reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is fur-
nished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON-
NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of the XFree86 Project shall not
be used in advertising or otherwise to promote the sale, use or other deal-
ings in this Software without prior written authorization from the XFree86
Project.

View File

@@ -1,66 +0,0 @@
2006-05-19 Adam Jackson <ajax@freedesktop.org>
* configure.ac:
* src/fbdev.c:
Bump to 0.3.0
2006-05-18 Kevin E. Martin <kem-at-freedesktop-dot-org>
* src/fbdev.c: (FBDevShadowInit), (FBDevScreenInit),
(FBDevCloseScreen):
Fix ShadowFB support to work with recent miext/shadow changes from
bug #5460 (Kevin Martin), and apply fix for miext/shadow crasher
https://bugs.freedesktop.org/show_bug.cgi?id=6940 (Kristian
Hoegsberg).
2006-04-06 Adam Jackson <ajax@freedesktop.org>
* configure.ac:
* src/fbdev.c:
Unlibcwrap. Bump server version requirement. Bump to 0.2.0.
2006-01-09 David Nusinow <gravity-at-freedesktop-dot-org>
* man/fbdev.man:
Convert manpage to utf-8
Bugzilla #1925 <https://bugs.freedesktop.org/show_bug.cgi?id=1925>
2005-12-20 Kevin E. Martin <kem-at-freedesktop-dot-org>
* configure.ac:
Update package version for X11R7 release.
2005-12-14 Kevin E. Martin <kem-at-freedesktop-dot-org>
* configure.ac:
Update package version number for final X11R7 release candidate.
2005-12-06 Kevin E. Martin <kem-at-freedesktop-dot-org>
* man/Makefile.am:
Change *man_SOURCES ==> *man_PRE to fix autotools warnings.
2005-12-03 Kevin E. Martin <kem-at-freedesktop-dot-org>
* configure.ac:
Update package version number for X11R7 RC3 release.
2005-12-01 Kevin E. Martin <kem-at-freedesktop-dot-org>
* configure.ac:
Remove extraneous AC_MSG_RESULT.
2005-11-29 Adam Jackson <ajax@freedesktop.org>
* configure.ac:
Only build dlloader modules by default.
2005-11-09 Kevin E. Martin <kem-at-freedesktop-dot-org>
* configure.ac:
Update package version number for X11R7 RC2 release.
2005-11-01 Kevin E. Martin <kem-at-freedesktop-dot-org>
* configure.ac:
Update pkgcheck dependencies to work with separate build roots.

View File

@@ -1,22 +0,0 @@
# Copyright 2005 Adam Jackson.
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# on the rights to use, copy, modify, merge, publish, distribute, sub
# license, and/or sell copies of the Software, and to permit persons to whom
# the Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice (including the next
# paragraph) shall be included in all copies or substantial portions of the
# Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
# ADAM JACKSON BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
AUTOMAKE_OPTIONS = foreign
SUBDIRS = src man

View File

@@ -1,12 +0,0 @@
#! /bin/sh
srcdir=`dirname $0`
test -z "$srcdir" && srcdir=.
ORIGDIR=`pwd`
cd $srcdir
autoreconf -v --install || exit 1
cd $ORIGDIR || exit $?
$srcdir/configure --enable-maintainer-mode "$@"

View File

@@ -1,87 +0,0 @@
# Copyright 2005 Adam Jackson.
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# on the rights to use, copy, modify, merge, publish, distribute, sub
# license, and/or sell copies of the Software, and to permit persons to whom
# the Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice (including the next
# paragraph) shall be included in all copies or substantial portions of the
# Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
# ADAM JACKSON BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
# Process this file with autoconf to produce a configure script
AC_PREREQ(2.57)
AC_INIT([xf86-video-fbdev],
0.4.0,
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
xf86-video-fbdev)
AC_CONFIG_SRCDIR([Makefile.am])
AM_CONFIG_HEADER([config.h])
AC_CONFIG_AUX_DIR(.)
AM_INIT_AUTOMAKE([dist-bzip2])
AM_MAINTAINER_MODE
# Checks for programs.
AC_DISABLE_STATIC
AC_PROG_LIBTOOL
AC_PROG_CC
AH_TOP([#include "xorg-server.h"])
AC_ARG_WITH(xorg-module-dir,
AC_HELP_STRING([--with-xorg-module-dir=DIR],
[Default xorg module directory [[default=$libdir/xorg/modules]]]),
[moduledir="$withval"],
[moduledir="$libdir/xorg/modules"])
AC_ARG_ENABLE(pciaccess, AS_HELP_STRING([--enable-pciaccess],
[Enable use of libpciaccess (default: disabled)]),
[PCIACCESS=$enableval], [PCIACCESS=no])
# Checks for extensions
XORG_DRIVER_CHECK_EXT(RANDR, randrproto)
XORG_DRIVER_CHECK_EXT(RENDER, renderproto)
XORG_DRIVER_CHECK_EXT(XV, videoproto)
# Checks for pkg-config packages
PKG_CHECK_MODULES(XORG, [xorg-server >= 1.0.99.901 xproto fontsproto $REQUIRED_MODULES])
sdkdir=$(pkg-config --variable=sdkdir xorg-server)
AM_CONDITIONAL(PCIACCESS, [test "x$PCIACCESS" = xyes])
if test "x$PCIACCESS" = xyes; then
AC_DEFINE(PCIACCESS, 1, [Use libpciaccess])
PKG_CHECK_MODULES([PCIACCESS], [pciaccess >= 0.8.0])
XORG_CFLAGS="$XORG_CFLAGS $PCIACCESS_CFLAGS"
fi
# Checks for libraries.
# Checks for header files.
AC_HEADER_STDC
AC_SUBST([XORG_CFLAGS])
AC_SUBST([moduledir])
DRIVER_NAME=fbdev
AC_SUBST([DRIVER_NAME])
XORG_MANPAGE_SECTIONS
XORG_RELEASE_VERSION
AC_OUTPUT([
Makefile
src/Makefile
man/Makefile
])

View File

@@ -1,59 +0,0 @@
# $Id$
#
# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
#
# Permission to use, copy, modify, distribute, and sell this software and its
# documentation for any purpose is hereby granted without fee, provided that
# the above copyright notice appear in all copies and that both that
# copyright notice and this permission notice appear in supporting
# documentation.
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
# IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.
#
# Except as contained in this notice, the name of the copyright holders shall
# not be used in advertising or otherwise to promote the sale, use or
# other dealings in this Software without prior written authorization
# from the copyright holders.
#
drivermandir = $(DRIVER_MAN_DIR)
driverman_PRE = @DRIVER_NAME@.man
driverman_DATA = $(driverman_PRE:man=@DRIVER_MAN_SUFFIX@)
EXTRA_DIST = @DRIVER_NAME@.man
CLEANFILES = $(driverman_DATA)
SED = sed
# Strings to replace in man pages
XORGRELSTRING = @PACKAGE_STRING@
XORGMANNAME = X Version 11
MAN_SUBSTS = \
-e 's|__vendorversion__|"$(XORGRELSTRING)" "$(XORGMANNAME)"|' \
-e 's|__xorgversion__|"$(XORGRELSTRING)" "$(XORGMANNAME)"|' \
-e 's|__xservername__|Xorg|g' \
-e 's|__xconfigfile__|xorg.conf|g' \
-e 's|__projectroot__|$(prefix)|g' \
-e 's|__appmansuffix__|$(APP_MAN_SUFFIX)|g' \
-e 's|__drivermansuffix__|$(DRIVER_MAN_SUFFIX)|g' \
-e 's|__adminmansuffix__|$(ADMIN_MAN_SUFFIX)|g' \
-e 's|__miscmansuffix__|$(MISC_MAN_SUFFIX)|g' \
-e 's|__filemansuffix__|$(FILE_MAN_SUFFIX)|g'
SUFFIXES = .$(DRIVER_MAN_SUFFIX) .man
.man.$(DRIVER_MAN_SUFFIX):
sed $(MAN_SUBSTS) < $< > $@

View File

@@ -15,7 +15,7 @@ fbdev \- video driver for framebuffer device
.fi
.SH DESCRIPTION
.B fbdev
is an __xservername__ driver for framebuffer devices. This is a non-accelerated
is an XFree86 driver for framebuffer devices. This is a non-accelerated
driver, the following framebuffer depths are supported: 8, 15, 16, 24.
All visual types are supported for depth 8, and TrueColor visual is
supported for the other depths. Multi-head configurations are supported.
@@ -27,7 +27,7 @@ fbdev uses the os-specific submodule fbdevhw(__drivermansuffix__) to talk
to the kernel
device driver. Currently a fbdevhw module is available for linux.
.SH CONFIGURATION DETAILS
Please refer to __xconfigfile__(__filemansuffix__) for general configuration
Please refer to XF86Config(__filemansuffix__) for general configuration
details. This section only covers configuration details specific to
this driver.
.PP
@@ -38,8 +38,7 @@ driver can pick up the currently used video mode from the framebuffer
driver and will use it if there are no video modes configured.
.PP
For PCI boards you might have to add a BusID line to the Device
section. See above for a sample line. You can use \*q\__xservername__
-scanpci\*q
section. See above for a sample line. You can use "XFree86 -scanpci"
to figure out the correct values.
.PP
The following driver
@@ -57,7 +56,7 @@ Enable rotation of the display. The supported values are "CW" (clockwise,
90 degrees), "UD" (upside down, 180 degrees) and "CCW" (counter clockwise,
270 degrees). Implies use of the shadow framebuffer layer. Default: off.
.SH "SEE ALSO"
__xservername__(__appmansuffix__), __xconfigfile__(__filemansuffix__), xorgconfig(__appmansuffix__), Xserver(__appmansuffix__),
XFree86(1), XF86Config(__filemansuffix__), xf86config(1), Xserver(1),
X(__miscmansuffix__), fbdevhw(__drivermansuffix__)
.SH AUTHORS
Authors include: Gerd Knorr, Michel D\(:anzer, Geert Uytterhoeven
Authors include: Gerd Knorr, Michel Dänzer, Geert Uytterhoeven

View File

@@ -1,32 +0,0 @@
# Copyright 2005 Adam Jackson.
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# on the rights to use, copy, modify, merge, publish, distribute, sub
# license, and/or sell copies of the Software, and to permit persons to whom
# the Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice (including the next
# paragraph) shall be included in all copies or substantial portions of the
# Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
# ADAM JACKSON BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# this is obnoxious:
# -module lets us name the module exactly how we want
# -avoid-version prevents gratuitous .0.0.0 version numbers on the end
# _ladir passes a dummy rpath to libtool so the thing will actually link
# TODO: -nostdlib/-Bstatic/-lgcc platform magic, not installing the .a, etc.
AM_CFLAGS = @XORG_CFLAGS@
fbdev_drv_la_LTLIBRARIES = fbdev_drv.la
fbdev_drv_la_LDFLAGS = -module -avoid-version
fbdev_drv_ladir = @moduledir@/drivers
fbdev_drv_la_SOURCES = \
fbdev.c

View File

@@ -1,17 +1,14 @@
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/fbdev/fbdev.c,v 1.44 2003/09/24 02:43:21 dawes Exp $ */
/*
* Authors: Alan Hourihane, <alanh@fairlite.demon.co.uk>
* Michel Dänzer, <michel@tungstengraphics.com>
* Michel Dänzer, <michdaen@iiic.ethz.ch>
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <string.h>
/* all driver need this */
#include "xf86.h"
#include "xf86_OSproc.h"
#include "xf86_ansic.h"
#include "mipointer.h"
#include "mibstore.h"
@@ -34,29 +31,24 @@
#include "xf86xv.h"
#ifdef XSERVER_LIBPCIACCESS
#include <pciaccess.h>
#define DEBUG 0
#if DEBUG
# define TRACE_ENTER(str) ErrorF("fbdev: " str " %d\n",pScrn->scrnIndex)
# define TRACE_EXIT(str) ErrorF("fbdev: " str " done\n")
# define TRACE(str) ErrorF("fbdev trace: " str "\n")
#else
# define TRACE_ENTER(str)
# define TRACE_EXIT(str)
# define TRACE(str)
#endif
static Bool debug = 0;
#define TRACE_ENTER(str) \
do { if (debug) ErrorF("fbdev: " str " %d\n",pScrn->scrnIndex); } while (0)
#define TRACE_EXIT(str) \
do { if (debug) ErrorF("fbdev: " str " done\n"); } while (0)
#define TRACE(str) \
do { if (debug) ErrorF("fbdev trace: " str "\n"); } while (0)
/* -------------------------------------------------------------------- */
/* prototypes */
static const OptionInfoRec * FBDevAvailableOptions(int chipid, int busid);
static void FBDevIdentify(int flags);
static Bool FBDevProbe(DriverPtr drv, int flags);
#ifdef XSERVER_LIBPCIACCESS
static Bool FBDevPciProbe(DriverPtr drv, int entity_num,
struct pci_device *dev, intptr_t match_data);
#endif
static Bool FBDevPreInit(ScrnInfoPtr pScrn, int flags);
static Bool FBDevScreenInit(int Index, ScreenPtr pScreen, int argc,
char **argv);
@@ -65,12 +57,15 @@ static void * FBDevWindowLinear(ScreenPtr pScreen, CARD32 row, CARD32 offset, in
CARD32 *size, void *closure);
static void FBDevPointerMoved(int index, int x, int y);
static Bool FBDevDGAInit(ScrnInfoPtr pScrn, ScreenPtr pScreen);
static Bool FBDevDriverFunc(ScrnInfoPtr pScrn, xorgDriverFuncOp op,
pointer ptr);
enum { FBDEV_ROTATE_NONE=0, FBDEV_ROTATE_CW=270, FBDEV_ROTATE_UD=180, FBDEV_ROTATE_CCW=90 };
/*static ShadowUpdateProc updateFuncs[] =
{ shadowUpdatePacked, shadowUpdateRotate8_270, shadowUpdateRotate8_180, shadowUpdateRotate8_90,
shadowUpdatePacked, shadowUpdateRotate16_270, shadowUpdateRotate16_180, shadowUpdateRotate16_90,
shadowUpdatePacked, shadowUpdateRotate32_270, shadowUpdateRotate32_180, shadowUpdateRotate32_90 }; */
/* -------------------------------------------------------------------- */
@@ -80,23 +75,14 @@ enum { FBDEV_ROTATE_NONE=0, FBDEV_ROTATE_CW=270, FBDEV_ROTATE_UD=180, FBDEV_ROTA
*/
static int pix24bpp = 0;
#define FBDEV_VERSION 4000
#define VERSION 4000
#define FBDEV_NAME "FBDEV"
#define FBDEV_DRIVER_NAME "fbdev"
#define FBDEV_MAJOR_VERSION 0
#define FBDEV_MINOR_VERSION 1
#ifdef XSERVER_LIBPCIACCESS
static const struct pci_id_match fbdev_device_match[] = {
{
PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_MATCH_ANY,
0x00030000, 0x00ffffff, 0
},
{ 0, 0, 0 },
};
#endif
_X_EXPORT DriverRec FBDEV = {
FBDEV_VERSION,
DriverRec FBDEV = {
VERSION,
FBDEV_DRIVER_NAME,
#if 0
"driver for linux framebuffer devices",
@@ -105,13 +91,7 @@ _X_EXPORT DriverRec FBDEV = {
FBDevProbe,
FBDevAvailableOptions,
NULL,
0,
FBDevDriverFunc,
#ifdef XSERVER_LIBPCIACCESS
fbdev_device_match,
FBDevPciProbe
#endif
0
};
/* Supported "chipsets" */
@@ -127,15 +107,13 @@ static SymTabRec FBDevChipsets[] = {
typedef enum {
OPTION_SHADOW_FB,
OPTION_ROTATE,
OPTION_FBDEV,
OPTION_DEBUG
OPTION_FBDEV
} FBDevOpts;
static const OptionInfoRec FBDevOptions[] = {
{ OPTION_SHADOW_FB, "ShadowFB", OPTV_BOOLEAN, {0}, FALSE },
{ OPTION_ROTATE, "Rotate", OPTV_STRING, {0}, FALSE },
{ OPTION_FBDEV, "fbdev", OPTV_STRING, {0}, FALSE },
{ OPTION_DEBUG, "debug", OPTV_BOOLEAN, {0}, FALSE },
{ -1, NULL, OPTV_NONE, {0}, FALSE }
};
@@ -155,12 +133,11 @@ static const char *fbSymbols[] = {
static const char *shadowSymbols[] = {
"shadowAdd",
"shadowAlloc",
"shadowInit",
"shadowSetup",
"shadowUpdatePacked",
"shadowUpdatePackedWeak",
"shadowUpdateRotatePacked",
"shadowUpdateRotatePackedWeak",
NULL
};
@@ -181,23 +158,20 @@ static const char *fbdevHWSymbols[] = {
"fbdevHWUnmapVidmem",
/* colormap */
"fbdevHWLoadPalette",
"fbdevHWLoadPaletteWeak",
"fbdevHWLoadpalette",
/* ScrnInfo hooks */
"fbdevHWAdjustFrameWeak",
"fbdevHWEnterVTWeak",
"fbdevHWLeaveVTWeak",
"fbdevHWAdjustFrame",
"fbdevHWEnterVT",
"fbdevHWLeaveVT",
"fbdevHWModeInit",
"fbdevHWRestore",
"fbdevHWSave",
"fbdevHWSaveScreen",
"fbdevHWSaveScreenWeak",
"fbdevHWSwitchModeWeak",
"fbdevHWValidModeWeak",
"fbdevHWSwitchMode",
"fbdevHWValidMode",
"fbdevHWDPMSSet",
"fbdevHWDPMSSetWeak",
NULL
};
@@ -212,15 +186,15 @@ static XF86ModuleVersionInfo FBDevVersRec =
MODULEVENDORSTRING,
MODINFOSTRING1,
MODINFOSTRING2,
XORG_VERSION_CURRENT,
PACKAGE_VERSION_MAJOR, PACKAGE_VERSION_MINOR, PACKAGE_VERSION_PATCHLEVEL,
XF86_VERSION_CURRENT,
FBDEV_MAJOR_VERSION, FBDEV_MINOR_VERSION, 0,
ABI_CLASS_VIDEODRV,
ABI_VIDEODRV_VERSION,
NULL,
{0,0,0,0}
};
_X_EXPORT XF86ModuleData fbdevModuleData = { &FBDevVersRec, FBDevSetup, NULL };
XF86ModuleData fbdevModuleData = { &FBDevVersRec, FBDevSetup, NULL };
pointer
FBDevSetup(pointer module, pointer opts, int *errmaj, int *errmin)
@@ -229,7 +203,7 @@ FBDevSetup(pointer module, pointer opts, int *errmaj, int *errmin)
if (!setupDone) {
setupDone = TRUE;
xf86AddDriver(&FBDEV, module, HaveDriverFuncs);
xf86AddDriver(&FBDEV, module, 0);
LoaderRefSymLists(afbSymbols, fbSymbols,
shadowSymbols, fbdevHWSymbols, NULL);
return (pointer)1;
@@ -249,11 +223,10 @@ typedef struct {
unsigned char* fbmem;
int fboff;
int lineLength;
unsigned char* shadowmem;
int rotate;
Bool shadowFB;
void *shadow;
CloseScreenProcPtr CloseScreen;
CreateScreenResourcesProcPtr CreateScreenResources;
void (*PointerMoved)(int index, int x, int y);
EntityInfoPtr pEnt;
/* DGA info */
@@ -297,55 +270,6 @@ FBDevIdentify(int flags)
xf86PrintChipsets(FBDEV_NAME, "driver for framebuffer", FBDevChipsets);
}
#ifdef XSERVER_LIBPCIACCESS
static Bool FBDevPciProbe(DriverPtr drv, int entity_num,
struct pci_device *dev, intptr_t match_data)
{
ScrnInfoPtr pScrn = NULL;
if (!xf86LoadDrvSubModule(drv, "fbdevhw"))
return FALSE;
xf86LoaderReqSymLists(fbdevHWSymbols, NULL);
pScrn = xf86ConfigPciEntity(NULL, 0, entity_num, NULL, NULL,
NULL, NULL, NULL, NULL);
if (pScrn) {
char *device;
GDevPtr devSection = xf86GetDevFromEntity(pScrn->entityList[0],
pScrn->entityInstanceList[0]);
device = xf86FindOptionValue(devSection->options, "fbdev");
if (fbdevHWProbe(NULL, device, NULL)) {
pScrn->driverVersion = FBDEV_VERSION;
pScrn->driverName = FBDEV_DRIVER_NAME;
pScrn->name = FBDEV_NAME;
pScrn->Probe = FBDevProbe;
pScrn->PreInit = FBDevPreInit;
pScrn->ScreenInit = FBDevScreenInit;
pScrn->SwitchMode = fbdevHWSwitchModeWeak();
pScrn->AdjustFrame = fbdevHWAdjustFrameWeak();
pScrn->EnterVT = fbdevHWEnterVTWeak();
pScrn->LeaveVT = fbdevHWLeaveVTWeak();
pScrn->ValidMode = fbdevHWValidModeWeak();
xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
"claimed PCI slot %d@%d:%d:%d\n",
dev->bus, dev->domain, dev->dev, dev->func);
xf86DrvMsg(pScrn->scrnIndex, X_INFO,
"using %s\n", device ? device : "default device");
}
else {
pScrn = NULL;
}
}
return (pScrn != NULL);
}
#endif
static Bool
FBDevProbe(DriverPtr drv, int flags)
{
@@ -373,27 +297,21 @@ FBDevProbe(DriverPtr drv, int flags)
for (i = 0; i < numDevSections; i++) {
Bool isIsa = FALSE;
#ifndef XSERVER_LIBPCIACCESS
Bool isPci = FALSE;
#endif
dev = xf86FindOptionValue(devSections[i]->options,"fbdev");
if (devSections[i]->busID) {
#ifndef XSERVER_LIBPCIACCESS
if (xf86ParsePciBusString(devSections[i]->busID,&bus,&device,
&func)) {
if (!xf86CheckPciSlot(bus,device,func))
continue;
isPci = TRUE;
} else
#endif
if (xf86ParseIsaBusString(devSections[i]->busID))
} else if (xf86ParseIsaBusString(devSections[i]->busID))
isIsa = TRUE;
}
if (fbdevHWProbe(NULL,dev,NULL)) {
pScrn = NULL;
#ifndef XSERVER_LIBPCIACCESS
if (isPci) {
/* XXX what about when there's no busID set? */
int entity;
@@ -410,9 +328,7 @@ FBDevProbe(DriverPtr drv, int flags)
xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
"claimed PCI slot %d:%d:%d\n",bus,device,func);
} else
#endif
if (isIsa) {
} else if (isIsa) {
int entity;
entity = xf86ClaimIsaSlot(drv, 0,
@@ -432,17 +348,17 @@ FBDevProbe(DriverPtr drv, int flags)
if (pScrn) {
foundScreen = TRUE;
pScrn->driverVersion = FBDEV_VERSION;
pScrn->driverVersion = VERSION;
pScrn->driverName = FBDEV_DRIVER_NAME;
pScrn->name = FBDEV_NAME;
pScrn->Probe = FBDevProbe;
pScrn->PreInit = FBDevPreInit;
pScrn->ScreenInit = FBDevScreenInit;
pScrn->SwitchMode = fbdevHWSwitchModeWeak();
pScrn->AdjustFrame = fbdevHWAdjustFrameWeak();
pScrn->EnterVT = fbdevHWEnterVTWeak();
pScrn->LeaveVT = fbdevHWLeaveVTWeak();
pScrn->ValidMode = fbdevHWValidModeWeak();
pScrn->SwitchMode = fbdevHWSwitchMode;
pScrn->AdjustFrame = fbdevHWAdjustFrame;
pScrn->EnterVT = fbdevHWEnterVT;
pScrn->LeaveVT = fbdevHWLeaveVT;
pScrn->ValidMode = fbdevHWValidMode;
xf86DrvMsg(pScrn->scrnIndex, X_INFO,
"using %s\n", dev ? dev : "default device");
@@ -494,7 +410,7 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags)
return FALSE;
default_depth = fbdevHWGetDepth(pScrn,&fbbpp);
if (!xf86SetDepthBpp(pScrn, default_depth, default_depth, fbbpp,
Support24bppFb | Support32bppFb | SupportConvert32to24 | SupportConvert24to32))
Support24bppFb | Support32bppFb | SupportConvert32to24 | PreferConvert32to24))
return FALSE;
xf86PrintDepthBpp(pScrn);
@@ -515,7 +431,7 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags)
/* We don't currently support DirectColor at > 8bpp */
if (pScrn->depth > 8 && pScrn->defaultVisual != TrueColor) {
xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "requested default visual"
xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Given default visual"
" (%s) is not supported at depth %d\n",
xf86GetVisualName(pScrn->defaultVisual), pScrn->depth);
return FALSE;
@@ -534,8 +450,8 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags)
pScrn->chipset = "fbdev";
pScrn->videoRam = fbdevHWGetVidmem(pScrn);
xf86DrvMsg(pScrn->scrnIndex, X_INFO, "hardware: %s (video memory:"
" %dkB)\n", fbdevHWGetName(pScrn), pScrn->videoRam/1024);
xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Hardware: %s (vidmem: %dk)\n",
fbdevHWGetName(pScrn),pScrn->videoRam/1024);
/* handle options */
xf86CollectOptions(pScrn, NULL);
@@ -547,8 +463,6 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags)
/* use shadow framebuffer by default */
fPtr->shadowFB = xf86ReturnOptValBool(fPtr->Options, OPTION_SHADOW_FB, TRUE);
debug = xf86ReturnOptValBool(fPtr->Options, OPTION_DEBUG, FALSE);
/* rotation */
fPtr->rotate = FBDEV_ROTATE_NONE;
if ((s = xf86GetOptValString(fPtr->Options, OPTION_ROTATE)))
@@ -558,37 +472,37 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags)
fPtr->shadowFB = TRUE;
fPtr->rotate = FBDEV_ROTATE_CW;
xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
"rotating screen clockwise\n");
"Rotating screen clockwise\n");
}
else if(!xf86NameCmp(s, "CCW"))
{
fPtr->shadowFB = TRUE;
fPtr->rotate = FBDEV_ROTATE_CCW;
xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
"rotating screen counter-clockwise\n");
"Rotating screen counter clockwise\n");
}
else if(!xf86NameCmp(s, "UD"))
{
fPtr->shadowFB = TRUE;
fPtr->rotate = FBDEV_ROTATE_UD;
xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
"rotating screen upside-down\n");
"Rotating screen upside down\n");
}
else
{
xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
"\"%s\" is not a valid value for Option \"Rotate\"\n", s);
xf86DrvMsg(pScrn->scrnIndex, X_INFO,
"valid options are \"CW\", \"CCW\" and \"UD\"\n");
"Valid options are \"CW\", \"CCW\" or \"UD\"\n");
}
}
/* select video modes */
xf86DrvMsg(pScrn->scrnIndex, X_INFO, "checking modes against framebuffer device...\n");
xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Checking Modes against framebuffer device...\n");
fbdevHWSetVideoModes(pScrn);
xf86DrvMsg(pScrn->scrnIndex, X_INFO, "checking modes against monitor...\n");
xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Checking Modes against monitor...\n");
{
DisplayModePtr mode, first = mode = pScrn->modes;
@@ -604,8 +518,15 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags)
fbdevHWUseBuildinMode(pScrn);
pScrn->currentMode = pScrn->modes;
/* First approximation, may be refined in ScreenInit */
pScrn->displayWidth = pScrn->virtualX;
if (fPtr->shadowFB)
pScrn->displayWidth = pScrn->virtualX; /* ShadowFB handles this correctly */
else {
int fbbpp;
/* FIXME: this doesn't work for all cases, e.g. when each scanline
has a padding which is independent from the depth (controlfb) */
fbdevHWGetDepth(pScrn,&fbbpp);
pScrn->displayWidth = fbdevHWGetLineLength(pScrn)/(fbbpp >> 3);
}
xf86PrintModes(pScrn);
@@ -631,32 +552,30 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags)
break;
default:
xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
"unsupported number of bits per pixel: %d",
pScrn->bitsPerPixel);
"Unsupported bpp: %d", pScrn->bitsPerPixel);
return FALSE;
}
break;
case FBDEVHW_INTERLEAVED_PLANES:
/* Not supported yet, don't know what to do with this */
xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
"interleaved planes are not yet supported by the "
"fbdev driver\n");
"Interleaved Planes are not supported yet by drivers/fbdev.");
return FALSE;
case FBDEVHW_TEXT:
/* This should never happen ...
* we should check for this much much earlier ... */
xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
"text mode is not supported by the fbdev driver\n");
"Text mode is not supprted by drivers/fbdev.\n"
"Why do you want to run the X in TEXT mode anyway ?");
return FALSE;
case FBDEVHW_VGA_PLANES:
/* Not supported yet */
xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
"EGA/VGA planes are not yet supported by the fbdev "
"driver\n");
"EGA/VGA Planes are not supprted yet by drivers/fbdev.");
return FALSE;
default:
xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
"unrecognised fbdev hardware type (%d)\n", type);
"Fbdev type (%d) not supported yet.", type);
return FALSE;
}
if (mod && xf86LoadSubModule(pScrn, mod) == NULL) {
@@ -669,8 +588,7 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags)
/* Load shadow if needed */
if (fPtr->shadowFB) {
xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "using shadow"
" framebuffer\n");
xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Using \"Shadow Framebuffer\"\n");
if (!xf86LoadSubModule(pScrn, "shadow")) {
FBDevFreeRec(pScrn);
return FALSE;
@@ -682,50 +600,6 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags)
return TRUE;
}
static Bool
FBDevCreateScreenResources(ScreenPtr pScreen)
{
PixmapPtr pPixmap;
ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
FBDevPtr fPtr = FBDEVPTR(pScrn);
Bool ret;
pScreen->CreateScreenResources = fPtr->CreateScreenResources;
ret = pScreen->CreateScreenResources(pScreen);
pScreen->CreateScreenResources = FBDevCreateScreenResources;
if (!ret)
return FALSE;
pPixmap = pScreen->GetScreenPixmap(pScreen);
if (!shadowAdd(pScreen, pPixmap, fPtr->rotate ?
shadowUpdateRotatePackedWeak() : shadowUpdatePackedWeak(),
FBDevWindowLinear, fPtr->rotate, NULL)) {
return FALSE;
}
return TRUE;
}
static Bool
FBDevShadowInit(ScreenPtr pScreen)
{
ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
FBDevPtr fPtr = FBDEVPTR(pScrn);
if (!shadowSetup(pScreen)) {
return FALSE;
}
fPtr->CreateScreenResources = pScreen->CreateScreenResources;
pScreen->CreateScreenResources = FBDevCreateScreenResources;
return TRUE;
}
static Bool
FBDevScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
{
@@ -733,7 +607,7 @@ FBDevScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
FBDevPtr fPtr = FBDEVPTR(pScrn);
VisualPtr visual;
int init_picture = 0;
int ret, flags;
int ret,flags,width,height;
int type;
TRACE_ENTER("FBDevScreenInit");
@@ -749,8 +623,7 @@ FBDevScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
#endif
if (NULL == (fPtr->fbmem = fbdevHWMapVidmem(pScrn))) {
xf86DrvMsg(scrnIndex,X_ERROR,"mapping of video memory"
" failed\n");
xf86DrvMsg(scrnIndex,X_ERROR,"Map vid mem failed\n");
return FALSE;
}
fPtr->fboff = fbdevHWLinearOffset(pScrn);
@@ -758,7 +631,7 @@ FBDevScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
fbdevHWSave(pScrn);
if (!fbdevHWModeInit(pScrn, pScrn->currentMode)) {
xf86DrvMsg(scrnIndex,X_ERROR,"mode initialization failed\n");
xf86DrvMsg(scrnIndex,X_ERROR,"Mode init failed\n");
return FALSE;
}
fbdevHWSaveScreen(pScreen, SCREEN_SAVER_ON);
@@ -768,42 +641,29 @@ FBDevScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
miClearVisualTypes();
if (pScrn->bitsPerPixel > 8) {
if (!miSetVisualTypes(pScrn->depth, TrueColorMask, pScrn->rgbBits, TrueColor)) {
xf86DrvMsg(scrnIndex,X_ERROR,"visual type setup failed"
" for %d bits per pixel [1]\n",
pScrn->bitsPerPixel);
xf86DrvMsg(scrnIndex,X_ERROR,"Set visual types failed\n");
return FALSE;
}
} else {
if (!miSetVisualTypes(pScrn->depth,
miGetDefaultVisualMask(pScrn->depth),
pScrn->rgbBits, pScrn->defaultVisual)) {
xf86DrvMsg(scrnIndex,X_ERROR,"visual type setup failed"
" for %d bits per pixel [2]\n",
pScrn->bitsPerPixel);
xf86DrvMsg(scrnIndex,X_ERROR,"Set visual types failed\n");
return FALSE;
}
}
if (!miSetPixmapDepths()) {
xf86DrvMsg(scrnIndex,X_ERROR,"pixmap depth setup failed\n");
xf86DrvMsg(scrnIndex,X_ERROR,"Set pixmap depths failed\n");
return FALSE;
}
if(fPtr->rotate==FBDEV_ROTATE_CW || fPtr->rotate==FBDEV_ROTATE_CCW)
{
int tmp = pScrn->virtualX;
pScrn->virtualX = pScrn->displayWidth = pScrn->virtualY;
pScrn->virtualY = tmp;
} else if (!fPtr->shadowFB) {
/* FIXME: this doesn't work for all cases, e.g. when each scanline
has a padding which is independent from the depth (controlfb) */
pScrn->displayWidth = fbdevHWGetLineLength(pScrn) /
(pScrn->bitsPerPixel / 8);
if (pScrn->displayWidth != pScrn->virtualX) {
xf86DrvMsg(scrnIndex, X_INFO,
"Pitch updated to %d after ModeInit\n",
pScrn->displayWidth);
}
height = pScrn->virtualX;
width = pScrn->displayWidth = pScrn->virtualY;
} else {
height = pScrn->virtualY;
width = pScrn->virtualX;
}
if(fPtr->rotate && !fPtr->PointerMoved) {
@@ -811,17 +671,19 @@ FBDevScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
pScrn->PointerMoved = FBDevPointerMoved;
}
fPtr->fbstart = fPtr->fbmem + fPtr->fboff;
/* shadowfb */
if (fPtr->shadowFB) {
fPtr->shadow = xcalloc(1, pScrn->virtualX * pScrn->virtualY *
pScrn->bitsPerPixel);
if (!fPtr->shadow) {
xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
"Failed to allocate shadow framebuffer\n");
if ((fPtr->shadowmem = shadowAlloc(width, height,
pScrn->bitsPerPixel)) == NULL) {
xf86DrvMsg(scrnIndex,X_ERROR,
"Allocation of shadow memory failed\n");
return FALSE;
}
}
fPtr->fbstart = fPtr->shadowmem;
} else {
fPtr->shadowmem = NULL;
fPtr->fbstart = fPtr->fbmem + fPtr->fboff;
}
switch ((type = fbdevHWGetType(pScrn)))
@@ -831,15 +693,14 @@ FBDevScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
if (fPtr->rotate)
{
xf86DrvMsg(scrnIndex, X_ERROR,
"internal error: rotate not supported for afb\n");
"Internal error: Rotate not supported for afb\n");
ret = FALSE;
break;
}
if (fPtr->shadowFB)
{
xf86DrvMsg(scrnIndex, X_ERROR,
"internal error: shadow framebuffer not supported"
" for afb\n");
"Internal error: Shadow framebuffer not supported for afb\n");
ret = FALSE;
break;
}
@@ -854,18 +715,14 @@ FBDevScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
case 16:
case 24:
case 32:
ret = fbScreenInit(pScreen, fPtr->shadowFB ? fPtr->shadow
: fPtr->fbstart, pScrn->virtualX,
pScrn->virtualY, pScrn->xDpi,
pScrn->yDpi, pScrn->displayWidth,
pScrn->bitsPerPixel);
ret = fbScreenInit(pScreen, fPtr->fbstart, width, height,
pScrn->xDpi, pScrn->yDpi, pScrn->displayWidth, pScrn->bitsPerPixel);
init_picture = 1;
break;
default:
xf86DrvMsg(scrnIndex, X_ERROR,
"internal error: invalid number of bits per"
" pixel (%d) encountered in"
" FBDevScreenInit()\n", pScrn->bitsPerPixel);
"Internal error: invalid bpp (%d) in FBDevScreenInit\n",
pScrn->bitsPerPixel);
ret = FALSE;
break;
}
@@ -874,29 +731,29 @@ FBDevScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
/* This should never happen ...
* we should check for this much much earlier ... */
xf86DrvMsg(scrnIndex, X_ERROR,
"internal error: interleaved planes are not yet "
"supported by the fbdev driver\n");
"Internal error: Text mode is not supprted by drivers/fbdev.\n"
"Comment: Why do you want to run the X in TEXT mode anyway ?");
ret = FALSE;
break;
case FBDEVHW_TEXT:
/* This should never happen ...
* we should check for this much much earlier ... */
xf86DrvMsg(scrnIndex, X_ERROR,
"internal error: text mode is not supported by the "
"fbdev driver\n");
"Internal error: Text mode is not supprted by drivers/fbdev.\n"
"Comment: Why do you want to run the X in TEXT mode anyway ?");
ret = FALSE;
break;
case FBDEVHW_VGA_PLANES:
/* Not supported yet */
xf86DrvMsg(scrnIndex, X_ERROR,
"internal error: EGA/VGA Planes are not yet "
"supported by the fbdev driver\n");
"Internal error: EGA/VGA Planes are not supprted"
" yet by drivers/fbdev.");
ret = FALSE;
break;
default:
xf86DrvMsg(scrnIndex, X_ERROR,
"internal error: unrecognised hardware type (%d) "
"encountered in FBDevScreenInit()\n", type);
"Internal error: fbdev type (%d) unsupported in"
" FBDevScreenInit\n", type);
ret = FALSE;
break;
}
@@ -921,24 +778,25 @@ FBDevScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
/* must be after RGB ordering fixed */
if (init_picture && !fbPictureInit(pScreen, NULL, 0))
xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
"Render extension initialisation failed\n");
"RENDER extension initialisation failed.\n");
if (fPtr->shadowFB && !FBDevShadowInit(pScreen)) {
if (fPtr->shadowFB &&
(!shadowSetup(pScreen) || !shadowAdd(pScreen, NULL,
fPtr->rotate ? shadowUpdateRotatePacked : shadowUpdatePacked,
FBDevWindowLinear, fPtr->rotate, NULL)) ) {
xf86DrvMsg(scrnIndex, X_ERROR,
"shadow framebuffer initialization failed\n");
"Shadow framebuffer initialization failed.\n");
return FALSE;
}
if (!fPtr->rotate)
FBDevDGAInit(pScrn, pScreen);
else {
xf86DrvMsg(scrnIndex, X_INFO, "display rotated; disabling DGA\n");
xf86DrvMsg(scrnIndex, X_INFO, "using driver rotation; disabling "
"XRandR\n");
xf86DrvMsg(scrnIndex, X_INFO, "Rotated display, disabling DGA\n");
xf86DrvMsg(scrnIndex, X_INFO, "Enabling Driver rotation, disabling RandR\n");
xf86DisableRandR();
if (pScrn->bitsPerPixel == 24)
xf86DrvMsg(scrnIndex, X_WARNING, "rotation might be broken at 24 "
"bits per pixel\n");
xf86DrvMsg(scrnIndex, X_WARNING, "Rotation might be broken in 24 bpp\n");
}
xf86SetBlackWhitePixels(pScreen);
@@ -954,51 +812,42 @@ FBDevScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
/* XXX It would be simpler to use miCreateDefColormap() in all cases. */
#ifdef USE_AFB
case FBDEVHW_PLANES:
if (!afbCreateDefColormap(pScreen)) {
xf86DrvMsg(scrnIndex, X_ERROR,
"internal error: afbCreateDefColormap "
"failed in FBDevScreenInit()\n");
if (!afbCreateDefColormap(pScreen))
return FALSE;
}
break;
#endif
case FBDEVHW_PACKED_PIXELS:
if (!miCreateDefColormap(pScreen)) {
xf86DrvMsg(scrnIndex, X_ERROR,
"internal error: miCreateDefColormap failed "
"in FBDevScreenInit()\n");
if (!miCreateDefColormap(pScreen))
return FALSE;
}
break;
case FBDEVHW_INTERLEAVED_PLANES:
xf86DrvMsg(scrnIndex, X_ERROR,
"internal error: interleaved planes are not yet "
"supported by the fbdev driver\n");
"Internal error: invalid fbdev type (interleaved planes)"
" in FBDevScreenInit\n");
return FALSE;
case FBDEVHW_TEXT:
xf86DrvMsg(scrnIndex, X_ERROR,
"internal error: text mode is not supported by "
"the fbdev driver\n");
"Internal error: invalid fbdev type (text)"
" in FBDevScreenInit\n");
return FALSE;
case FBDEVHW_VGA_PLANES:
xf86DrvMsg(scrnIndex, X_ERROR,
"internal error: EGA/VGA planes are not yet "
"supported by the fbdev driver\n");
"Internal error: invalid fbdev type (ega/vga planes)"
" in FBDevScreenInit\n");
return FALSE;
default:
xf86DrvMsg(scrnIndex, X_ERROR,
"internal error: unrecognised fbdev hardware type "
"(%d) encountered in FBDevScreenInit()\n", type);
"Internal error: invalid fbdev type (%d) in FBDevScreenInit\n",
type);
return FALSE;
}
flags = CMAP_PALETTED_TRUECOLOR;
if(!xf86HandleColormaps(pScreen, 256, 8, fbdevHWLoadPaletteWeak(),
NULL, flags))
if(!xf86HandleColormaps(pScreen, 256, 8, fbdevHWLoadPalette, NULL, flags))
return FALSE;
xf86DPMSInit(pScreen, fbdevHWDPMSSetWeak(), 0);
xf86DPMSInit(pScreen, fbdevHWDPMSSet, 0);
pScreen->SaveScreen = fbdevHWSaveScreenWeak();
pScreen->SaveScreen = fbdevHWSaveScreen;
/* Wrap the current CloseScreen function */
fPtr->CloseScreen = pScreen->CloseScreen;
@@ -1026,10 +875,8 @@ FBDevCloseScreen(int scrnIndex, ScreenPtr pScreen)
fbdevHWRestore(pScrn);
fbdevHWUnmapVidmem(pScrn);
if (fPtr->shadow) {
xfree(fPtr->shadow);
fPtr->shadow = NULL;
}
if (fPtr->shadowmem)
xfree(fPtr->shadowmem);
if (fPtr->pDGAMode) {
xfree(fPtr->pDGAMode);
fPtr->pDGAMode = NULL;
@@ -1037,7 +884,6 @@ FBDevCloseScreen(int scrnIndex, ScreenPtr pScreen)
}
pScrn->vtSema = FALSE;
pScreen->CreateScreenResources = fPtr->CreateScreenResources;
pScreen->CloseScreen = fPtr->CloseScreen;
return (*pScreen->CloseScreen)(scrnIndex, pScreen);
}
@@ -1063,7 +909,7 @@ FBDevWindowLinear(ScreenPtr pScreen, CARD32 row, CARD32 offset, int mode,
else
*size = fPtr->lineLength = fbdevHWGetLineLength(pScrn);
return ((CARD8 *)fPtr->fbstart + row * fPtr->lineLength + offset);
return ((CARD8 *)fPtr->fbmem + fPtr->fboff + row * fPtr->lineLength + offset);
}
static void
@@ -1247,18 +1093,3 @@ FBDevDGAInit(ScrnInfoPtr pScrn, ScreenPtr pScreen)
return (DGAInit(pScreen, &FBDevDGAFunctions,
fPtr->pDGAMode, fPtr->nDGAMode));
}
static Bool
FBDevDriverFunc(ScrnInfoPtr pScrn, xorgDriverFuncOp op, pointer ptr)
{
xorgHWFlags *flag;
switch (op) {
case GET_REQUIRED_HW_INTERFACES:
flag = (CARD32*)ptr;
(*flag) = 0;
return TRUE;
default:
return FALSE;
}
}