summaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
authorMichael Lauer <mickey@vanille-media.de>2007-09-15 18:46:39 +0000
committerMichael Lauer <mickey@vanille-media.de>2007-09-15 18:46:39 +0000
commit76c075092edae2d22978580fc9c1cebdd4fefd1a (patch)
treeb5b1c8feae6269633a0b6dd6499ac9da442fa1bd /packages
parent7d7fb07b49543bc0f34a25b2c9d543b9304bfd18 (diff)
parent651a118bdabb0ee8f6838a7f87276e37c9ea60c2 (diff)
merge of '6b8b18ee5d630cef0d9e1ebea010f36e7bdb083c'
and 'a3ee5d88f6d1100cd285c2fead8e37018bd42a9f'
Diffstat (limited to 'packages')
-rw-r--r--packages/glibc/eglibc-svn/export-fcntl2.patch11
-rw-r--r--packages/glibc/eglibc_svn.bb1
-rw-r--r--packages/glibc/glibc-package.bbclass7
-rw-r--r--packages/gnome/gconf-dbus_svn.bb2
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/a1200/defconfig12
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/lcd_18BPP_support.diff270
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/rokre6/defconfig12
-rw-r--r--packages/linux/linux-ezx_2.6.21.bb116
-rw-r--r--packages/linux/linux-handhelds-2.6/h2200/defconfig2
-rw-r--r--packages/linux/linux-handhelds-2.6_2.6.21-hh16.bb2
-rw-r--r--packages/openocd/openocd_svn.bb3
-rw-r--r--packages/pointercal/files/a780/.mtn2git_empty0
-rw-r--r--packages/pointercal/files/a780/pointercal1
-rw-r--r--packages/pointercal/pointercal_0.0.bb2
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.3.0.0/kdrive-1.3-18bpp.patch419
15 files changed, 776 insertions, 84 deletions
diff --git a/packages/glibc/eglibc-svn/export-fcntl2.patch b/packages/glibc/eglibc-svn/export-fcntl2.patch
deleted file mode 100644
index 0bf6c57852..0000000000
--- a/packages/glibc/eglibc-svn/export-fcntl2.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- libc/io/Makefile.orig 2007-08-07 17:41:33.000000000 -0700
-+++ libc/io/Makefile 2007-08-07 17:42:25.000000000 -0700
-@@ -23,7 +23,7 @@ subdir := io
-
- headers := sys/stat.h bits/stat.h sys/statfs.h bits/statfs.h sys/vfs.h \
- sys/statvfs.h bits/statvfs.h fcntl.h sys/fcntl.h bits/fcntl.h \
-- poll.h sys/poll.h bits/poll.h \
-+ poll.h sys/poll.h bits/poll.h bits/fcntl2.h \
- utime.h ftw.h fts.h sys/sendfile.h
-
- routines := \
diff --git a/packages/glibc/eglibc_svn.bb b/packages/glibc/eglibc_svn.bb
index 0b69283681..1fe67d46fe 100644
--- a/packages/glibc/eglibc_svn.bb
+++ b/packages/glibc/eglibc_svn.bb
@@ -5,7 +5,6 @@ FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/eglibc-svn"
PV = "2.6+svnr${SRCREV}"
PR = "r1"
SRC_URI = "svn://svn.eglibc.org;module=trunk \
- file://export-fcntl2.patch;patch=1 \
file://etc/ld.so.conf \
file://generate-supported.mk"
S = "${WORKDIR}/trunk/libc"
diff --git a/packages/glibc/glibc-package.bbclass b/packages/glibc/glibc-package.bbclass
index 63feb46f34..ba105d02c3 100644
--- a/packages/glibc/glibc-package.bbclass
+++ b/packages/glibc/glibc-package.bbclass
@@ -147,8 +147,11 @@ do_prep_locale_tree() {
gunzip $i
done
ls ${D}/lib/* | xargs -iBLAH cp -a BLAH $treedir/lib
- if [ -f ${CROSS_DIR}/${TARGET_SYS}/lib/libgcc_s.* ]; then
- cp -a ${CROSS_DIR}/${TARGET_SYS}/lib/libgcc_s.* $treedir/lib
+ if [ -f ${CROSS_DIR}/${TARGET_SYS}/lib/libgcc_s.so ]; then
+ cp -a ${CROSS_DIR}/${TARGET_SYS}/lib/libgcc_s.so $treedir/lib
+ fi
+ if [ -f ${CROSS_DIR}/${TARGET_SYS}/lib/libgcc_s.so.* ]; then
+ cp -a ${CROSS_DIR}/${TARGET_SYS}/lib/libgcc_s.so.* $treedir/lib
fi
install -m 0755 ${D}${bindir}/localedef $treedir/bin
}
diff --git a/packages/gnome/gconf-dbus_svn.bb b/packages/gnome/gconf-dbus_svn.bb
index 5a5e78a207..fce1746b22 100644
--- a/packages/gnome/gconf-dbus_svn.bb
+++ b/packages/gnome/gconf-dbus_svn.bb
@@ -1,5 +1,5 @@
SECTION = "x11/utils"
-DEPENDS = "intltool-native glib-2.0 dbus dbus-glib libxml2 popt gtk-doc-native"
+DEPENDS = "intltool-native virtual/libintl glib-2.0 dbus dbus-glib libxml2 popt gtk-doc-native"
DESCRIPTION = "Settings daemon using DBUS for communication."
LICENSE = "GPL"
PROVIDES = "gconf"
diff --git a/packages/linux/linux-ezx-2.6.21/a1200/defconfig b/packages/linux/linux-ezx-2.6.21/a1200/defconfig
index ea7475ced2..3cf42ac8b1 100755
--- a/packages/linux/linux-ezx-2.6.21/a1200/defconfig
+++ b/packages/linux/linux-ezx-2.6.21/a1200/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.21.4
-# Sun Sep 9 16:54:53 2007
+# Sat Sep 15 18:27:06 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -592,7 +592,9 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2
CONFIG_MTD_EZX=y
CONFIG_MTD_EZX_A780=y
# CONFIG_MTD_EZX_A780_ALTERNATE is not set
+# CONFIG_MTD_EZX_A120 is not set
# CONFIG_MTD_EZX_E2 is not set
+# CONFIG_MTD_EZX_E6 is not set
# CONFIG_MTD_PLATRAM is not set
#
@@ -851,8 +853,8 @@ CONFIG_TS0710_MUX_USB=y
#
# I2C support
#
-CONFIG_I2C=m
-CONFIG_I2C_CHARDEV=m
+CONFIG_I2C=y
+CONFIG_I2C_CHARDEV=y
#
# I2C Algorithms
@@ -864,8 +866,8 @@ CONFIG_I2C_CHARDEV=m
#
# I2C Hardware Bus support
#
-CONFIG_I2C_PXA=m
-# CONFIG_I2C_PXA_SLAVE is not set
+CONFIG_I2C_PXA=y
+CONFIG_I2C_PXA_SLAVE=y
# CONFIG_I2C_OCORES is not set
# CONFIG_I2C_PARPORT_LIGHT is not set
# CONFIG_I2C_STUB is not set
diff --git a/packages/linux/linux-ezx-2.6.21/patches/lcd_18BPP_support.diff b/packages/linux/linux-ezx-2.6.21/patches/lcd_18BPP_support.diff
new file mode 100644
index 0000000000..a0d89bfee5
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/lcd_18BPP_support.diff
@@ -0,0 +1,270 @@
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a1200.c 2007-08-18 18:35:12.000000000 +0800
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c 2007-08-18 18:36:38.000000000 +0800
+@@ -122,7 +122,7 @@
+ .pixclock = 192308,
+ .xres = 240,
+ .yres = 320,
+- .bpp = 8,
++ .bpp = 18,
+ .hsync_len = 10,
+ .left_margin = 20,
+ .right_margin = 10,
+@@ -135,8 +135,8 @@
+ static struct pxafb_mach_info a1200_fb_info = {
+ .modes = &mode_a1200,
+ .num_modes = 1,
+- .lccr0 = 0x022008B8,
+- .lccr3 = 0xC130FF13,
++ .lccr0 = 0x002008b8,
++ .lccr3 = 0xC630FF13,
+ .pxafb_backlight_power = ezx_backlight_power,
+ .pxafb_lcd_power = &ezx_lcd_power,
+ };
+Index: linux-2.6.21/drivers/video/cfbfillrect.c
+===================================================================
+--- linux-2.6.21.orig/drivers/video/cfbfillrect.c 2007-08-18 18:38:36.000000000 +0800
++++ linux-2.6.21/drivers/video/cfbfillrect.c 2007-08-18 18:39:03.000000000 +0800
+@@ -87,7 +87,10 @@
+ return 0x00001001ul*pixel;
+ case 16:
+ return 0x00010001ul*pixel;
++ case 18:
++ case 19:
+ case 24:
++ case 25:
+ return 0x00000001ul*pixel;
+ case 32:
+ return 0x00000001ul*pixel;
+Index: linux-2.6.21/drivers/video/pxafb.c
+===================================================================
+--- linux-2.6.21.orig/drivers/video/pxafb.c 2007-08-18 17:58:11.000000000 +0800
++++ linux-2.6.21/drivers/video/pxafb.c 2007-08-18 18:46:50.000000000 +0800
+@@ -9,6 +9,8 @@
+ * which in turn is
+ * Based on acornfb.c Copyright (C) Russell King.
+ *
++ * Added 18,19,24,25 BPP support by Alex Zhang <celeber2@gmail.com>
++ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License. See the file COPYING in the main directory of this archive for
+ * more details.
+@@ -190,6 +192,10 @@
+ case 4: ret = LCCR3_4BPP; break;
+ case 8: ret = LCCR3_8BPP; break;
+ case 16: ret = LCCR3_16BPP; break;
++ case 18: ret = LCCR3_18BPP; break;
++ case 19: ret = LCCR3_19BPP; break;
++ case 24: ret = LCCR3_24BPP; break;
++ case 25: ret = LCCR3_25BPP; break;
+ }
+ return ret;
+ }
+@@ -274,6 +280,8 @@
+ if (var->yres < MIN_YRES)
+ var->yres = MIN_YRES;
+
++ if (var->bits_per_pixel == 32) var->bits_per_pixel = 18; // ALEX cheats Xserver
++
+ if (inf->fixed_modes) {
+ struct pxafb_mode_info *mode;
+
+@@ -306,6 +314,26 @@
+ var->green.offset = 5; var->green.length = 6;
+ var->blue.offset = 0; var->blue.length = 5;
+ var->transp.offset = var->transp.length = 0;
++ } else if (var->bits_per_pixel == 18) {
++ var->red.offset = 12; var->red.length = 6;
++ var->green.offset = 6; var->green.length = 6;
++ var->blue.offset = 0; var->blue.length = 6;
++ var->transp.offset = var->transp.length = 0;
++ } else if (var->bits_per_pixel == 19) {
++ var->red.offset = 12; var->red.length = 6;
++ var->green.offset = 6; var->green.length = 6;
++ var->blue.offset = 0; var->blue.length = 6;
++ var->transp.offset= 18; var->transp.length = 1;
++ } else if (var->bits_per_pixel == 24) {
++ var->red.offset = 16; var->red.length = 8;
++ var->green.offset = 8; var->green.length = 8;
++ var->blue.offset = 0; var->blue.length = 8;
++ var->transp.offset = var->transp.length = 0;
++ } else if (var->bits_per_pixel == 25) {
++ var->red.offset = 16; var->red.length = 8;
++ var->green.offset = 8; var->green.length = 8;
++ var->blue.offset = 0; var->blue.length = 8;
++ var->transp.offset= 24; var->transp.length = 1;
+ } else {
+ var->red.offset = var->green.offset = var->blue.offset = var->transp.offset = 0;
+ var->red.length = 8;
+@@ -341,7 +369,12 @@
+
+ pr_debug("pxafb: set_par\n");
+
+- if (var->bits_per_pixel == 16)
++ if (var->bits_per_pixel == 16
++ || var->bits_per_pixel == 18
++ || var->bits_per_pixel == 19
++ || var->bits_per_pixel == 24
++ || var->bits_per_pixel == 25
++ )
+ fbi->fb.fix.visual = FB_VISUAL_TRUECOLOR;
+ else if (!fbi->cmap_static)
+ fbi->fb.fix.visual = FB_VISUAL_PSEUDOCOLOR;
+@@ -354,12 +387,25 @@
+ fbi->fb.fix.visual = FB_VISUAL_STATIC_PSEUDOCOLOR;
+ }
+
+- fbi->fb.fix.line_length = var->xres_virtual *
+- var->bits_per_pixel / 8;
+- if (var->bits_per_pixel == 16)
+- fbi->palette_size = 0;
+- else
+- fbi->palette_size = var->bits_per_pixel == 1 ? 4 : 1 << var->bits_per_pixel;
++ switch (var->bits_per_pixel) {
++ case 16:
++ fbi->fb.fix.line_length = var->xres_virtual * 2;
++ fbi->palette_size = 0;
++ break;
++ case 18:
++ case 19:
++ fbi->fb.fix.line_length = var->xres_virtual * 3;
++ fbi->palette_size = 0;
++ break;
++ case 24:
++ case 25:
++ fbi->fb.fix.line_length = var->xres_virtual * 4;
++ fbi->palette_size = 0;
++ break;
++ default:
++ fbi->fb.fix.line_length = var->xres_virtual * var->bits_per_pixel / 8;
++ fbi->palette_size = var->bits_per_pixel == 1 ? 4 : 1 << var->bits_per_pixel;
++ }
+
+ palette_mem_size = fbi->palette_size * sizeof(u16);
+
+@@ -373,8 +419,13 @@
+ */
+ pxafb_set_truecolor(fbi->fb.fix.visual == FB_VISUAL_TRUECOLOR);
+
+- if (fbi->fb.var.bits_per_pixel == 16)
+- fb_dealloc_cmap(&fbi->fb.cmap);
++ if (fbi->fb.var.bits_per_pixel == 16
++ || fbi->fb.var.bits_per_pixel == 18
++ || fbi->fb.var.bits_per_pixel == 19
++ || fbi->fb.var.bits_per_pixel == 24
++ || fbi->fb.var.bits_per_pixel == 25
++ )
++ fb_dealloc_cmap(&fbi->fb.cmap);
+ else
+ fb_alloc_cmap(&fbi->fb.cmap, 1<<fbi->fb.var.bits_per_pixel, 0);
+
+@@ -582,6 +633,9 @@
+ case 4:
+ case 8:
+ case 16:
++ case 18:
++ case 24:
++ case 25:
+ break;
+ default:
+ printk(KERN_ERR "%s: invalid bit depth %d\n",
+@@ -678,7 +732,12 @@
+ fbi->dmadesc_palette_cpu->fidr = 0;
+ fbi->dmadesc_palette_cpu->ldcmd = (fbi->palette_size * 2) | LDCMD_PAL;
+
+- if (var->bits_per_pixel == 16) {
++ if (var->bits_per_pixel == 16
++ || var->bits_per_pixel == 18
++ || var->bits_per_pixel == 19
++ || var->bits_per_pixel == 24
++ || var->bits_per_pixel == 25
++ ) {
+ /* palette shouldn't be loaded in true-color mode */
+ fbi->dmadesc_fbhigh_cpu->fdadr = fbi->dmadesc_fbhigh_dma;
+ fbi->fdadr0 = fbi->dmadesc_fbhigh_dma; /* no pal just fbhigh */
+@@ -786,6 +845,11 @@
+
+ for (gpio = 58; ldd_bits; gpio++, ldd_bits--)
+ pxa_gpio_mode(gpio | GPIO_ALT_FN_2_OUT);
++ if (fbi->fb.var.bits_per_pixel == 18) {
++ pxa_gpio_mode(GPIO86_LDD_16_MD);
++ pxa_gpio_mode(GPIO87_LDD_17_MD);
++ }
++
+ pxa_gpio_mode(GPIO74_LCD_FCLK_MD);
+ pxa_gpio_mode(GPIO75_LCD_LCLK_MD);
+ pxa_gpio_mode(GPIO76_LCD_PCLK_MD);
+@@ -1154,9 +1218,17 @@
+ fbi->task_state = (u_char)-1;
+
+ for (i = 0; i < inf->num_modes; i++) {
+- smemlen = mode[i].xres * mode[i].yres * mode[i].bpp / 8;
++ if (mode[i].bpp <= 16) /* 8, 16 bpp */
++ smemlen = mode[i].xres * mode[i].yres * mode[i].bpp / 8;
++ else if (mode[i].bpp > 19) /* 24, 25 bpp */
++ smemlen = mode[i].xres * mode[i].yres * 4;
++ else /* 18, 19 bpp */
++ /* packed format */
++ smemlen = mode[i].xres * mode[i].yres * 3;
++
+ if (smemlen > fbi->fb.fix.smem_len)
+ fbi->fb.fix.smem_len = smemlen;
++ dev_dbg("ALEX::bpp=%d, smemlen=%d, fbi->fb.fix.smem_len=%d\n", mode[i].bpp, smemlen, fbi->fb.fix.smem_len);
+ }
+
+ init_waitqueue_head(&fbi->ctrlr_wait);
+@@ -1225,6 +1297,10 @@
+ case 4:
+ case 8:
+ case 16:
++ case 18:
++ case 19:
++ case 24:
++ case 25:
+ inf->modes[0].bpp = bpp;
+ dev_info(dev, "overriding bit depth: %d\n", bpp);
+ break;
+@@ -1423,6 +1499,9 @@
+ */
+ set_ctrlr_state(fbi, C_ENABLE);
+
++ LCCR4 |= (1 << 31);
++ LCCR4 |= (5 << 17);
++
+ return 0;
+
+ failed:
+Index: linux-2.6.21/include/asm-arm/arch-pxa/pxa-regs.h
+===================================================================
+--- linux-2.6.21.orig/include/asm-arm/arch-pxa/pxa-regs.h 2007-08-18 18:26:01.000000000 +0800
++++ linux-2.6.21/include/asm-arm/arch-pxa/pxa-regs.h 2007-08-18 18:32:29.000000000 +0800
+@@ -1485,6 +1485,8 @@
+ #define GPIO84_NSSP_TX (84 | GPIO_ALT_FN_1_OUT)
+ #define GPIO84_NSSP_RX (84 | GPIO_ALT_FN_2_IN)
+ #define GPIO85_nPCE_1_MD (85 | GPIO_ALT_FN_1_OUT)
++#define GPIO86_LDD_16_MD (86 | GPIO_ALT_FN_2_OUT)
++#define GPIO87_LDD_17_MD (87 | GPIO_ALT_FN_2_OUT)
+ #define GPIO88_SRXD2_MD (88 | GPIO_ALT_FN_2_IN)
+ #define GPIO89_SRXD3_MD (89 | GPIO_ALT_FN_1_IN)
+ #define GPIO90_USB_P3_5 (90 | GPIO_ALT_FN_2_IN)
+@@ -1869,6 +1871,7 @@
+ #define LCCR1 __REG(0x44000004) /* LCD Controller Control Register 1 */
+ #define LCCR2 __REG(0x44000008) /* LCD Controller Control Register 2 */
+ #define LCCR3 __REG(0x4400000C) /* LCD Controller Control Register 3 */
++#define LCCR4 __REG(0x44000010) /* LCD Controller Control Register 4 */
+ #define DFBR0 __REG(0x44000020) /* DMA Channel 0 Frame Branch Register */
+ #define DFBR1 __REG(0x44000024) /* DMA Channel 1 Frame Branch Register */
+ #define LCSR __REG(0x44000038) /* LCD Controller Status Register */
+@@ -1881,6 +1884,11 @@
+ #define LCCR3_4BPP (2 << 24)
+ #define LCCR3_8BPP (3 << 24)
+ #define LCCR3_16BPP (4 << 24)
++#define LCCR3_18BPP_UNPACKED (5 << 24)
++#define LCCR3_18BPP (6 << 24)
++#define LCCR3_19BPP (8 << 24)
++#define LCCR3_24BPP (9 << 24)
++#define LCCR3_25BPP (10<< 24)
+
+ #define FDADR0 __REG(0x44000200) /* DMA Channel 0 Frame Descriptor Address Register */
+ #define FSADR0 __REG(0x44000204) /* DMA Channel 0 Frame Source Address Register */
diff --git a/packages/linux/linux-ezx-2.6.21/rokre6/defconfig b/packages/linux/linux-ezx-2.6.21/rokre6/defconfig
index 95a5a25297..7a203fa0a7 100755
--- a/packages/linux/linux-ezx-2.6.21/rokre6/defconfig
+++ b/packages/linux/linux-ezx-2.6.21/rokre6/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.21.4
-# Sun Sep 9 16:52:39 2007
+# Sat Sep 15 19:35:32 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -592,7 +592,9 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2
CONFIG_MTD_EZX=y
CONFIG_MTD_EZX_A780=y
# CONFIG_MTD_EZX_A780_ALTERNATE is not set
+# CONFIG_MTD_EZX_A1200 is not set
# CONFIG_MTD_EZX_E2 is not set
+# CONFIG_MTD_EZX_E6 is not set
# CONFIG_MTD_PLATRAM is not set
#
@@ -851,8 +853,8 @@ CONFIG_TS0710_MUX_USB=y
#
# I2C support
#
-CONFIG_I2C=m
-CONFIG_I2C_CHARDEV=m
+CONFIG_I2C=y
+CONFIG_I2C_CHARDEV=y
#
# I2C Algorithms
@@ -864,8 +866,8 @@ CONFIG_I2C_CHARDEV=m
#
# I2C Hardware Bus support
#
-CONFIG_I2C_PXA=m
-# CONFIG_I2C_PXA_SLAVE is not set
+CONFIG_I2C_PXA=y
+CONFIG_I2C_PXA_SLAVE=y
# CONFIG_I2C_OCORES is not set
# CONFIG_I2C_PARPORT_LIGHT is not set
# CONFIG_I2C_STUB is not set
diff --git a/packages/linux/linux-ezx_2.6.21.bb b/packages/linux/linux-ezx_2.6.21.bb
index edca1ed1c9..d74a22b652 100644
--- a/packages/linux/linux-ezx_2.6.21.bb
+++ b/packages/linux/linux-ezx_2.6.21.bb
@@ -2,68 +2,72 @@ DESCRIPTION = "2.6 Linux Development Kernel for the Motorola GSM phones A780 and
AUTHOR = "The OpenEZX Team <openezx-devel@lists.openezx.org>"
HOMEPAGE = "http://www.openezx.org"
EZX = "ezxdev"
-PR = "${EZX}-r13"
+PR = "${EZX}-r15"
+
require linux.inc
SRC_URI = " \
- ${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
- file://logo_linux_clut224.ppm \
- \
- file://patches/patch-2.6.21.4;patch=1 \
- file://patches/ezx-core.patch;patch=1 \
- file://patches/ezx-bp.patch;patch=1 \
- file://patches/ezx-pm.patch;patch=1 \
- file://patches/ezx-pcap.patch;patch=1 \
- file://patches/a780-pcap.patch;patch=1 \
- file://patches/e680-pcap.patch;patch=1 \
- file://patches/a1200-pcap.patch;patch=1 \
- file://patches/e6-pcap.patch;patch=1 \
- file://patches/a780-mci.patch;patch=1 \
- file://patches/e680-mci.patch;patch=1 \
- file://patches/a1200-mci.patch;patch=1 \
- file://patches/e6-mci.patch;patch=1 \
- file://patches/pxa27x-udc-support.2.patch;patch=1 \
- file://patches/ezx-emu.patch;patch=1 \
- file://patches/a780-emu.patch;patch=1 \
- file://patches/e680-emu.patch;patch=1 \
- file://patches/ezx-mtd-map.patch;patch=1 \
- file://patches/ezx-serial-bug-workaround.patch;patch=1 \
- file://patches/pxa-kbd.patch;patch=1 \
- file://patches/a780-kbd.patch;patch=1 \
- file://patches/e680-kbd.patch;patch=1 \
- file://patches/pcap-ts.patch;patch=1 \
- file://patches/a780-ts.patch;patch=1 \
- file://patches/e680-ts.patch;patch=1 \
- file://patches/a1200-ts.patch;patch=1 \
- file://patches/e6-ts.patch;patch=1 \
- file://patches/ezx-eoc.patch;patch=1 \
- file://patches/a1200-eoc.patch;patch=1 \
- file://patches/e6-eoc.patch;patch=1 \
- file://patches/ezx-backlight.patch;patch=1 \
- file://patches/a780-flip.patch;patch=1 \
- file://patches/e680-locksw.patch;patch=1 \
- file://patches/a780-leds.patch;patch=1 \
- file://patches/e680-leds.patch;patch=1 \
- file://patches/a780-vibrator.patch;patch=1 \
- file://patches/mux_cli.patch;patch=1 \
- file://patches/mux-fix.patch;patch=1 \
- file://patches/mux-fix-init-errorpath.patch;patch=1 \
- file://patches/mux-remove-flipbuffers.patch;patch=1 \
- file://patches/mux-remove-get_halted_bit.patch;patch=1 \
- file://patches/mux-remove-usbh_finished_resume.patch;patch=1 \
- file://patches/mux-fix-makefile.patch;patch=1 \
- file://patches/mux-fix-tty-driver.patch;patch=1 \
- file://patches/mux-linux-2.6.21-fix.patch;patch=1 \
- file://patches/asoc-pxa-ssp.patch;patch=1 \
- file://patches/asoc-fix-loopback.patch;patch=1 \
- file://patches/ezx-asoc.patch;patch=1 \
- file://patches/mtdfix.patch;patch=1 \
- file://defconfig \
-"
+ ${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
+ file://logo_linux_clut224.ppm \
+ \
+ file://patches/patch-2.6.21.4;patch=1 \
+ file://patches/ezx-core.patch;patch=1 \
+ file://patches/ezx-bp.patch;patch=1 \
+ file://patches/ezx-pm.patch;patch=1 \
+ file://patches/ezx-pcap.patch;patch=1 \
+ file://patches/a780-pcap.patch;patch=1 \
+ file://patches/e680-pcap.patch;patch=1 \
+ file://patches/a1200-pcap.patch;patch=1 \
+ file://patches/e6-pcap.patch;patch=1 \
+ file://patches/a780-mci.patch;patch=1 \
+ file://patches/e680-mci.patch;patch=1 \
+ file://patches/a1200-mci.patch;patch=1 \
+ file://patches/e6-mci.patch;patch=1 \
+ file://patches/pxa27x-udc-support.2.patch;patch=1 \
+ file://patches/ezx-emu.patch;patch=1 \
+ file://patches/a780-emu.patch;patch=1 \
+ file://patches/e680-emu.patch;patch=1 \
+ file://patches/ezx-mtd-map.patch;patch=1 \
+ file://patches/ezx-serial-bug-workaround.patch;patch=1 \
+ file://patches/pxa-kbd.patch;patch=1 \
+ file://patches/a780-kbd.patch;patch=1 \
+ file://patches/e680-kbd.patch;patch=1 \
+ file://patches/pcap-ts.patch;patch=1 \
+ file://patches/a780-ts.patch;patch=1 \
+ file://patches/e680-ts.patch;patch=1 \
+ file://patches/a1200-ts.patch;patch=1 \
+ file://patches/e6-ts.patch;patch=1 \
+ file://patches/ezx-eoc.patch;patch=1 \
+ file://patches/a1200-eoc.patch;patch=1 \
+ file://patches/e6-eoc.patch;patch=1 \
+ file://patches/ezx-backlight.patch;patch=1 \
+ file://patches/a780-flip.patch;patch=1 \
+ file://patches/e680-locksw.patch;patch=1 \
+ file://patches/a780-leds.patch;patch=1 \
+ file://patches/e680-leds.patch;patch=1 \
+ file://patches/a780-vibrator.patch;patch=1 \
+ file://patches/mux_cli.patch;patch=1 \
+ file://patches/mux-fix.patch;patch=1 \
+ file://patches/mux-fix-init-errorpath.patch;patch=1 \
+ file://patches/mux-remove-flipbuffers.patch;patch=1 \
+ file://patches/mux-remove-get_halted_bit.patch;patch=1 \
+ file://patches/mux-remove-usbh_finished_resume.patch;patch=1 \
+ file://patches/mux-fix-makefile.patch;patch=1 \
+ file://patches/mux-fix-tty-driver.patch;patch=1 \
+ file://patches/mux-linux-2.6.21-fix.patch;patch=1 \
+ file://patches/asoc-pxa-ssp.patch;patch=1 \
+ file://patches/asoc-fix-loopback.patch;patch=1 \
+ file://patches/ezx-asoc.patch;patch=1 \
+ file://patches/mtdfix.patch;patch=1 \
+ file://patches/lcd_18BPP_support.diff;patch=1 \
+ file://defconfig \
+ \
+ "
S = "${WORKDIR}/linux-${PV}"
+
##############################################################
# kernel image resides on a seperate flash partition (for now)
#
@@ -76,6 +80,7 @@ COMPATIBLE_MACHINE = '(a780|e680|a1200|rorkre2|rokre6)'
# For now the code for serial console is disabled in compress.c
#CMDLINE_CON = "console=ttyS2,115200n8 console=tty1 "
CMDLINE_CON = "console=tty1 "
+
CMDLINE_ROOT = "root=/dev/mmcblk0p1 rootfstype=ext3 rootdelay=5"
CMDLINE_NFSROOT = "root=/dev/nfs rootfstype=nfs nfsroot=192.168.0.200:/export/ezx-image rootdelay=5 "
# Uncomment to enable dyntick
@@ -95,3 +100,4 @@ KERNEL_IMAGE_MAXSIZE = "1294336"
#
#module_autoload_pxaficp_ir = "pxaficp_ir"
#module_autoload_snd-pcm-oss = "snd-pcm-oss"
+
diff --git a/packages/linux/linux-handhelds-2.6/h2200/defconfig b/packages/linux/linux-handhelds-2.6/h2200/defconfig
index 9b72b0bd9d..0f122c023c 100644
--- a/packages/linux/linux-handhelds-2.6/h2200/defconfig
+++ b/packages/linux/linux-handhelds-2.6/h2200/defconfig
@@ -864,7 +864,7 @@ CONFIG_INPUT_TOUCHSCREEN=y
# CONFIG_TOUCHSCREEN_PENMOUNT is not set
# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
-# CONFIG_TOUCHSCREEN_ADC is not set
+CONFIG_TOUCHSCREEN_ADC=y
CONFIG_TOUCHSCREEN_ADC_DEBOUNCE=y
# CONFIG_TOUCHSCREEN_UCB1400 is not set
CONFIG_INPUT_MISC=y
diff --git a/packages/linux/linux-handhelds-2.6_2.6.21-hh16.bb b/packages/linux/linux-handhelds-2.6_2.6.21-hh16.bb
index b34d4630a0..ec5844bfb5 100644
--- a/packages/linux/linux-handhelds-2.6_2.6.21-hh16.bb
+++ b/packages/linux/linux-handhelds-2.6_2.6.21-hh16.bb
@@ -1,7 +1,7 @@
SECTION = "kernel"
DESCRIPTION = "handhelds.org Linux kernel 2.6 for PocketPCs and other consumer handheld devices."
LICENSE = "GPL"
-PR = "r0"
+PR = "r1"
DEFAULT_PREFERENCE = "-1"
diff --git a/packages/openocd/openocd_svn.bb b/packages/openocd/openocd_svn.bb
index 9824fd3d79..2815324521 100644
--- a/packages/openocd/openocd_svn.bb
+++ b/packages/openocd/openocd_svn.bb
@@ -1,7 +1,8 @@
DESCRIPTION = "Free and Open On-Chip Debugging, In-System Programming and Boundary-Scan Testing"
HOMEPAGE = "http://openocd.berlios.de/"
LICENSE = "GPL"
-PV = "0.0+svn${SRCDATE}"
+PV = "0.0+r${SRCREV}"
+PR = "r1"
inherit autotools
diff --git a/packages/pointercal/files/a780/.mtn2git_empty b/packages/pointercal/files/a780/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/pointercal/files/a780/.mtn2git_empty
diff --git a/packages/pointercal/files/a780/pointercal b/packages/pointercal/files/a780/pointercal
new file mode 100644
index 0000000000..8b0651dd21
--- /dev/null
+++ b/packages/pointercal/files/a780/pointercal
@@ -0,0 +1 @@
+-19857 -412 18085522 189 -23922 22734294 65536
diff --git a/packages/pointercal/pointercal_0.0.bb b/packages/pointercal/pointercal_0.0.bb
index 87e4acafb9..a50281b682 100644
--- a/packages/pointercal/pointercal_0.0.bb
+++ b/packages/pointercal/pointercal_0.0.bb
@@ -1,6 +1,6 @@
DESCRIPTION = "Touchscreen calibration data"
SECTION = "base"
-PR = "r2"
+PR = "r3"
SRC_URI = "file://pointercal"
S = "${WORKDIR}"
diff --git a/packages/xorg-xserver/xserver-kdrive-1.3.0.0/kdrive-1.3-18bpp.patch b/packages/xorg-xserver/xserver-kdrive-1.3.0.0/kdrive-1.3-18bpp.patch
new file mode 100644
index 0000000000..714536934c
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive-1.3.0.0/kdrive-1.3-18bpp.patch
@@ -0,0 +1,419 @@
+diff -Nurd xorg-server-1.3.0.0/hw/kdrive/fbdev/fbdev.c xorg-server-1.3.0.0.patched/hw/kdrive/fbdev/fbdev.c
+--- xorg-server-1.3.0.0/hw/kdrive/fbdev/fbdev.c 2006-11-16 19:01:23.000000000 +0100
++++ xorg-server-1.3.0.0.patched/hw/kdrive/fbdev/fbdev.c 2007-09-15 16:53:20.152045000 +0200
+@@ -213,6 +213,24 @@
+
+ /* Now get the new screeninfo */
+ ioctl (priv->fd, FBIOGET_VSCREENINFO, &priv->var);
++ /* Special treatment of 18bpp */
++ if ((priv->var.red.length == 6) && (priv->var.green.length == 6) &&
++ (priv->var.blue.length == 6))
++ {
++ priv->var.red.length = 8;
++ if (priv->var.red.offset != 0)
++ priv->var.red.offset = 16;
++ priv->var.green.length = 8;
++ priv->var.green.offset = 8;
++ priv->var.blue.length = 8;
++ if (priv->var.blue.offset != 0)
++ priv->var.blue.offset = 16;
++ priv->var.bits_per_pixel = 32;
++ priv->Have18Bpp = TRUE;
++ }
++ else
++ priv->Have18Bpp = FALSE;
++
+ depth = priv->var.bits_per_pixel;
+ gray = priv->var.grayscale;
+
+@@ -334,7 +352,7 @@
+ KdMouseMatrix m;
+ FbdevPriv *priv = screen->card->driver;
+
+- if (scrpriv->randr != RR_Rotate_0)
++ if (scrpriv->randr != RR_Rotate_0 || priv->Have18Bpp)
+ scrpriv->shadow = TRUE;
+ else
+ scrpriv->shadow = FALSE;
+@@ -398,6 +416,354 @@
+ return TRUE;
+ }
+
++void
++shadowUpdatePacked18 (ScreenPtr pScreen,
++ shadowBufPtr pBuf)
++{
++ RegionPtr damage = shadowDamage (pBuf);
++ PixmapPtr pShadow = pBuf->pPixmap;
++ int nbox = REGION_NUM_RECTS (damage);
++ BoxPtr pbox = REGION_RECTS (damage);
++ FbBits *shaBase, *shaLine, *sha;
++ FbStride shaStride;
++ int scrBase, scrLine, scr;
++ int shaBpp;
++ int shaXoff, shaYoff; /* XXX assumed to be zero */
++ int x, y, w, h, width;
++ int i;
++ char *winBase = NULL, *win;
++ CARD32 winSize;
++
++ fbGetDrawable (&pShadow->drawable, shaBase, shaStride, shaBpp, shaXoff, shaYoff);
++ while (nbox--)
++ {
++ x = pbox->x1 * shaBpp;
++ y = pbox->y1;
++ w = (pbox->x2 - pbox->x1) * shaBpp;
++ h = pbox->y2 - pbox->y1;
++
++ scrLine = (x >> FB_SHIFT);
++ shaLine = shaBase + y * shaStride + (x >> FB_SHIFT);
++
++ x &= FB_MASK;
++ w = (w + x + FB_MASK) >> FB_SHIFT;
++
++ while (h--)
++ {
++ winSize = 0;
++ scrBase = 0;
++ width = w;
++ scr = scrLine;
++ sha = shaLine;
++ while (width) {
++ /* how much remains in this window */
++ i = scrBase + winSize - scr;
++ if (i <= 0 || scr < scrBase)
++ {
++ winBase = (char *) (*pBuf->window) (pScreen,
++ y,
++ scr * 3,
++ SHADOW_WINDOW_WRITE,
++ &winSize,
++ pBuf->closure);
++ if(!winBase)
++ return;
++ scrBase = scr;
++ winSize /= 3;
++ i = winSize;
++ }
++ win = winBase + (scr - scrBase);
++ if (i > width)
++ i = width;
++ width -= i;
++ scr += i;
++#define PickBit(a,i) (((a) >> (i)) & 1)
++ while (i--)
++ {
++ FbBits bits = *sha++;
++ *win++ = ((bits & 0xFC) >> 2) |
++ ((bits & 0xC00) >> 4);
++ *win++ = ((bits & 0xF000) >> 12) |
++ ((bits & 0x3C0000) >> 14);
++ *win++ = (bits & 0xC00000) >> 22;
++ }
++ }
++ shaLine += shaStride;
++ y++;
++ }
++ pbox++;
++ }
++}
++
++#define LEFT_TO_RIGHT 1
++#define RIGHT_TO_LEFT -1
++#define TOP_TO_BOTTOM 2
++#define BOTTOM_TO_TOP -2
++
++void
++shadowUpdateRotatePacked18 (ScreenPtr pScreen,
++ shadowBufPtr pBuf)
++{
++ RegionPtr damage = shadowDamage (pBuf);
++ PixmapPtr pShadow = pBuf->pPixmap;
++ int nbox = REGION_NUM_RECTS (damage);
++ BoxPtr pbox = REGION_RECTS (damage);
++ FbBits *shaBits;
++ FbStride shaStride;
++ int shaBpp;
++ int shaXoff, shaYoff;
++ int box_x1, box_x2, box_y1, box_y2;
++ int sha_x1 = 0, sha_y1 = 0;
++ int scr_x1 = 0, scr_x2 = 0, scr_y1 = 0, scr_y2 = 0, scr_w, scr_h;
++ int scr_x, scr_y;
++ int w;
++ int pixelsPerBits;
++ int pixelsMask;
++ FbStride shaStepOverY = 0, shaStepDownY = 0;
++ FbStride shaStepOverX = 0, shaStepDownX = 0;
++ FbBits *shaLine, *sha;
++ int shaHeight = pShadow->drawable.height;
++ int shaWidth = pShadow->drawable.width;
++ FbBits shaMask;
++ int shaFirstShift, shaShift;
++ int o_x_dir;
++ int o_y_dir;
++ int x_dir;
++ int y_dir;
++
++ fbGetDrawable (&pShadow->drawable, shaBits, shaStride, shaBpp, shaXoff, shaYoff);
++ pixelsPerBits = (sizeof (FbBits) * 8) / shaBpp;
++ pixelsMask = ~(pixelsPerBits - 1);
++ shaMask = FbBitsMask (FB_UNIT-shaBpp, shaBpp);
++ /*
++ * Compute rotation related constants to walk the shadow
++ */
++ o_x_dir = LEFT_TO_RIGHT;
++ o_y_dir = TOP_TO_BOTTOM;
++ if (pBuf->randr & SHADOW_REFLECT_X)
++ o_x_dir = -o_x_dir;
++ if (pBuf->randr & SHADOW_REFLECT_Y)
++ o_y_dir = -o_y_dir;
++ switch (pBuf->randr & (SHADOW_ROTATE_ALL)) {
++ case SHADOW_ROTATE_0: /* upper left shadow -> upper left screen */
++ default:
++ x_dir = o_x_dir;
++ y_dir = o_y_dir;
++ break;
++ case SHADOW_ROTATE_90: /* upper right shadow -> upper left screen */
++ x_dir = o_y_dir;
++ y_dir = -o_x_dir;
++ break;
++ case SHADOW_ROTATE_180: /* lower right shadow -> upper left screen */
++ x_dir = -o_x_dir;
++ y_dir = -o_y_dir;
++ break;
++ case SHADOW_ROTATE_270: /* lower left shadow -> upper left screen */
++ x_dir = -o_y_dir;
++ y_dir = o_x_dir;
++ break;
++ }
++ switch (x_dir) {
++ case LEFT_TO_RIGHT:
++ shaStepOverX = shaBpp;
++ shaStepOverY = 0;
++ break;
++ case TOP_TO_BOTTOM:
++ shaStepOverX = 0;
++ shaStepOverY = shaStride;
++ break;
++ case RIGHT_TO_LEFT:
++ shaStepOverX = -shaBpp;
++ shaStepOverY = 0;
++ break;
++ case BOTTOM_TO_TOP:
++ shaStepOverX = 0;
++ shaStepOverY = -shaStride;
++ break;
++ }
++ switch (y_dir) {
++ case TOP_TO_BOTTOM:
++ shaStepDownX = 0;
++ shaStepDownY = shaStride;
++ break;
++ case RIGHT_TO_LEFT:
++ shaStepDownX = -shaBpp;
++ shaStepDownY = 0;
++ break;
++ case BOTTOM_TO_TOP:
++ shaStepDownX = 0;
++ shaStepDownY = -shaStride;
++ break;
++ case LEFT_TO_RIGHT:
++ shaStepDownX = shaBpp;
++ shaStepDownY = 0;
++ break;
++ }
++
++ while (nbox--)
++ {
++ box_x1 = pbox->x1;
++ box_y1 = pbox->y1;
++ box_x2 = pbox->x2;
++ box_y2 = pbox->y2;
++ pbox++;
++
++ /*
++ * Compute screen and shadow locations for this box
++ */
++ switch (x_dir) {
++ case LEFT_TO_RIGHT:
++ scr_x1 = box_x1 & pixelsMask;
++ scr_x2 = (box_x2 + pixelsPerBits - 1) & pixelsMask;
++
++ sha_x1 = scr_x1;
++ break;
++ case TOP_TO_BOTTOM:
++ scr_x1 = box_y1 & pixelsMask;
++ scr_x2 = (box_y2 + pixelsPerBits - 1) & pixelsMask;
++
++ sha_y1 = scr_x1;
++ break;
++ case RIGHT_TO_LEFT:
++ scr_x1 = (shaWidth - box_x2) & pixelsMask;
++ scr_x2 = (shaWidth - box_x1 + pixelsPerBits - 1) & pixelsMask;
++
++ sha_x1 = (shaWidth - scr_x1 - 1);
++ break;
++ case BOTTOM_TO_TOP:
++ scr_x1 = (shaHeight - box_y2) & pixelsMask;
++ scr_x2 = (shaHeight - box_y1 + pixelsPerBits - 1) & pixelsMask;
++
++ sha_y1 = (shaHeight - scr_x1 - 1);
++ break;
++ }
++ switch (y_dir) {
++ case TOP_TO_BOTTOM:
++ scr_y1 = box_y1;
++ scr_y2 = box_y2;
++
++ sha_y1 = scr_y1;
++ break;
++ case RIGHT_TO_LEFT:
++ scr_y1 = (shaWidth - box_x2);
++ scr_y2 = (shaWidth - box_x1);
++
++ sha_x1 = box_x2 - 1;
++ break;
++ case BOTTOM_TO_TOP:
++ scr_y1 = shaHeight - box_y2;
++ scr_y2 = shaHeight - box_y1;
++
++ sha_y1 = box_y2 - 1;
++ break;
++ case LEFT_TO_RIGHT:
++ scr_y1 = box_x1;
++ scr_y2 = box_x2;
++
++ sha_x1 = box_x1;
++ break;
++ }
++ scr_w = ((scr_x2 - scr_x1) * shaBpp) >> FB_SHIFT;
++ scr_h = scr_y2 - scr_y1;
++ scr_y = scr_y1;
++
++ /* shift amount for first pixel on screen */
++ shaFirstShift = FB_UNIT - ((sha_x1 * shaBpp) & FB_MASK) - shaBpp;
++
++ /* pointer to shadow data first placed on screen */
++ shaLine = (shaBits +
++ sha_y1 * shaStride +
++ ((sha_x1 * shaBpp) >> FB_SHIFT));
++
++ /*
++ * Copy the bits, always write across the physical frame buffer
++ * to take advantage of write combining.
++ */
++ while (scr_h--)
++ {
++ int p;
++ FbBits bits;
++ char *win;
++ int i;
++ CARD32 winSize;
++
++ sha = shaLine;
++ shaShift = shaFirstShift;
++ w = scr_w;
++ scr_x = scr_x1 * shaBpp >> FB_SHIFT;
++
++ while (w)
++ {
++ /*
++ * Map some of this line
++ */
++ win = (char *) (*pBuf->window) (pScreen,
++ scr_y,
++ scr_x * 3,
++ SHADOW_WINDOW_WRITE,
++ &winSize,
++ pBuf->closure);
++ i = winSize / 3;
++ if (i > w)
++ i = w;
++ w -= i;
++ scr_x += i;
++ /*
++ * Copy the portion of the line mapped
++ */
++ while (i--)
++ {
++ bits = 0;
++ p = pixelsPerBits;
++ /*
++ * Build one word of output from multiple inputs
++ *
++ * Note that for 90/270 rotations, this will walk
++ * down the shadow hitting each scanline once.
++ * This is probably not very efficient.
++ */
++ while (p--)
++ {
++ bits = FbScrLeft(bits, shaBpp);
++ bits |= FbScrRight (*sha, shaShift) & shaMask;
++
++ shaShift -= shaStepOverX;
++ if (shaShift >= FB_UNIT)
++ {
++ shaShift -= FB_UNIT;
++ sha--;
++ }
++ else if (shaShift < 0)
++ {
++ shaShift += FB_UNIT;
++ sha++;
++ }
++ sha += shaStepOverY;
++ }
++ *win++ = ((bits & 0xFC) >> 2) |
++ ((bits & 0xC00) >> 4);
++ *win++ = ((bits & 0xF000) >> 12) |
++ ((bits & 0x3C0000) >> 14);
++ *win++ = (bits & 0xC00000) >> 22;
++ }
++ }
++ scr_y++;
++ shaFirstShift -= shaStepDownX;
++ if (shaFirstShift >= FB_UNIT)
++ {
++ shaFirstShift -= FB_UNIT;
++ shaLine--;
++ }
++ else if (shaFirstShift < 0)
++ {
++ shaFirstShift += FB_UNIT;
++ shaLine++;
++ }
++ shaLine += shaStepDownY;
++ }
++ }
++}
++
+ Bool
+ fbdevSetShadow (ScreenPtr pScreen)
+ {
+@@ -418,7 +784,14 @@
+
+ window = fbdevWindowLinear;
+ update = 0;
+- if (scrpriv->randr)
++ if (priv->Have18Bpp)
++ {
++ if (scrpriv->randr != RR_Rotate_0)
++ update = shadowUpdateRotatePacked18;
++ else
++ update = shadowUpdatePacked18;
++ }
++ else if (scrpriv->randr)
+ if (priv->var.bits_per_pixel == 16) {
+ switch (scrpriv->randr) {
+ case RR_Rotate_90:
+diff -Nurd xorg-server-1.3.0.0/hw/kdrive/fbdev/fbdev.h xorg-server-1.3.0.0.patched/hw/kdrive/fbdev/fbdev.h
+--- xorg-server-1.3.0.0/hw/kdrive/fbdev/fbdev.h 2006-09-18 08:04:17.000000000 +0200
++++ xorg-server-1.3.0.0.patched/hw/kdrive/fbdev/fbdev.h 2007-09-15 16:45:07.362045000 +0200
+@@ -44,6 +44,7 @@
+ int fd;
+ char *fb;
+ char *fb_base;
++ Bool Have18Bpp;
+ } FbdevPriv;
+
+ typedef struct _fbdevScrPriv {