From 25e0acc95239ae2793dc51275d48dc7fdfa7cea6 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Thu, 11 Feb 2010 12:15:06 +0000 Subject: xserver-kdrive: Add 1.7.99.2 Signed-off-by: Richard Purdie --- .../xserver-kdrive-1.4.99.901/enable-epson.patch | 17 - .../xserver-kdrive-1.4.99.901/enable-tslib.patch | 24 - .../xserver-kdrive-1.4.99.901/epson.patch | 11 - .../xserver-kdrive-1.4.99.901/fbdev-evdev.patch | 19 - .../xserver-kdrive-1.4.99.901/fbdev-not-fix.patch | 14 - .../keyboard-resume-workaround.patch | 16 - .../linux-keyboard-mediumraw.patch | 44 - .../xserver-kdrive-1.4.99.901/no_xkb.patch | 12 - .../xserver-kdrive-1.4.99.901/optional-xkb.patch | 58 - .../tslib-default-device.patch | 15 - .../xserver-kdrive-1.4.99.901/w100-autofoo.patch | 54 - .../w100-fix-offscreen-bmp.patch | 15 - .../w100-new-input-world-order.patch | 28 - .../xserver-kdrive-1.4.99.901/w100.patch | 6335 -------------------- .../xcalibrate-new-input-world-order.patch | 159 - .../xorg-avr32-support.diff | 19 - .../xserver-kdrive-1.7.99.2/crosscompile.patch | 19 + .../xserver-kdrive-1.7.99.2/disable-apm.patch | 20 + .../enable-builtin-fonts.patch | 12 + .../enable-xcalibrate.patch | 148 + .../xserver-kdrive-1.7.99.2/extra-kmodes.patch | 83 + .../fbdev_xrandr_ioctl.patch | 61 + .../fix-newer-xorg-headers.patch | 18 + .../hide-cursor-and-ppm-root.patch | 308 + .../xserver-kdrive-1.7.99.2/kdrive-evdev.patch | 515 ++ .../xserver-kdrive-1.7.99.2/kdrive-use-evdev.patch | 54 + .../no-serial-probing.patch | 13 + .../xserver-kdrive-1.7.99.2/optional-xkb.patch | 58 + meta/packages/xorg-xserver/xserver-kdrive.inc | 1 + .../xorg-xserver/xserver-kdrive_1.3.0.0.bb | 28 - .../xorg-xserver/xserver-kdrive_1.4.99.901.bb | 41 - .../xorg-xserver/xserver-kdrive_1.7.99.2.bb | 27 + 32 files changed, 1337 insertions(+), 6909 deletions(-) delete mode 100644 meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/enable-epson.patch delete mode 100644 meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/enable-tslib.patch delete mode 100644 meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/epson.patch delete mode 100644 meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/fbdev-evdev.patch delete mode 100644 meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/fbdev-not-fix.patch delete mode 100644 meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/keyboard-resume-workaround.patch delete mode 100644 meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/linux-keyboard-mediumraw.patch delete mode 100644 meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/no_xkb.patch delete mode 100644 meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/optional-xkb.patch delete mode 100644 meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/tslib-default-device.patch delete mode 100644 meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/w100-autofoo.patch delete mode 100644 meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/w100-fix-offscreen-bmp.patch delete mode 100644 meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/w100-new-input-world-order.patch delete mode 100644 meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/w100.patch delete mode 100644 meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/xcalibrate-new-input-world-order.patch delete mode 100644 meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/xorg-avr32-support.diff create mode 100644 meta/packages/xorg-xserver/xserver-kdrive-1.7.99.2/crosscompile.patch create mode 100644 meta/packages/xorg-xserver/xserver-kdrive-1.7.99.2/disable-apm.patch create mode 100644 meta/packages/xorg-xserver/xserver-kdrive-1.7.99.2/enable-builtin-fonts.patch create mode 100644 meta/packages/xorg-xserver/xserver-kdrive-1.7.99.2/enable-xcalibrate.patch create mode 100644 meta/packages/xorg-xserver/xserver-kdrive-1.7.99.2/extra-kmodes.patch create mode 100644 meta/packages/xorg-xserver/xserver-kdrive-1.7.99.2/fbdev_xrandr_ioctl.patch create mode 100644 meta/packages/xorg-xserver/xserver-kdrive-1.7.99.2/fix-newer-xorg-headers.patch create mode 100644 meta/packages/xorg-xserver/xserver-kdrive-1.7.99.2/hide-cursor-and-ppm-root.patch create mode 100644 meta/packages/xorg-xserver/xserver-kdrive-1.7.99.2/kdrive-evdev.patch create mode 100644 meta/packages/xorg-xserver/xserver-kdrive-1.7.99.2/kdrive-use-evdev.patch create mode 100644 meta/packages/xorg-xserver/xserver-kdrive-1.7.99.2/no-serial-probing.patch create mode 100644 meta/packages/xorg-xserver/xserver-kdrive-1.7.99.2/optional-xkb.patch delete mode 100644 meta/packages/xorg-xserver/xserver-kdrive_1.3.0.0.bb delete mode 100644 meta/packages/xorg-xserver/xserver-kdrive_1.4.99.901.bb create mode 100644 meta/packages/xorg-xserver/xserver-kdrive_1.7.99.2.bb (limited to 'meta') 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 - - 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/optional-xkb.patch b/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/optional-xkb.patch deleted file mode 100644 index 22d8c94c78..0000000000 --- a/meta/packages/xorg-xserver/xserver-kdrive-1.4.99.901/optional-xkb.patch +++ /dev/null @@ -1,58 +0,0 @@ -Index: xorg-server-1.4/Makefile.am -=================================================================== ---- xorg-server-1.4.orig/Makefile.am 2007-08-23 21:04:52.000000000 +0200 -+++ xorg-server-1.4/Makefile.am 2007-09-06 23:19:59.000000000 +0200 -@@ -26,6 +26,10 @@ - GLX_DIR=GL - endif - -+if XKB -+XKB_DIR=xkb -+endif -+ - if DBE - DBE_DIR=dbe - endif -@@ -42,7 +46,7 @@ - randr \ - render \ - Xi \ -- xkb \ -+ $(XKB_DIR) \ - $(DBE_DIR) \ - $(MFB_DIR) \ - $(AFB_DIR) \ -Index: xorg-server-1.4/configure.ac -=================================================================== ---- xorg-server-1.4.orig/configure.ac 2007-09-06 07:59:00.000000000 +0200 -+++ xorg-server-1.4/configure.ac 2007-09-06 23:19:19.000000000 +0200 -@@ -514,6 +514,7 @@ - AC_ARG_ENABLE(config-dbus, AS_HELP_STRING([--enable-config-dbus], [Build D-BUS API support (default: no)]), [CONFIG_DBUS_API=$enableval], [CONFIG_DBUS_API=no]) - AC_ARG_ENABLE(config-hal, AS_HELP_STRING([--disable-config-hal], [Build HAL support (default: auto)]), [CONFIG_HAL=$enableval], [CONFIG_HAL=auto]) - AC_ARG_ENABLE(xfree86-utils, AS_HELP_STRING([--enable-xfree86-utils], [Build xfree86 DDX utilities (default: enabled)]), [XF86UTILS=$enableval], [XF86UTILS=yes]) -+AC_ARG_ENABLE(xkb, AS_HELP_STRING([--disable-xkb], [Build XKB (default: enabled)]), [XKB=$enableval], [XKB=yes]) - - dnl DDXes. - AC_ARG_ENABLE(xorg, AS_HELP_STRING([--enable-xorg], [Build Xorg server (default: auto)]), [XORG=$enableval], [XORG=auto]) -@@ -889,12 +890,15 @@ - - AC_DEFINE(SHAPE, 1, [Support SHAPE extension]) - --AC_DEFINE(XKB, 1, [Build XKB]) --AC_DEFINE(XKB_IN_SERVER, 1, [Build XKB server]) --AC_DEFINE(XKB_DFLT_DISABLED, 0, [Disable XKB per default]) --REQUIRED_MODULES="$REQUIRED_MODULES xkbfile" --XKB_LIB='$(top_builddir)/xkb/libxkb.la' --XKB_STUB_LIB='$(top_builddir)/xkb/libxkbstubs.la' -+AM_CONDITIONAL(XKB, [test "x$XKB" = xyes]) -+if test "x$XKB" = xyes; then -+ AC_DEFINE(XKB, 1, [Build XKB]) -+ AC_DEFINE(XKB_IN_SERVER, 1, [Build XKB server]) -+ AC_DEFINE(XKB_DFLT_DISABLED, 0, [Disable XKB per default]) -+ REQUIRED_MODULES="$REQUIRED_MODULES xkbfile" -+ XKB_LIB='$(top_builddir)/xkb/libxkb.la' -+ XKB_STUB_LIB='$(top_builddir)/xkb/libxkbstubs.la' -+fi - - AC_CHECK_FUNC(strcasecmp, [], AC_DEFINE([NEED_STRCASECMP], 1, - [Do not have 'strcasecmp'.])) 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 -+ * -+ * 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 -+#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)) -+ return FALSE; -+ -+ mmio = atic->reg_base; -+ eml.val = MMIO_IN32(mmio, mmMC_EXT_MEM_LOCATION); -+ atic->ext_mem_location = eml.f.mc_ext_mem_start << 8; -+ ATISetOffscreen(pScreenPriv->screen); -+ -+ return TRUE; -+} -+ -+static void -+ATIDisable(ScreenPtr pScreen) -+{ -+ KdScreenPriv(pScreen); -+ ATICardInfo(pScreenPriv); -+ -+ ATIUnmap(pScreenPriv->card, atic); -+ -+ atic->backend_funcs.disable(pScreen); -+} -+ -+static void -+ATIGetColors(ScreenPtr pScreen, int fb, int n, xColorItem * pdefs) -+{ -+ KdScreenPriv(pScreen); -+ ATICardInfo(pScreenPriv); -+ -+ atic->backend_funcs.getColors(pScreen, fb, n, pdefs); -+} -+ -+static void -+ATIPutColors(ScreenPtr pScreen, int fb, int n, xColorItem * pdefs) -+{ -+ KdScreenPriv(pScreen); -+ ATICardInfo(pScreenPriv); -+ -+ atic->backend_funcs.putColors(pScreen, fb, n, pdefs); -+} -+ -+/* Compute log base 2 of val. */ -+int -+ATILog2(int val) -+{ -+ int bits; -+ -+ for (bits = 0; val != 0; val >>= 1, ++bits); -+ return bits - 1; -+} -+ -+ -+ -+KdCardFuncs ATIFuncs = { -+ ATICardInit, /* cardinit */ -+ ATIScreenInit, /* scrinit */ -+ ATIInitScreen, /* initScreen */ -+ ATIFinishInitScreen, /* finishInitScreen */ -+ ATICreateResources, /* createRes */ -+ ATIPreserve, /* preserve */ -+ ATIEnable, /* enable */ -+ ATIDPMS, /* dpms */ -+ ATIDisable, /* disable */ -+ ATIRestore, /* restore */ -+ ATIScreenFini, /* scrfini */ -+ ATICardFini, /* cardfini */ -+ -+#define ATICursorInit 0 -+#define ATICursorEnable 0 -+#define ATICursorDisable 0 -+#define ATICursorFini 0 -+#define ATIRecolorCursor 0 -+ ATICursorInit, /* initCursor */ -+ ATICursorEnable, /* enableCursor */ -+ ATICursorDisable, /* disableCursor */ -+ ATICursorFini, /* finiCursor */ -+ ATIRecolorCursor, /* recolorCursor */ -+ -+ ATIDrawInit, /* initAccel */ -+ ATIDrawEnable, /* enableAccel */ -+ ATIDrawDisable, /* disableAccel */ -+ ATIDrawFini, /* finiAccel */ -+ -+ ATIGetColors, /* getColors */ -+ ATIPutColors, /* putColors */ -+}; -Index: git/hw/kdrive/w100/ati_cursor.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ git/hw/kdrive/w100/ati_cursor.c 2006-09-02 12:12:14.000000000 +0200 -@@ -0,0 +1,93 @@ -+/* -+ * Copyright © 2006 Alberto Mardegan -+ * -+ * 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 -+#endif -+#include "ati.h" -+#include "cursorstr.h" -+#include "ati_draw.h" -+ -+static void -+ATIMoveCursor(ScreenPtr pScreen, int x, int y) -+{ -+} -+ -+ -+static Bool -+ATIRealizeCursor(ScreenPtr pScreen, CursorPtr pCursor) -+{ -+ return FALSE; -+} -+ -+ -+static Bool -+ATIUnrealizeCursor(ScreenPtr pScreen, CursorPtr pCursor) -+{ -+ return TRUE; -+} -+ -+ -+static void -+ATISetCursor(ScreenPtr pScreen, CursorPtr pCursor, int x, int y) -+{ -+} -+ -+ -+miPointerSpriteFuncRec ATIPointerSpriteFuncs = { -+ ATIRealizeCursor, -+ ATIUnrealizeCursor, -+ ATISetCursor, -+ ATIMoveCursor, -+}; -+ -+ -+void -+ATICursorEnable(ScreenPtr pScreen) -+{ -+} -+ -+ -+void -+ATICursorDisable(ScreenPtr pScreen) -+{ -+} -+ -+ -+Bool -+ATICursorInit(ScreenPtr pScreen) -+{ -+ return FALSE; -+} -+ -+ -+void -+ATIRecolorCursor(ScreenPtr pScreen, int ndef, xColorItem * pdef) -+{ -+ return; -+} -+ -+ -+void -+ATICursorFini(ScreenPtr pScreen) -+{ -+} -Index: git/hw/kdrive/w100/ati_dma.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ git/hw/kdrive/w100/ati_dma.c 2006-09-02 12:12:14.000000000 +0200 -@@ -0,0 +1,333 @@ -+/* -+ * Copyright © 2006 Alberto Mardegan -+ * -+ * 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. -+ */ -+ -+#include -+ -+#include "ati.h" -+#include "w100_regs.h" -+#include "w100_const.h" -+#include "ati_dma.h" -+#include "ati_draw.h" -+ -+ -+#define DEBUG_FIFO 0 -+ -+extern CARD32 w100_microcode[][2]; -+ -+#if DEBUG_FIFO -+static void -+ATIDebugFifo(ATIScreenInfo * atis) -+{ -+ ATICardInfo *atic = atis->atic; -+ char *mmio = atic->reg_base; -+ -+ ErrorF("mmCP_CSQ_CNTL: 0x%08x\n", MMIO_IN32(mmio, mmCP_CSQ_CNTL)); -+ ErrorF("mmCP_CSQ_STAT: 0x%08x\n", MMIO_IN32(mmio, mmCP_CSQ_STAT)); -+ ErrorF("mmRBBM_STATUS: 0x%08x\n", MMIO_IN32(mmio, mmRBBM_STATUS)); -+} -+#endif -+ -+static void -+ATIUploadMicrocode(ATIScreenInfo * atis) -+{ -+ ATICardInfo *atic = atis->atic; -+ char *mmio = atic->reg_base; -+ int i; -+ -+ MMIO_OUT32(mmio, mmCP_ME_RAM_ADDR, 0); -+ for (i = 0; i < 256; i++) { -+ MMIO_OUT32(mmio, mmCP_ME_RAM_DATAH, w100_microcode[i][1]); -+ MMIO_OUT32(mmio, mmCP_ME_RAM_DATAL, w100_microcode[i][0]); -+ } -+} -+ -+/* Required when reading from video memory after acceleration to make sure all -+ * data has been flushed to video memory from the pixel cache. -+ */ -+static void -+ATIFlushPixelCache(ATIScreenInfo * atis) -+{ -+ ATICardInfo *atic = atis->atic; -+ char *mmio = atic->reg_base; -+ rbbm_status_u rs; -+ TIMEOUT_LOCALS; -+ -+ WHILE_NOT_TIMEOUT(.2) { -+ rs.val = MMIO_IN32(mmio, mmRBBM_STATUS); -+ if (!rs.f.gui_active) -+ break; -+ } -+ if (TIMEDOUT()) -+ ErrorF("Timeout flushing pixel cache.\n"); -+} -+ -+static void -+ATIEngineReset(ATIScreenInfo * atis) -+{ -+ ATICardInfo *atic = atis->atic; -+ char *mmio = atic->reg_base; -+ CARD32 sclk_cntl; -+ sclk_cntl_u sc; -+ rbbm_soft_reset_u rsr; -+ -+#if DEBUG_FIFO -+ ErrorF("Engine Reset!\n"); -+ ATIDebugFifo(atis); -+#endif -+ -+ ATIFlushPixelCache(atis); -+ -+ sc.val = sclk_cntl = MMIO_IN32(mmio, mmSCLK_CNTL); -+ sc.f.sclk_force_e2 = sc.f.sclk_force_e3 = sc.f.sclk_force_idct = 1; -+ MMIO_OUT32(mmio, mmSCLK_CNTL, sc.val); -+ -+ rsr.val = 0; -+ rsr.f.soft_reset_e2 = 1; -+ MMIO_OUT32(mmio, mmRBBM_SOFT_RESET, rsr.val); -+ MMIO_OUT32(mmio, mmRBBM_SOFT_RESET, 0); -+ -+ MMIO_OUT32(mmio, mmSCLK_CNTL, sclk_cntl); -+} -+ -+inline void -+ATIWaitAvailMMIO(ATIScreenInfo * atis, int n) -+{ -+ ATICardInfo *atic = atis->atic; -+ char *mmio = atic->reg_base; -+ rbbm_status_u rs; -+ TIMEOUT_LOCALS; -+ -+ if (atis->mmio_avail >= n) { -+ atis->mmio_avail -= n; -+ return; -+ } -+ WHILE_NOT_TIMEOUT(.2) { -+ rs.val = MMIO_IN32(mmio, mmRBBM_STATUS); -+ atis->mmio_avail = rs.f.cmdfifo_avail; -+ if (atis->mmio_avail >= n) -+ break; -+ ErrorF("Available %d slots.\n", atis->mmio_avail); -+ } -+ if (TIMEDOUT()) { -+ ErrorF("Timeout waiting for %d MMIO slots.\n", n); -+ ATIEngineReset(atis); -+ ATIDrawSetup(atis->screen->pScreen); -+ } -+ atis->mmio_avail -= n; -+} -+ -+ -+void -+ATIWaitIdle(ATIScreenInfo * atis) -+{ -+ ATICardInfo *atic = atis->atic; -+ char *mmio = atic->reg_base; -+ rbbm_status_u rs; -+ TIMEOUT_LOCALS; -+ -+ /* Empty the fifo */ -+ ATIWaitAvailMMIO(atis, 16); -+ -+ WHILE_NOT_TIMEOUT(.2) { -+ rs.val = MMIO_IN32(mmio, mmRBBM_STATUS); -+ if (!rs.f.gui_active) -+ break; -+#if DEBUG_FIFO -+ ATIDebugFifo(atis); -+#endif -+ /* don't know if this is needed, but it's in aticore */ -+ MMIO_IN32(mmio, mmCP_RB_RPTR); -+ } -+ if (TIMEDOUT()) { -+ ErrorF("Timeout idling accelerator, resetting...\n"); -+ ATIEngineReset(atis); -+ ATIDrawSetup(atis->screen->pScreen); -+ } -+ -+ ATIFlushPixelCache(atis); -+ -+#if DEBUG_FIFO -+ ErrorF("Idle?\n"); -+ ATIDebugFifo(atis); -+#endif -+} -+ -+ -+static Bool -+ATIDMAInit(ScreenPtr pScreen, Bool use_agp) -+{ -+ KdScreenPriv(pScreen); -+ ATIScreenInfo(pScreenPriv); -+ ATICardInfo(pScreenPriv); -+ char *mmio = atic->reg_base; -+ int dma_offset, rbsize = 10; -+ wrap_start_dir_u wsd; -+ wrap_buf_a_u wba; -+ cp_rb_cntl_u rc; -+ cp_csq_cntl_u cc; -+ CARD32 mem_offset; -+ -+ /* with rbsize = 10, DMA buffer will be of 0x2000 (8192) bytes */ -+ atis->ring_count = 1 << (rbsize + 1); -+ atis->ring_mask = atis->ring_count - 1; -+ atis->ring_len = atis->ring_count * 4; -+ atis->dma_space = KdOffscreenAlloc(pScreen, atis->ring_len, -+ 16, TRUE, NULL, NULL); -+ if (atis->dma_space == NULL) -+ return FALSE; -+ -+ wsd.val = MMIO_IN32(mmio, mmWRAP_START_DIR); -+ atis->ring_addr = -+ (CARD32 *) (atic->mem_base + (wsd.f.start_addr << 1)); -+ dma_offset = atis->dma_space->offset; -+ -+ ATIUploadMicrocode(atis); -+ ATIEngineReset(atis); -+ -+ atis->ring_read = 0; -+ atis->ring_write = 0; -+ atis->ring_free = atis->ring_count; -+ -+ mem_offset = atic->ext_mem_location + atis->dma_space->offset; -+ MMIO_OUT32(mmio, mmCP_RB_BASE, mem_offset); -+ MMIO_OUT32(mmio, mmCP_RB_WPTR, atis->ring_write); -+ MMIO_OUT32(mmio, mmCP_RB_RPTR, atis->ring_read); -+ MMIO_OUT32(mmio, mmCP_RB_RPTR_ADDR, 0); -+ -+ wba.val = 0; -+ wba.f.offset_addr_a = mem_offset; -+ switch (rbsize) { -+ case 9: -+ wba.f.block_size_a = WB_BLOCK_SIZE_A_0; -+ break; -+ case 10: -+ wba.f.block_size_a = WB_BLOCK_SIZE_A_1; -+ break; -+ case 11: -+ wba.f.block_size_a = WB_BLOCK_SIZE_A_2; -+ break; -+ case 12: -+ wba.f.block_size_a = WB_BLOCK_SIZE_A_3; -+ break; -+ case 13: -+ wba.f.block_size_a = WB_BLOCK_SIZE_A_4; -+ break; -+ } -+ MMIO_OUT32(mmio, mmWRAP_BUF_A, wba.val); -+ -+ rc.val = 0; -+ rc.f.rb_no_update = 1; -+ rc.f.rb_bufsz = rbsize; -+ MMIO_OUT32(mmio, mmCP_RB_CNTL, rc.val); -+ -+ cc.val = 0; -+ cc.f.csq_mode = CSQ_CNTL_MODE_FREERUN; -+ MMIO_OUT32(mmio, mmCP_CSQ_CNTL, cc.val); -+ -+ return TRUE; -+} -+ -+static Bool -+ATIDMAFini(ScreenPtr pScreen) -+{ -+ KdScreenPriv(pScreen); -+ ATIScreenInfo(pScreenPriv); -+ ATICardInfo(pScreenPriv); -+ char *mmio = atic->reg_base; -+ -+ MMIO_OUT32(mmio, mmCP_CSQ_CNTL, 0); -+ -+ ATIEngineReset(atis); -+ -+ //KdOffscreenFree(pScreen, atis->dma_space); -+ -+ return TRUE; -+} -+ -+void -+ATIDMASetup(ScreenPtr pScreen) -+{ -+ KdScreenPriv(pScreen); -+ ATIScreenInfo(pScreenPriv); -+ -+ atis->using_dma = FALSE; -+ atis->using_pio = FALSE; -+ if (ATIDMAInit(pScreen, FALSE)) -+ atis->using_dma = TRUE; -+ -+ if (atis->using_dma) -+ ErrorF("Initialized DMA\n"); -+} -+ -+void -+ATIDMATeardown(ScreenPtr pScreen) -+{ -+ KdScreenPriv(pScreen); -+ ATIScreenInfo(pScreenPriv); -+ -+ ATIWaitIdle(atis); -+ -+ if (atis->using_dma) -+ ATIDMAFini(pScreen); -+ -+ atis->using_pio = FALSE; -+ atis->using_dma = FALSE; -+} -+ -+ -+CARD32 * -+ATIRequestEntries(ATIScreenInfo * atis, int n) -+{ -+ char *mmio = atis->atic->reg_base; -+ CARD32 *ptr; -+ TIMEOUT_LOCALS; -+ -+ WHILE_NOT_TIMEOUT(1) { -+ if (atis->ring_free > n) { -+ ptr = atis->ring_addr + atis->ring_write; -+ return ptr; -+ } -+ atis->ring_read = MMIO_IN32(mmio, mmCP_RB_RPTR); -+ atis->ring_write = MMIO_IN32(mmio, mmCP_RB_WPTR); -+ -+ if (atis->ring_read == atis->ring_write) { -+ atis->ring_free = atis->ring_count; -+ } else { -+ atis->ring_free = -+ (atis->ring_count + -+ atis->ring_read - atis->ring_write) & atis->ring_mask; -+ } -+ } -+ if (TIMEDOUT()) -+ ErrorF("Timeout waiting for %d entries.\n", n); -+ return NULL; -+} -+ -+void -+ATISubmitEntries(ATIScreenInfo * atis, int n) -+{ -+ char *mmio = atis->atic->reg_base; -+ atis->ring_free -= n; -+ atis->ring_write += n; -+ atis->ring_write &= atis->ring_mask; -+ MMIO_OUT32(mmio, mmCP_RB_WPTR, atis->ring_write); -+} -Index: git/hw/kdrive/w100/ati_dma.h -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ git/hw/kdrive/w100/ati_dma.h 2006-09-02 12:12:14.000000000 +0200 -@@ -0,0 +1,176 @@ -+/* -+ * Copyright © 2004 Eric Anholt -+ * -+ * 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 Eric Anholt not be used in -+ * advertising or publicity pertaining to distribution of the software without -+ * specific, written prior permission. Eric Anholt makes no -+ * representations about the suitability of this software for any purpose. It -+ * is provided "as is" without express or implied warranty. -+ * -+ * ERIC ANHOLT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -+ * EVENT SHALL ERIC ANHOLT 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. -+ */ -+/* $Header: /cvs/xserver/xserver/hw/kdrive/ati/ati_dma.h,v 1.5 2005-01-27 05:25:57 anholt Exp $ */ -+ -+#ifndef _ATI_DMA_H_ -+#define _ATI_DMA_H_ -+ -+#define CCE_DEBUG 1 -+ -+/* CCE packet defines */ -+ -+#define ATI_CCE_PACKETTYPE_MASK 0xc0000000 -+#define ATI_CCE_PACKET0 0x00000000 -+#define ATI_CCE_PACKET0_COUNT_MASK 0x3fff0000 -+#define ATI_CCE_PACKET0_ONE_REG_WR 0x00008000 -+#define ATI_CCE_PACKET0_REG_MASK 0x000007ff -+#define ATI_CCE_PACKET1 0x40000000 -+#define ATI_CCE_PACKET1_REG_1 0x000007ff -+#define ATI_CCE_PACKET1_REG_2 0x003ff800 -+#define ATI_CCE_PACKET1_REG_2_SHIFT 10 -+#define ATI_CCE_PACKET2 0x80000000 -+#define ATI_CCE_PACKET3 0xc0000000 -+#define ATI_CCE_PACKET3_COUNT_MASK 0x3fff0000 -+#define ATI_CCE_PACKET3_IT_OPCODE_MASK 0x0000ff00 -+ -+ -+#if !CCE_DEBUG -+#define DMA_PACKET0(reg, count) \ -+ (ATI_CCE_PACKET0 | (((count) - 1) << 16) | ((reg) >> 2)) -+#else -+#define DMA_PACKET0(reg, count) \ -+ (__packet0count = (count), __reg = (reg), \ -+ ATI_CCE_PACKET0 | (((count) - 1) << 16) | ((reg) >> 2)) -+#endif -+#define DMA_PACKET1(reg1, reg2) \ -+ (ATI_CCE_PACKET1 | \ -+ (((reg2) >> 2) << ATI_CCE_PACKET1_REG_2_SHIFT) | ((reg1) >> 2)) -+#define DMA_PACKET3(type, count) \ -+ ((type) | (((count) - 1) << 16)) -+ -+ -+ -+#ifdef USE_DMA -+ -+#if !CCE_DEBUG -+ -+#define RING_LOCALS \ -+ CARD32 *__head; int __count -+#define BEGIN_DMA(n) \ -+do { \ -+ __head = ATIRequestEntries(atis, n); \ -+ __count = 0; \ -+} while (0) -+#define END_DMA() do { \ -+ ATISubmitEntries(atis, __count); \ -+} while (0) -+ -+#else /* CCE_DEBUG */ -+#define RING_LOCALS \ -+ CARD32 *__head; int __count, __total, __reg, __packet0count -+#define BEGIN_DMA(n) \ -+do { \ -+ __head = ATIRequestEntries(atis, n); \ -+ __count = 0; \ -+ __total = n; \ -+ __reg = 0; \ -+ __packet0count = 0; \ -+} while (0) -+#define END_DMA() do { \ -+ if (__count != __total) \ -+ FatalError("count != total (%d vs %d) at %s:%d\n", \ -+ __count, __total, __FILE__, __LINE__); \ -+ ATISubmitEntries(atis, __count); \ -+} while (0) -+ -+#endif /* CCE_DEBUG */ -+ -+#define BEGIN_DMA_REG(n) BEGIN_DMA(n * 2) -+#define END_DMA_REG() END_DMA() -+ -+#define OUT_REG(reg, val) \ -+do { \ -+ OUT_RING(DMA_PACKET0(reg, 1)); \ -+ OUT_RING(val); \ -+} while (0) -+ -+ -+#else /* USE_DMA */ -+ -+ -+#define RING_LOCALS char *__mmio = atis->atic->reg_base -+#define BEGIN_DMA_REG(n) \ -+do { \ -+ ATIWaitAvailMMIO(atis, n); \ -+} while (0) -+#define END_DMA_REG() do {} while (0) -+#define OUT_REG(reg, val) MMIO_OUT32(__mmio, reg, val) -+#endif /* USE_DMA */ -+ -+ -+#define OUT_RING(val) do { \ -+ __head[__count++] = (val); \ -+} while (0) -+ -+#define OUT_RING_REG(reg, val) do { \ -+ if (__reg != reg) \ -+ FatalError("unexpected reg (0x%x vs 0x%x) at %s:%d\n", \ -+ reg, __reg, __FILE__, __LINE__); \ -+ if (__packet0count-- <= 0) \ -+ FatalError("overrun of packet0 at %s:%d\n", \ -+ __FILE__, __LINE__); \ -+ __head[__count++] = (val); \ -+ __reg += 4; \ -+} while (0) -+ -+#define OUT_RING_F(x) OUT_RING(GET_FLOAT_BITS(x)) -+ -+#define TIMEOUT_LOCALS struct timeval _target, _curtime -+ -+static inline Bool -+tv_le(struct timeval *tv1, struct timeval *tv2) -+{ -+ if (tv1->tv_sec < tv2->tv_sec || -+ (tv1->tv_sec == tv2->tv_sec && tv1->tv_usec < tv2->tv_usec)) -+ return TRUE; -+ else -+ return FALSE; -+} -+ -+#define WHILE_NOT_TIMEOUT(_timeout) \ -+ gettimeofday(&_target, NULL); \ -+ _target.tv_usec += ((_timeout) * 1000000); \ -+ _target.tv_sec += _target.tv_usec / 1000000; \ -+ _target.tv_usec = _target.tv_usec % 1000000; \ -+ while (gettimeofday(&_curtime, NULL), tv_le(&_curtime, &_target)) -+ -+#define TIMEDOUT() (!tv_le(&_curtime, &_target)) -+ -+ -+void -+ATIFlushIndirect(ATIScreenInfo *atis, Bool discard); -+ -+void -+ATIDMASetup(ScreenPtr pScreen); -+ -+void -+ATIDMATeardown(ScreenPtr pScreen); -+ -+CARD32 * -+ATIRequestEntries(ATIScreenInfo *atis, int n); -+ -+void -+ATISubmitEntries(ATIScreenInfo *atis, int n); -+ -+inline void -+ATIWaitAvailMMIO(ATIScreenInfo *atis, int n); -+#endif /* _ATI_DMA_H_ */ -Index: git/hw/kdrive/w100/ati_draw.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ git/hw/kdrive/w100/ati_draw.c 2006-09-02 12:12:14.000000000 +0200 -@@ -0,0 +1,477 @@ -+/* -+ * Copyright © 2006 Alberto Mardegan -+ * -+ * 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. -+ */ -+ -+#define USE_DMA -+#define DRAW_USING_PACKET3 -+ -+#ifdef HAVE_CONFIG_H -+#include -+#endif -+#include "ati.h" -+#include "w100_regs.h" -+#include "w100_const.h" -+#include "ati_dma.h" -+#include "ati_draw.h" -+#include "kaa.h" -+ -+ -+CARD8 ATISolidRop[16] = { -+ /* GXclear */ 0x00, -+ /* 0 */ -+ /* GXand */ 0xa0, -+ /* src AND dst */ -+ /* GXandReverse */ 0x50, -+ /* src AND NOT dst */ -+ /* GXcopy */ 0xf0, -+ /* src */ -+ /* GXandInverted */ 0x0a, -+ /* NOT src AND dst */ -+ /* GXnoop */ 0xaa, -+ /* dst */ -+ /* GXxor */ 0x5a, -+ /* src XOR dst */ -+ /* GXor */ 0xfa, -+ /* src OR dst */ -+ /* GXnor */ 0x05, -+ /* NOT src AND NOT dst */ -+ /* GXequiv */ 0xa5, -+ /* NOT src XOR dst */ -+ /* GXinvert */ 0x55, -+ /* NOT dst */ -+ /* GXorReverse */ 0xf5, -+ /* src OR NOT dst */ -+ /* GXcopyInverted */ 0x0f, -+ /* NOT src */ -+ /* GXorInverted */ 0xaf, -+ /* NOT src OR dst */ -+ /* GXnand */ 0x5f, -+ /* NOT src OR NOT dst */ -+ /* GXset */ 0xff, -+ /* 1 */ -+}; -+ -+CARD8 ATIBltRop[16] = { -+ /* GXclear */ 0x00, -+ /* 0 */ -+ /* GXand */ 0x88, -+ /* src AND dst */ -+ /* GXandReverse */ 0x44, -+ /* src AND NOT dst */ -+ /* GXcopy */ 0xcc, -+ /* src */ -+ /* GXandInverted */ 0x22, -+ /* NOT src AND dst */ -+ /* GXnoop */ 0xaa, -+ /* dst */ -+ /* GXxor */ 0x66, -+ /* src XOR dst */ -+ /* GXor */ 0xee, -+ /* src OR dst */ -+ /* GXnor */ 0x11, -+ /* NOT src AND NOT dst */ -+ /* GXequiv */ 0x99, -+ /* NOT src XOR dst */ -+ /* GXinvert */ 0x55, -+ /* NOT dst */ -+ /* GXorReverse */ 0xdd, -+ /* src OR NOT dst */ -+ /* GXcopyInverted */ 0x33, -+ /* NOT src */ -+ /* GXorInverted */ 0xbb, -+ /* NOT src OR dst */ -+ /* GXnand */ 0x77, -+ /* NOT src OR NOT dst */ -+ /* GXset */ 0xff, -+ /* 1 */ -+}; -+ -+static int copydx, copydy; -+static ATIScreenInfo *accel_atis; -+static char *accel_mmio; -+ -+ -+void -+ATIDrawSetup(ScreenPtr pScreen) -+{ -+ KdScreenPriv(pScreen); -+ ATIScreenInfo(pScreenPriv); -+ default_sc_bottom_right_u dsbr; -+ RING_LOCALS; -+ -+ dsbr.val = 0; -+ dsbr.f.default_sc_right = dsbr.f.default_sc_bottom = W100_MAXINT; -+ -+ BEGIN_DMA_REG(2); -+ OUT_REG(mmDEFAULT_SC_BOTTOM_RIGHT, dsbr.val); -+ OUT_REG(mmSRC_SC_BOTTOM_RIGHT, dsbr.val); -+ END_DMA_REG(); -+} -+ -+static void -+ATIWaitMarker(ScreenPtr pScreen, int marker) -+{ -+ KdScreenPriv(pScreen); -+ ATIScreenInfo(pScreenPriv); -+ -+ ENTER_DRAW(0); -+ ATIWaitIdle(atis); -+ LEAVE_DRAW(0); -+} -+ -+ -+#if ATI_TRACE_DRAW -+void -+ATIEnterDraw(PixmapPtr pPix, const char *function) -+{ -+ if (pPix != NULL) { -+ KdScreenPriv(pPix->drawable.pScreen); -+ CARD32 offset; -+ -+ offset = ((CARD8 *) pPix->devPrivate.ptr - -+ pScreenPriv->screen->memory_base); -+ -+ ErrorF("Enter %s 0x%x (%dx%dx%d/%d)\n", function, offset, -+ pPix->drawable.width, pPix->drawable.height, -+ pPix->drawable.depth, pPix->drawable.bitsPerPixel); -+ } else -+ ErrorF("Enter %s\n", function); -+} -+ -+void -+ATILeaveDraw(PixmapPtr pPix, const char *function) -+{ -+ if (pPix != NULL) { -+ KdScreenPriv(pPix->drawable.pScreen); -+ CARD32 offset; -+ -+ offset = ((CARD8 *) pPix->devPrivate.ptr - -+ pScreenPriv->screen->memory_base); -+ -+ ErrorF("Leave %s 0x%x\n", function, offset); -+ } else -+ ErrorF("Leave %s\n", function); -+} -+#endif -+ -+/* Assumes that depth 15 and 16 can be used as depth 16, which is okay since we -+ * require src and dest datatypes to be equal. -+ */ -+static Bool -+ATIGetDatatypeBpp(int bpp, CARD32 * type) -+{ -+ switch (bpp) { -+ case 8: -+ *type = DATATYPE_8BPP; -+ return TRUE; -+ case 16: -+ *type = DATATYPE_ARGB1555; -+ return TRUE; -+ default: -+ ATI_FALLBACK(("Unsupported bpp: %d\n", bpp)); -+ return FALSE; -+ } -+} -+ -+ -+Bool -+ATIGetPixmapOffsetPitch(PixmapPtr pPix, CARD32 * pitch, CARD32 * offset) -+{ -+ KdScreenPriv(pPix->drawable.pScreen); -+ ATICardInfo(pScreenPriv); -+ -+ /* XXX this only works for surfaces allocated in external memory */ -+ *offset = ((CARD8 *) pPix->devPrivate.ptr - -+ pScreenPriv->screen->memory_base) + atic->ext_mem_location; -+ *pitch = pPix->devKind >> 1; -+ -+ return TRUE; -+} -+ -+ -+static Bool -+ATIPrepareSolid(PixmapPtr pPix, int alu, Pixel pm, Pixel fg) -+{ -+ KdScreenPriv(pPix->drawable.pScreen); -+ ATIScreenInfo(pScreenPriv); -+ ATICardInfo(pScreenPriv); -+ CARD32 datatype, dst_pitch, dst_offset; -+ dp_gui_master_cntl_u gmc; -+ dp_cntl_u dp_cntl; -+ RING_LOCALS; -+ -+ accel_atis = atis; -+ accel_mmio = atic->reg_base; -+ -+ if (!ATIGetDatatypeBpp(pPix->drawable.bitsPerPixel, &datatype)) -+ return FALSE; -+ if (!ATIGetPixmapOffsetPitch(pPix, &dst_pitch, &dst_offset)) -+ return FALSE; -+ -+ ENTER_DRAW(pPix); -+ -+ gmc.val = 0; -+ gmc.f.gmc_dst_pitch_offset_cntl = 1; -+ gmc.f.gmc_dst_clipping = 1; -+ gmc.f.gmc_brush_datatype = BRUSH_SOLIDCOLOR; -+ gmc.f.gmc_dst_datatype = datatype; -+ gmc.f.gmc_src_datatype = datatype; -+ gmc.f.gmc_byte_pix_order = 1; -+ gmc.f.gmc_rop3 = ATISolidRop[alu]; -+ gmc.f.gmc_dp_src_source = SOURCE_MEM_RECTANGULAR; -+ gmc.f.gmc_clr_cmp_fcn_dis = 1; -+ gmc.f.gmc_dp_op = OP_ROP; -+ -+ dp_cntl.val = 0; -+ dp_cntl.f.dst_x_dir = 1; -+ dp_cntl.f.dst_y_dir = 1; -+ -+ BEGIN_DMA_REG(6); -+ OUT_REG(mmDST_PITCH, dst_pitch); -+ OUT_REG(mmDST_OFFSET, dst_offset); -+ OUT_REG(mmDP_GUI_MASTER_CNTL, gmc.val); -+ OUT_REG(mmDP_BRUSH_FRGD_CLR, fg); -+ OUT_REG(mmDP_WRITE_MSK, pm); -+ OUT_REG(mmDP_CNTL, dp_cntl.val); -+ END_DMA_REG(); -+ -+ LEAVE_DRAW(pPix); -+ return TRUE; -+} -+ -+static void -+ATISolid(int x1, int y1, int x2, int y2) -+{ -+ ENTER_DRAW(0); -+ ATIScreenInfo *atis = accel_atis; -+ RING_LOCALS; -+ -+#ifdef DRAW_USING_PACKET3 -+ BEGIN_DMA(3); -+ OUT_RING(DMA_PACKET3(W100_CCE_PACKET3_PAINT_MULTI, 2)); -+ OUT_RING((x1 << 16) | y1); -+ OUT_RING(((x2 - x1) << 16) | (y2 - y1)); -+ END_DMA(); -+#elif defined DRAW_USING_PACKET0 -+ BEGIN_DMA(3); -+ OUT_RING(DMA_PACKET0(mmDST_Y_X, 2)); -+ OUT_RING_REG(mmDST_Y_X, (y1 << 16) | x1); -+ OUT_RING_REG(mmDST_HEIGHT_WIDTH, ((y2 - y1) << 16) | (x2 - x1)); -+ END_DMA(); -+#else -+ BEGIN_DMA_REG(2); -+ OUT_REG(mmDST_Y_X, (y1 << 16) | x1); -+ OUT_REG(mmDST_HEIGHT_WIDTH, ((y2 - y1) << 16) | (x2 - x1)); -+ END_DMA_REG(); -+#endif -+ LEAVE_DRAW(0); -+} -+ -+ -+static void -+ATIDoneSolid(void) -+{ -+ ENTER_DRAW(0); -+ LEAVE_DRAW(0); -+} -+ -+ -+static Bool -+ATIPrepareCopy(PixmapPtr pSrc, PixmapPtr pDst, int dx, int dy, int alu, -+ Pixel pm) -+{ -+ KdScreenPriv(pDst->drawable.pScreen); -+ ATIScreenInfo(pScreenPriv); -+ ATICardInfo(pScreenPriv); -+ CARD32 datatype, src_pitch, src_offset, dst_pitch, dst_offset; -+ dp_gui_master_cntl_u gmc; -+ dp_cntl_u dp_cntl; -+ dp_datatype_u dpdt; -+ RING_LOCALS; -+ -+ accel_mmio = atic->reg_base; -+ copydx = dx; -+ copydy = dy; -+ accel_atis = atis; -+ -+ if (!ATIGetDatatypeBpp(pDst->drawable.bitsPerPixel, &datatype)) -+ return FALSE; -+ if (!ATIGetPixmapOffsetPitch(pSrc, &src_pitch, &src_offset)) -+ return FALSE; -+ if (!ATIGetPixmapOffsetPitch(pDst, &dst_pitch, &dst_offset)) -+ return FALSE; -+ -+ ENTER_DRAW(pDst); -+ -+ gmc.val = 0; -+ gmc.f.gmc_src_pitch_offset_cntl = 1; -+ gmc.f.gmc_dst_pitch_offset_cntl = 1; -+ gmc.f.gmc_src_clipping = 1; -+ gmc.f.gmc_dst_clipping = 1; -+ gmc.f.gmc_brush_datatype = BRUSH_NONE; -+ gmc.f.gmc_dst_datatype = datatype; -+ gmc.f.gmc_src_datatype = datatype; -+ gmc.f.gmc_byte_pix_order = 1; -+ gmc.f.gmc_rop3 = ATIBltRop[alu]; -+ gmc.f.gmc_dp_src_source = SOURCE_MEM_RECTANGULAR; -+ gmc.f.gmc_clr_cmp_fcn_dis = 1; -+ gmc.f.gmc_dp_op = OP_ROP; -+ -+ dp_cntl.val = 0; -+ if (dx >= 0) -+ dp_cntl.f.dst_x_dir = 1; -+ if (dy >= 0) -+ dp_cntl.f.dst_y_dir = 1; -+ -+ dpdt.val = 0; -+ dpdt.f.dp_dst_datatype = datatype; -+ dpdt.f.dp_src_datatype = datatype; -+ dpdt.f.dp_byte_pix_order = 1; -+ -+ BEGIN_DMA_R