diff options
| author | Richard Purdie <rpurdie@linux.intel.com> | 2010-02-11 12:15:06 +0000 |
|---|---|---|
| committer | Richard Purdie <rpurdie@linux.intel.com> | 2010-02-11 12:15:06 +0000 |
| commit | 25e0acc95239ae2793dc51275d48dc7fdfa7cea6 (patch) | |
| tree | 7d63d9b62a92477e5d1c1fe3e55ce86763a34c37 | |
| parent | 2146902ae475347a8603dd6abcc1f042f2797d37 (diff) | |
| download | openembedded-core-25e0acc95239ae2793dc51275d48dc7fdfa7cea6.tar.gz openembedded-core-25e0acc95239ae2793dc51275d48dc7fdfa7cea6.tar.bz2 openembedded-core-25e0acc95239ae2793dc51275d48dc7fdfa7cea6.zip | |
xserver-kdrive: Add 1.7.99.2
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
31 files changed, 1294 insertions, 6866 deletions
diff --git a/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/enable-epson.patch b/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/enable-epson.patch deleted file mode 100644 index 0fffd71dce..0000000000 --- a/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/enable-epson.patch +++ /dev/null @@ -1,17 +0,0 @@ -Index: xorg-server-1.4/hw/kdrive/Makefile.am -=================================================================== ---- xorg-server-1.4.orig/hw/kdrive/Makefile.am 2007-08-30 01:48:57.000000000 +0200 -+++ xorg-server-1.4/hw/kdrive/Makefile.am 2007-09-06 23:24:29.000000000 +0200 -@@ -1,10 +1,10 @@ - if KDRIVEVESA --VESA_SUBDIRS = vesa ati chips epson i810 mach64 mga nvidia pm2 r128 \ -+VESA_SUBDIRS = vesa ati chips i810 mach64 mga nvidia pm2 r128 \ - smi via - endif - - if BUILD_KDRIVEFBDEVLIB --FBDEV_SUBDIRS = fbdev -+FBDEV_SUBDIRS = fbdev epson - endif - - if XFAKESERVER diff --git a/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/enable-tslib.patch b/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/enable-tslib.patch deleted file mode 100644 index 0519b3093a..0000000000 --- a/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/enable-tslib.patch +++ /dev/null @@ -1,24 +0,0 @@ ---- /tmp/configure.ac 2008-04-16 10:52:15.016442542 +0200 -+++ xorg-server-1.4.99.901/configure.ac 2008-04-16 10:54:23.786428934 +0200 -@@ -1925,7 +1925,7 @@ - AC_CHECK_LIB([rt], [nanosleep], XEPHYR_LIBS="$XEPHYR_LIBS -lrt")) - - if test "x$TSLIB" = xyes; then -- PKG_CHECK_MODULES([TSLIB], [tslib-0.0], [HAVE_TSLIB="yes"], [HAVE_TSLIB="no"]) -+ PKG_CHECK_MODULES([TSLIB], [tslib-1.0], [HAVE_TSLIB="yes"], [HAVE_TSLIB="no"]) - if test "x$HAVE_TSLIB" = xno; then - AC_MSG_ERROR([tslib must be installed to build the tslib driver. See http://tslib.berlios.de/]) - fi -@@ -1949,10 +1949,10 @@ - ;; - esac - KDRIVE_STUB_LIB='$(top_builddir)/hw/kdrive/src/libkdrivestubs.a' -- KDRIVE_LOCAL_LIBS="$TSLIB_LIBS $DIX_LIB $KDRIVE_LIB $KDRIVE_STUB_LIB $CONFIG_LIB" -+ KDRIVE_LOCAL_LIBS="$DIX_LIB $KDRIVE_LIB $KDRIVE_STUB_LIB $CONFIG_LIB" - KDRIVE_LOCAL_LIBS="$KDRIVE_LOCAL_LIBS $FB_LIB $MI_LIB $KDRIVE_PURE_LIBS" - KDRIVE_LOCAL_LIBS="$KDRIVE_LOCAL_LIBS $KDRIVE_OS_LIB $OS_LIB" -- KDRIVE_LIBS="$KDRIVE_LOCAL_LIBS $XSERVER_SYS_LIBS" -+ KDRIVE_LIBS="$TSLIB_LIBS $KDRIVE_LOCAL_LIBS $XSERVER_SYS_LIBS" - - # check if we can build Xephyr - PKG_CHECK_MODULES(XEPHYR, $XEPHYR_REQUIRED_LIBS, [xephyr="yes"], [xephyr="no"]) diff --git a/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/epson.patch b/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/epson.patch deleted file mode 100644 index 07009bdc40..0000000000 --- a/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/epson.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- xserver.orig/hw/kdrive/epson/epson13806stub.c 2004-10-20 10:20:51.000000000 +0200 -+++ xserver/hw/kdrive/epson/epson13806stub.c 2005-03-17 14:38:22.000000000 +0100 -@@ -55,7 +55,7 @@ - { - KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs); - #ifdef TOUCHSCREEN -- KdInitTouchScreen (&TsFuncs); -+ KdAddMouseDriver (&TsFuncs); - #endif - } - diff --git a/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/fbdev-evdev.patch b/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/fbdev-evdev.patch deleted file mode 100644 index 5f9b21b627..0000000000 --- a/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/fbdev-evdev.patch +++ /dev/null @@ -1,19 +0,0 @@ -Index: xorg-server-1.4/hw/kdrive/fbdev/fbinit.c -=================================================================== ---- xorg-server-1.4.orig/hw/kdrive/fbdev/fbinit.c 2007-09-08 21:27:44.000000000 +0200 -+++ xorg-server-1.4/hw/kdrive/fbdev/fbinit.c 2007-09-08 21:28:55.000000000 +0200 -@@ -46,11 +46,13 @@ - - KdAddKeyboardDriver (&LinuxKeyboardDriver); - KdAddPointerDriver (&LinuxMouseDriver); -+ KdAddKeyboardDriver (&LinuxEvdevKeyboardDriver); -+ KdAddPointerDriver (&LinuxEvdevMouseDriver); - #ifdef TSLIB - KdAddPointerDriver (&TsDriver); - #endif - -- ki = KdParseKeyboard ("keybd"); -+ ki = KdParseKeyboard ("keyboard"); - KdAddKeyboard(ki); - - KdInitInput (); diff --git a/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/fbdev-not-fix.patch b/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/fbdev-not-fix.patch deleted file mode 100644 index f87e7cc2cd..0000000000 --- a/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/fbdev-not-fix.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- xserver/hw/kdrive/fbdev/fbdev.c~ 2004-09-15 00:08:10.000000000 +0100 -+++ xserver/hw/kdrive/fbdev/fbdev.c 2004-11-13 17:47:02.000000000 +0000 -@@ -198,6 +198,11 @@ - return FALSE; - } - -+ /* Re-get the "fixed" parameters since they might have changed */ -+ k = ioctl (priv->fd, FBIOGET_FSCREENINFO, &priv->fix); -+ if (k < 0) -+ perror ("FBIOGET_FSCREENINFO"); -+ - /* Now get the new screeninfo */ - ioctl (priv->fd, FBIOGET_VSCREENINFO, &priv->var); - depth = priv->var.bits_per_pixel; diff --git a/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/keyboard-resume-workaround.patch b/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/keyboard-resume-workaround.patch deleted file mode 100644 index 4964ff5479..0000000000 --- a/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/keyboard-resume-workaround.patch +++ /dev/null @@ -1,16 +0,0 @@ -Index: xorg-server-1.4/hw/kdrive/linux/keyboard.c -=================================================================== ---- xorg-server-1.4.orig/hw/kdrive/linux/keyboard.c 2007-09-29 18:31:15.000000000 +0200 -+++ xorg-server-1.4/hw/kdrive/linux/keyboard.c 2007-09-29 18:33:02.000000000 +0200 -@@ -743,11 +743,6 @@ - cfsetispeed(&nTty, 9600); - cfsetospeed(&nTty, 9600); - tcsetattr(fd, TCSANOW, &nTty); -- /* -- * Flush any pending keystrokes -- */ -- while ((n = read (fd, buf, sizeof (buf))) > 0) -- ; - KdRegisterFd (fd, LinuxKeyboardRead, ki); - return Success; - } diff --git a/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/linux-keyboard-mediumraw.patch b/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/linux-keyboard-mediumraw.patch deleted file mode 100644 index 36d2f8eae8..0000000000 --- a/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/linux-keyboard-mediumraw.patch +++ /dev/null @@ -1,44 +0,0 @@ -Index: git/hw/kdrive/linux/keyboard.c -=================================================================== ---- git.orig/hw/kdrive/linux/keyboard.c 2007-11-14 21:30:45.000000000 +0000 -+++ git/hw/kdrive/linux/keyboard.c 2007-11-15 12:00:11.000000000 +0000 -@@ -42,6 +42,8 @@ - #include <sys/ioctl.h> - - extern int LinuxConsoleFd; -+static unsigned char mediumraw_data, mediumraw_up; -+static enum { DEFAULT, EXTBYTE1, EXTBYTE2 } mediumraw_state = DEFAULT; - - static const KeySym linux_to_x[256] = { - NoSymbol, NoSymbol, NoSymbol, NoSymbol, -@@ -701,7 +703,29 @@ - else - #endif - scancode = b[0] & 0x7f; -- KdEnqueueKeyboardEvent (closure, scancode, b[0] & 0x80); -+ /* This is extended medium raw mode interpreter -+ see linux/drivers/keyboard.c (kbd->kbdmode == VC_MEDIUMRAW) */ -+ switch (mediumraw_state) -+ { -+ case DEFAULT: -+ if (scancode == 0) -+ { -+ mediumraw_state = EXTBYTE1; -+ mediumraw_up = b[0] & 0x80; -+ } -+ else -+ KdEnqueueKeyboardEvent (closure, scancode, b[0] & 0x80); -+ break; -+ case EXTBYTE1: -+ mediumraw_data = scancode; -+ mediumraw_state = EXTBYTE2; -+ break; -+ case EXTBYTE2: -+ /* Note: Only codes < 256 will pass correctly through KdEnqueueKeyboardEvent() */ -+ KdEnqueueKeyboardEvent (closure, (int)mediumraw_data << 7 | scancode, mediumraw_up); -+ mediumraw_state = DEFAULT; -+ break; -+ } - b++; - } - } diff --git a/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/no_xkb.patch b/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/no_xkb.patch deleted file mode 100644 index 779aa2d6ef..0000000000 --- a/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/no_xkb.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- dix/devices.c~ 2008-04-16 13:01:08.000000000 +0200 -+++ dix/devices.c 2008-04-16 13:01:08.000000000 +0200 -@@ -527,8 +527,8 @@ - #ifdef XKB - if (dev->key->xkbInfo) - XkbFreeInfo(dev->key->xkbInfo); --#endif - dev->key->xkbInfo = NULL; -+#endif - xfree(dev->key->curKeySyms.map); - xfree(dev->key->modifierKeyMap); - xfree(dev->key); diff --git a/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/tslib-default-device.patch b/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/tslib-default-device.patch deleted file mode 100644 index c1bc49f58e..0000000000 --- a/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/tslib-default-device.patch +++ /dev/null @@ -1,15 +0,0 @@ -Index: xorg-server-1.4/hw/kdrive/linux/tslib.c -=================================================================== ---- xorg-server-1.4.orig/hw/kdrive/linux/tslib.c 2007-09-08 19:58:08.000000000 +0200 -+++ xorg-server-1.4/hw/kdrive/linux/tslib.c 2007-09-08 19:58:09.000000000 +0200 -@@ -121,6 +121,10 @@ - - private->raw_event_hook = NULL; - private->raw_event_closure = NULL; -+ if (!pi->path) { -+ pi->path = "/dev/input/touchscreen0"; -+ ErrorF("[tslib/TslibEnable] no device path given, trying %s\n", pi->path); -+ } - private->tsDev = ts_open(pi->path, 0); - private->fd = ts_fd(private->tsDev); - if (!private->tsDev || ts_config(private->tsDev) || private->fd < 0) { diff --git a/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/w100-autofoo.patch b/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/w100-autofoo.patch deleted file mode 100644 index 0812a2e856..0000000000 --- a/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/w100-autofoo.patch +++ /dev/null @@ -1,54 +0,0 @@ -Index: xorg-server-1.4/hw/kdrive/Makefile.am -=================================================================== ---- xorg-server-1.4.orig/hw/kdrive/Makefile.am 2007-09-06 23:32:04.000000000 +0200 -+++ xorg-server-1.4/hw/kdrive/Makefile.am 2007-09-06 23:33:44.000000000 +0200 -@@ -11,6 +11,10 @@ - XFAKE_SUBDIRS = fake - endif - -+if KDRIVEW100 -+W100_SUBDIRS = w100 -+endif -+ - if XSDLSERVER - XSDL_SUBDIRS = sdl - endif -@@ -26,6 +30,7 @@ - SERVER_SUBDIRS = \ - $(XSDL_SUBDIRS) \ - $(FBDEV_SUBDIRS) \ -+ $(W100_SUBDIRS) \ - $(VESA_SUBDIRS) \ - $(XEPHYR_SUBDIRS) \ - $(XFAKE_SUBDIRS) -Index: xorg-server-1.4/configure.ac -=================================================================== ---- xorg-server-1.4.orig/configure.ac 2007-09-06 23:32:05.000000000 +0200 -+++ xorg-server-1.4/configure.ac 2007-09-06 23:34:41.000000000 +0200 -@@ -535,6 +535,7 @@ - AC_ARG_ENABLE(kdrive, AS_HELP_STRING([--enable-kdrive], [Build kdrive servers (default: no)]), [KDRIVE=$enableval], [KDRIVE=no]) - AC_ARG_ENABLE(xephyr, AS_HELP_STRING([--enable-xephyr], [Build the kdrive Xephyr server (default: auto)]), [XEPHYR=$enableval], [XEPHYR=auto]) - AC_ARG_ENABLE(xsdl, AS_HELP_STRING([--enable-xsdl], [Build the kdrive Xsdl server (default: auto)]), [XSDL=$enableval], [XSDL=auto]) -+AC_ARG_ENABLE(w100, AS_HELP_STRING([--enable-w100], [Build the kdrive Xw100 server (default: no)]), [KDRIVEW100=$enableval], [KDRIVEW100=no]) - AC_ARG_ENABLE(xfake, AS_HELP_STRING([--enable-xfake], [Build the kdrive 'fake' server (default: auto)]), [XFAKE=$enableval], [XFAKE=auto]) - AC_ARG_ENABLE(xfbdev, AS_HELP_STRING([--enable-xfbdev], [Build the kdrive framebuffer device server (default: auto)]), [XFBDEV=$enableval], [XFBDEV=auto]) - AC_ARG_ENABLE(kdrive-vesa, AS_HELP_STRING([--enable-kdrive-vesa], [Build the kdrive VESA-based servers (default: auto)]), [KDRIVEVESA=$enableval], [KDRIVEVESA=auto]) -@@ -1669,6 +1670,10 @@ - fi - AM_CONDITIONAL(XP_USE_FREETYPE, [test "x$XPRINT" = xyes && test "x$XP_USE_FREETYPE" = xyes]) - -+AM_CONDITIONAL(KDRIVEW100, [test "x$KDRIVEW100" = xyes]) -+if test "x$KDRIVEW100" = xyes; then -+ AC_DEFINE(KDRIVEW100, 1, [Build Xw100 server]) -+fi - - dnl XWin DDX - -@@ -2112,6 +2117,7 @@ - hw/kdrive/epson/Makefile - hw/kdrive/fake/Makefile - hw/kdrive/fbdev/Makefile -+hw/kdrive/w100/Makefile - hw/kdrive/i810/Makefile - hw/kdrive/linux/Makefile - hw/kdrive/mach64/Makefile diff --git a/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/w100-fix-offscreen-bmp.patch b/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/w100-fix-offscreen-bmp.patch deleted file mode 100644 index 39bc22c6b3..0000000000 --- a/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/w100-fix-offscreen-bmp.patch +++ /dev/null @@ -1,15 +0,0 @@ -Patch suggested by Manuel Teira to actually enable offscreen pixmap -acceleration in Xw100. Value 16 is empirical, works well on hx4700, -but in case of issues, consider double it (other accelerated drivers -use bigger values than 16). - ---- xorg-server-1.2.0/hw/kdrive/w100/ati_draw.c.org 2007-04-04 10:28:57.000000000 +0000 -+++ xorg-server-1.2.0/hw/kdrive/w100/ati_draw.c 2007-04-06 14:43:40.000000000 +0000 -@@ -433,6 +433,7 @@ - * or kaaPixmapUseScreen. But this is probably caused by some bug in this - * driver... */ - atis->kaa.flags |= KAA_OFFSCREEN_PIXMAPS; -+ atis->kaa.pitchAlign = 16; - if (!kaaDrawInit(pScreen, &atis->kaa)) - return FALSE; - diff --git a/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/w100-new-input-world-order.patch b/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/w100-new-input-world-order.patch deleted file mode 100644 index 239ae0bb67..0000000000 --- a/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/w100-new-input-world-order.patch +++ /dev/null @@ -1,28 +0,0 @@ -Index: xorg-server-1.4/hw/kdrive/w100/ati_stub.c -=================================================================== ---- xorg-server-1.4.orig/hw/kdrive/w100/ati_stub.c 2007-09-08 21:40:26.000000000 +0200 -+++ xorg-server-1.4/hw/kdrive/w100/ati_stub.c 2007-09-08 22:04:27.000000000 +0200 -@@ -74,10 +74,20 @@ - void - InitInput(int argc, char **argv) - { -- KdInitInput(&LinuxMouseFuncs, &LinuxKeyboardFuncs); --#ifdef TOUCHSCREEN -- KdAddMouseDriver(&TsFuncs); -+ KdKeyboardInfo *ki; -+ -+ KdAddKeyboardDriver (&LinuxKeyboardDriver); -+ KdAddPointerDriver (&LinuxMouseDriver); -+ KdAddKeyboardDriver (&LinuxEvdevKeyboardDriver); -+ KdAddPointerDriver (&LinuxEvdevMouseDriver); -+#ifdef TSLIB -+ KdAddPointerDriver (&TsDriver); - #endif -+ -+ ki = KdParseKeyboard ("keyboard"); -+ KdAddKeyboard(ki); -+ -+ KdInitInput (); - } - - void diff --git a/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/w100.patch b/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/w100.patch deleted file mode 100644 index 1bb6f357c6..0000000000 --- a/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/w100.patch +++ /dev/null @@ -1,6335 +0,0 @@ -Index: git/hw/kdrive/w100/ati.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ git/hw/kdrive/w100/ati.c 2006-09-02 12:12:14.000000000 +0200 -@@ -0,0 +1,434 @@ -+/* -+ * Copyright © 2006 Alberto Mardegan <mardy@users.sourceforge.net> -+ * -+ * 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, and that the name of Alberto Mardegan not be used in -+ * advertising or publicity pertaining to distribution of the software without -+ * specific, written prior permission. Alberto Mardegan makes no -+ * representations about the suitability of this software for any purpose. It -+ * is provided "as is" without express or implied warranty. -+ * -+ * ALBERTO MARDEGAN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -+ * EVENT SHALL ALBERTO MARDEGAN BE LIABLE FOR ANY SPECIAL, INDIRECT OR -+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, -+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER -+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -+ * PERFORMANCE OF THIS SOFTWARE. -+ */ -+ -+#ifdef HAVE_CONFIG_H -+#include <kdrive-config.h> -+#endif -+#include "ati.h" -+#include "w100_regs.h" -+ -+ -+struct pci_id_entry ati_pci_ids[] = { -+ {0x1002, 0x5644, 0, "ATI Imageon 3200"}, -+ {0x1002, 0x5741, 0, "ATI Imageon 100"}, -+ {0x1002, 0x5744, 0, "ATI Imageon 3220"}, -+ {0, 0, 0, NULL} -+}; -+ -+ -+static Bool -+ATICardInit(KdCardInfo * card) -+{ -+ ATICardInfo *atic; -+ int i; -+ Bool initialized = FALSE; -+ -+ atic = xcalloc(sizeof(ATICardInfo), 1); -+ if (atic == NULL) -+ return FALSE; -+ -+#ifdef KDRIVEFBDEV -+ if (!initialized && fbdevInitialize(card, &atic->backend_priv.fbdev)) { -+ atic->use_fbdev = TRUE; -+ initialized = TRUE; -+ atic->backend_funcs.cardfini = fbdevCardFini; -+ atic->backend_funcs.scrfini = fbdevScreenFini; -+ atic->backend_funcs.initScreen = fbdevInitScreen; -+ atic->backend_funcs.finishInitScreen = fbdevFinishInitScreen; -+ atic->backend_funcs.createRes = fbdevCreateResources; -+ atic->backend_funcs.preserve = fbdevPreserve; -+ atic->backend_funcs.restore = fbdevRestore; -+ atic->backend_funcs.dpms = fbdevDPMS; -+ atic->backend_funcs.enable = fbdevEnable; -+ atic->backend_funcs.disable = fbdevDisable; -+ atic->backend_funcs.getColors = fbdevGetColors; -+ atic->backend_funcs.putColors = fbdevPutColors; -+#ifdef RANDR -+ atic->backend_funcs.randrSetConfig = fbdevRandRSetConfig; -+#endif -+ } -+#endif -+#ifdef KDRIVEVESA -+ if (!initialized && vesaInitialize(card, &atic->backend_priv.vesa)) { -+ atic->use_vesa = TRUE; -+ initialized = TRUE; -+ atic->backend_funcs.cardfini = vesaCardFini; -+ atic->backend_funcs.scrfini = vesaScreenFini; -+ atic->backend_funcs.initScreen = vesaInitScreen; -+ atic->backend_funcs.finishInitScreen = vesaFinishInitScreen; -+ atic->backend_funcs.createRes = vesaCreateResources; -+ atic->backend_funcs.preserve = vesaPreserve; -+ atic->backend_funcs.restore = vesaRestore; -+ atic->backend_funcs.dpms = vesaDPMS; -+ atic->backend_funcs.enable = vesaEnable; -+ atic->backend_funcs.disable = vesaDisable; -+ atic->backend_funcs.getColors = vesaGetColors; -+ atic->backend_funcs.putColors = vesaPutColors; -+#ifdef RANDR -+ atic->backend_funcs.randrSetConfig = vesaRandRSetConfig; -+#endif -+ } -+#endif -+ -+ if (!initialized || !ATIMap(card, atic)) { -+ xfree(atic); -+ return FALSE; -+ } -+ -+ card->driver = atic; -+ -+ for (i = 0; ati_pci_ids[i].name != NULL; i++) { -+ if (ati_pci_ids[i].device == card->attr.deviceID) { -+ atic->pci_id = &ati_pci_ids[i]; -+ break; -+ } -+ } -+ -+ ErrorF("Using ATI card: %s\n", atic->pci_id->name); -+ -+ return TRUE; -+} -+ -+static void -+ATICardFini(KdCardInfo * card) -+{ -+ ATICardInfo *atic = (ATICardInfo *) card->driver; -+ -+ ATIUnmap(card, atic); -+ atic->backend_funcs.cardfini(card); -+} -+ -+/* -+ * Once screen->off_screen_base is set, this function -+ * allocates the remaining memory appropriately -+ */ -+ -+static void -+ATISetOffscreen(KdScreenInfo * screen) -+{ -+ ATICardInfo(screen); -+ int screen_size; -+ char *mmio = atic->reg_base; -+ -+ /* check (and adjust) pitch */ -+ if (mmio) { -+ int byteStride = screen->fb[0].byteStride; -+ int bitStride; -+ int pixelStride; -+ int bpp = screen->fb[0].bitsPerPixel; -+ -+ /* -+ * Ensure frame buffer is correctly aligned -+ */ -+ if (byteStride & 0x3f) { -+ byteStride = (byteStride + 0x3f) & ~0x3f; -+ bitStride = byteStride * 8; -+ pixelStride = bitStride / bpp; -+ -+ screen->fb[0].byteStride = byteStride; -+ screen->fb[0].pixelStride = pixelStride; -+ } -+ } -+ -+ screen_size = screen->fb[0].byteStride * screen->height; -+ -+ screen->off_screen_base = screen_size; -+ -+} -+ -+static Bool -+ATIScreenInit(KdScreenInfo * screen) -+{ -+ ATIScreenInfo *atis; -+ ATICardInfo(screen); -+ Bool success = FALSE; -+ -+ atis = xcalloc(sizeof(ATIScreenInfo), 1); -+ if (atis == NULL) -+ return FALSE; -+ -+ atis->atic = atic; -+ atis->screen = screen; -+ screen->driver = atis; -+ -+ if (screen->fb[0].depth == 0) -+ screen->fb[0].depth = 16; -+#ifdef KDRIVEFBDEV -+ if (atic->use_fbdev) { -+ success = fbdevScreenInitialize(screen, &atis->backend_priv.fbdev); -+ } -+#endif -+#ifdef KDRIVEVESA -+ if (atic->use_vesa) { -+ success = vesaScreenInitialize(screen, &atis->backend_priv.vesa); -+ } -+#endif -+ -+ if (!success) { -+ screen->driver = NULL; -+ xfree(atis); -+ return FALSE; -+ } -+ -+ ErrorF -+ ("Offscreen memory at offset %08x, memory base %08x, size %08x\n", -+ screen->off_screen_base, screen->memory_base, -+ screen->memory_size); -+ ATISetOffscreen(screen); -+ -+ return TRUE; -+} -+ -+#ifdef RANDR -+static Bool -+ATIRandRSetConfig(ScreenPtr pScreen, -+ Rotation randr, int rate, RRScreenSizePtr pSize) -+{ -+ KdScreenPriv(pScreen); -+ KdScreenInfo *screen = pScreenPriv->screen; -+ ATICardInfo *atic = screen->card->driver; -+ Bool ret; -+ -+ ATIDrawDisable(pScreen); -+ ret = atic->backend_funcs.randrSetConfig(pScreen, randr, rate, pSize); -+ ATISetOffscreen(screen); -+ /* -+ * Set frame buffer mapping -+ */ -+ (*pScreen->ModifyPixmapHeader) (fbGetScreenPixmap(pScreen), -+ pScreen->width, -+ pScreen->height, -+ screen->fb[0].depth, -+ screen->fb[0].bitsPerPixel, -+ screen->fb[0].byteStride, -+ screen->fb[0].frameBuffer); -+ -+ ATIDrawEnable(pScreen); -+ return ret; -+} -+ -+static Bool -+ATIRandRInit(ScreenPtr pScreen) -+{ -+ rrScrPrivPtr pScrPriv; -+ -+ pScrPriv = rrGetScrPriv(pScreen); -+ pScrPriv->rrSetConfig = ATIRandRSetConfig; -+ return TRUE; -+} -+#endif -+ -+static void -+ATIScreenFini(KdScreenInfo * screen) -+{ -+ ATIScreenInfo *atis = (ATIScreenInfo *) screen->driver; -+ ATICardInfo *atic = screen->card->driver; -+ -+ atic->backend_funcs.scrfini(screen); -+ xfree(atis); -+ screen->driver = 0; -+} -+ -+Bool -+ATIMap(KdCardInfo * card, ATICardInfo * atic) -+{ -+ atic->mem_base = (CARD8 *) KdMapDevice(ATI_MEM_BASE(card), -+ ATI_MEM_SIZE(card)); -+ -+ if (atic->mem_base == NULL) -+ return FALSE; -+ atic->reg_base = atic->mem_base + 0x10000; /* XXX */ -+ -+ KdSetMappedMode(ATI_MEM_BASE(card), ATI_MEM_SIZE(card), -+ KD_MAPPED_MODE_REGISTERS); -+ -+ return TRUE; -+} -+ -+void -+ATIUnmap(KdCardInfo * card, ATICardInfo * atic) -+{ -+ if (atic->reg_base) { -+ KdResetMappedMode(ATI_REG_BASE(card), ATI_REG_SIZE(card), -+ KD_MAPPED_MODE_REGISTERS); -+ KdUnmapDevice((void *) atic->reg_base, ATI_REG_SIZE(card)); -+ atic->reg_base = 0; -+ } -+} -+ -+static Bool -+ATIInitScreen(ScreenPtr pScreen) -+{ -+ KdScreenPriv(pScreen); -+ ATICardInfo(pScreenPriv); -+ -+ return atic->backend_funcs.initScreen(pScreen); -+} -+ -+static Bool -+ATIFinishInitScreen(ScreenPtr pScreen) -+{ -+ KdScreenPriv(pScreen); -+ ATICardInfo(pScreenPriv); -+ -+ if (!atic->backend_funcs.finishInitScreen(pScreen)) -+ return FALSE; -+#ifdef RANDR -+ if (!ATIRandRInit(pScreen)) -+ return FALSE; -+#endif -+ return TRUE; -+} -+ -+static Bool -+ATICreateResources(ScreenPtr pScreen) -+{ -+ KdScreenPriv(pScreen); -+ ATICardInfo(pScreenPriv); -+ -+ return atic->backend_funcs.createRes(pScreen); -+} -+ -+static void -+ATIPreserve(KdCardInfo * card) -+{ -+ ATICardInfo *atic = card->driver; -+ -+ atic->backend_funcs.preserve(card); -+} -+ -+static void -+ATIRestore(KdCardInfo * card) -+{ -+ ATICardInfo *atic = card->driver; -+ -+ ATIUnmap(card, atic); -+ -+ atic->backend_funcs.restore(card); -+} -+ -+static Bool -+ATIDPMS(ScreenPtr pScreen, int mode) -+{ -+ KdScreenPriv(pScreen); -+ ATICardInfo(pScreenPriv); -+ -+ return atic->backend_funcs.dpms(pScreen, mode); -+} -+ -+static Bool -+ATIEnable(ScreenPtr pScreen) -+{ -+ KdScreenPriv(pScreen); -+ ATICardInfo(pScreenPriv); -+ mc_ext_mem_location_u eml; -+ char *mmio; -+ -+ if (!atic->backend_funcs.enable(pScreen)) -+ return FALSE; -+ -+ if ((atic->reg_base == NULL) -+ && !ATIMap(pScreenPriv->screen->card, atic)) |
