summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--classes/cpan-base.bbclass55
-rw-r--r--classes/cpan.bbclass51
-rw-r--r--classes/cpan_build.bbclass47
-rw-r--r--classes/image.bbclass2
-rw-r--r--classes/insane.bbclass2
-rw-r--r--classes/magicbox-image.bbclass37
-rw-r--r--conf/bitbake.conf6
-rw-r--r--conf/machine/magicbox.conf15
-rw-r--r--packages/cairo/cairo_git.bb2
-rw-r--r--packages/chrpath/chrpath-native_0.13.bb11
-rw-r--r--packages/chrpath/chrpath.inc10
-rw-r--r--packages/chrpath/chrpath_0.13.bb1
-rw-r--r--packages/db/db_4.2.52.bb2
-rw-r--r--packages/db/db_4.3.29.bb2
-rw-r--r--packages/ethtool/ethtool_5.bb2
-rw-r--r--packages/gcc/gcc-4.1.2/800-arm-bigendian.patch70
-rw-r--r--packages/gcc/gcc-cross_4.1.2.bb2
-rw-r--r--packages/gcc/gcc_4.1.1.bb9
-rw-r--r--packages/gcc/gcc_4.1.2.bb3
-rw-r--r--packages/glib-2.0/glib-2.0-2.12.12/.mtn2git_empty0
-rw-r--r--packages/glib-2.0/glib-2.0-2.12.12/configure-libtool.patch20
-rw-r--r--packages/glib-2.0/glib-2.0_2.12.12.bb8
-rw-r--r--packages/glib-2.0/glib.inc5
-rw-r--r--packages/glibc/glibc-2.5/armeb-strlen.patch11
-rw-r--r--packages/glibc/glibc_2.5.bb5
-rw-r--r--packages/gpe-autostarter/gpe-autostarter-0.12/.mtn2git_empty0
-rw-r--r--packages/gpe-autostarter/gpe-autostarter-0.12/wireless.patch12
-rw-r--r--packages/gpe-autostarter/gpe-autostarter_0.12.bb2
-rw-r--r--packages/gpe-conf/gpe-conf-0.2.5/wireless.patch16
-rw-r--r--packages/gpe-conf/gpe-conf_0.2.5.bb5
-rw-r--r--packages/gpe-dm/gpe-dm_0.51.bb13
-rw-r--r--packages/gpe-mininet/gpe-mininet_svn.bb18
-rwxr-xr-xpackages/initscripts/initscripts-1.0/oplinux-uclibc/mountall.sh45
-rw-r--r--packages/initscripts/initscripts_1.0.bb2
-rw-r--r--packages/libglade/libglade_2.4.2.bb2
-rw-r--r--packages/libglade/libglade_2.5.1.bb2
-rw-r--r--packages/libtool/libtool-1.5.22/.mtn2git_empty0
-rw-r--r--packages/libtool/libtool-1.5.22/autotools.patch127
-rw-r--r--packages/libtool/libtool-1.5.22/install-path-check.patch25
-rw-r--r--packages/libtool/libtool-1.5.22/libdir-la.patch52
-rw-r--r--packages/libtool/libtool-1.5.22/prefix.patch44
-rw-r--r--packages/libtool/libtool-1.5.22/sedvar.patch16
-rw-r--r--packages/libtool/libtool-1.5.22/tag.patch19
-rw-r--r--packages/libtool/libtool-1.5.22/tag1.patch13
-rw-r--r--packages/libtool/libtool-1.5.22/uclibc.patch19
-rw-r--r--packages/libtool/libtool-cross_1.5.22.bb30
-rw-r--r--packages/libtool/libtool-native_1.5.22.bb44
-rw-r--r--packages/libtool/libtool_1.5.22.bb37
-rw-r--r--packages/linux/linux-ezx-2.6.21/ezx-core.patch60
-rw-r--r--packages/linux/linux-ezx-2.6.21/ezx-emu.patch51
-rw-r--r--packages/linux/linux-ezx-2.6.21/ezx-kbd.patch139
-rw-r--r--packages/linux/linux-ezx-2.6.21/ezx-pcap.patch88
-rw-r--r--packages/linux/linux-ezx-2.6.21/ezx-pm.patch58
-rw-r--r--packages/linux/linux-ezx-2.6.21/ezx-ts.patch399
-rw-r--r--packages/linux/linux-ezx-2.6.21/mux-linux-2.6.20.7-fix.patch224
-rw-r--r--packages/linux/linux-ezx-2.6.21/mux-linux-2.6.21-fix.patch11
-rw-r--r--packages/linux/linux-ezx-2.6.21/pcap-ts.patch450
-rw-r--r--packages/linux/linux-ezx-2.6.21/pcap_ts.c.patch237
-rw-r--r--packages/linux/linux-ezx-2.6.21/pxa-kbd.patch463
-rw-r--r--packages/linux/linux-ezx-2.6.21/touchscreen-fix-r0.patch21
-rw-r--r--packages/linux/linux-ezx-2.6.21/wyrm-ts.diff124
-rw-r--r--packages/linux/linux-ezx_2.6.21.bb26
-rw-r--r--packages/linux/linux-magicbox-2.6.18.6/squashfs-lzma-support.patch890
-rw-r--r--packages/linux/linux-magicbox_2.6.18.6.bb5
-rw-r--r--packages/net-snmp/net-snmp_5.1.2.bb4
-rw-r--r--packages/perl/libalgorithm-diff-perl_1.1902.bb2
-rw-r--r--packages/perl/libarchive-tar-perl_1.30.bb2
-rw-r--r--packages/perl/libcache-cache-perl_1.05.bb2
-rw-r--r--packages/perl/libclass-container-perl_0.12.bb2
-rw-r--r--packages/perl/libclass-data-inheritable-perl_0.06.bb2
-rw-r--r--packages/perl/libcompress-zlib-perl_1.42.bb4
-rw-r--r--packages/perl/libdata-optlist-perl_0.101.bb2
-rw-r--r--packages/perl/libdevel-stacktrace-perl_1.13.bb2
-rw-r--r--packages/perl/libdigest-sha1-perl_2.11.bb8
-rw-r--r--packages/perl/liberror-perl_0.17004.bb2
-rw-r--r--packages/perl/libexception-class-perl_1.23.bb2
-rw-r--r--packages/perl/libextutils-cbuilder-perl_0.18.bb2
-rw-r--r--packages/perl/libextutils-parsexs-perl_2.16.bb2
-rw-r--r--packages/perl/libintl-perl_1.16.bb1
-rw-r--r--packages/perl/libio-zlib-perl_1.04.bb2
-rw-r--r--packages/perl/libipc-sharelite-perl_0.09.bb4
-rw-r--r--packages/perl/liblocale-gettext-perl_1.05.bb4
-rw-r--r--packages/perl/liblog-log4perl-perl_1.06.bb2
-rw-r--r--packages/perl/libmail-sendmail-perl_0.79.bb2
-rw-r--r--packages/perl/libmath-bigint-gmp-perl_1.18.bb4
-rw-r--r--packages/perl/libnet-ip-perl_1.25.bb2
-rw-r--r--packages/perl/libnetserver-generic-perl_1.03.bb2
-rw-r--r--packages/perl/libparams-util-perl_0.20.bb2
-rw-r--r--packages/perl/libparams-validate-perl_0.86.bb4
-rw-r--r--packages/perl/libperl6-junction-perl_1.10.bb2
-rw-r--r--packages/perl/libsub-exporter-perl_0.970.bb2
-rw-r--r--packages/perl/libsub-install-perl_0.922.bb2
-rw-r--r--packages/perl/libsub-uplevel-perl_0.13.bb2
-rw-r--r--packages/perl/libtest-builder-tester-perl_1.01.bb2
-rw-r--r--packages/perl/libtest-differences-perl_0.47.bb2
-rw-r--r--packages/perl/libtest-exception-perl_0.22.bb2
-rw-r--r--packages/perl/libtest-mockmodule-perl_0.05.bb2
-rw-r--r--packages/perl/libtest-output-perl_0.10.bb2
-rw-r--r--packages/perl/libtext-diff-perl_0.35.bb2
-rw-r--r--packages/perl/libversion-perl_0.6701.bb4
-rw-r--r--packages/perl/libxml-parser-perl_2.34.bb4
-rw-r--r--packages/perl/libyaml-perl_0.62.bb2
-rw-r--r--packages/perl/perl-5.8.8/native-nopacklist.patch84
-rw-r--r--packages/perl/perl-native_5.8.8.bb9
-rw-r--r--packages/perl/perl_5.8.8.bb5
-rw-r--r--packages/prismstumbler/prismstumbler-0.7.3/wireless.patch21
-rw-r--r--packages/prismstumbler/prismstumbler_0.7.3.bb6
-rw-r--r--packages/settings-daemon/settings-daemon_svn.bb12
-rw-r--r--packages/syslinux/syslinux-native_3.36.bb3
-rw-r--r--packages/syslinux/syslinux3.inc1
-rw-r--r--packages/tracker/tracker_0.5.4.bb2
-rw-r--r--packages/uclibc/uclibc-cvs/magicbox/.mtn2git_empty0
-rw-r--r--packages/uclibc/uclibc-cvs/magicbox/uClibc.config181
-rw-r--r--packages/valgrind/valgrind_3.2.3.bb16
114 files changed, 4308 insertions, 296 deletions
diff --git a/classes/cpan-base.bbclass b/classes/cpan-base.bbclass
new file mode 100644
index 0000000000..a5fdb33895
--- /dev/null
+++ b/classes/cpan-base.bbclass
@@ -0,0 +1,55 @@
+#
+# cpan-base providers various perl related information needed for building
+# cpan modules
+#
+FILES_${PN} += "${libdir}/perl5 ${datadir}/perl5"
+
+DEPENDS += "perl perl-native"
+RDEPENDS += "perl"
+
+# Determine the staged version of perl from the perl configuration file
+def get_perl_version(d):
+ import os, bb, re
+ cfg = bb.data.expand('${STAGING_DIR}/${HOST_SYS}/perl/config.sh', d)
+ try:
+ f = open(cfg, 'r')
+ except IOError:
+ return None
+ l = f.readlines();
+ f.close();
+ r = re.compile("version='(\d\.\d\.\d)'")
+ for s in l:
+ m = r.match(s)
+ if m:
+ return m.group(1)
+ return None
+
+# Only 5.8.7 and 5.8.4 existed at the time we moved to the new layout
+def is_new_perl(d):
+ ver = get_perl_version(d)
+ if ver == "5.8.4" or ver == "5.8.7":
+ return "no"
+ return "yes"
+
+# Determine where the library directories are
+def perl_get_libdirs(d):
+ import bb
+ libdir = bb.data.getVar('libdir', d, 1)
+ if is_new_perl(d) == "yes":
+ libdirs = libdir + '/perl5'
+ else:
+ libdirs = libdir + '/*/*/perl5'
+ return libdirs
+
+def is_target(d):
+ import bb
+ if not bb.data.inherits_class('native', d):
+ return "yes"
+ return "no"
+
+IS_NEW_PERL = "${@is_new_perl(d)}"
+PERLLIBDIRS = "${@perl_get_libdirs(d)}"
+
+FILES_${PN}-dbg += "${PERLLIBDIRS}/auto/*/.debug \
+ ${PERLLIBDIRS}/auto/*/*/.debug \
+ ${PERLLIBDIRS}/auto/*/*/*/.debug"
diff --git a/classes/cpan.bbclass b/classes/cpan.bbclass
index 687dbcd1cb..3b1a2b72ca 100644
--- a/classes/cpan.bbclass
+++ b/classes/cpan.bbclass
@@ -1,60 +1,15 @@
#
# This is for perl modules that use the old Makefile.PL build system
#
-FILES_${PN} += '${libdir}/perl5 ${datadir}/perl5'
-EXTRA_CPANFLAGS ?= ""
-
-DEPENDS += "perl-native"
-RDEPENDS += "perl"
-
-# Determine the staged version of perl from the perl configuration file
-def get_perl_version(d):
- import os, bb, re
- cfg = bb.data.expand('${STAGING_DIR}/${HOST_SYS}/perl/config.sh', d)
- try:
- f = open(cfg, 'r')
- except IOError:
- return None
- l = f.readlines();
- f.close();
- r = re.compile("version='(\d\.\d\.\d)'")
- for s in l:
- m = r.match(s)
- if m:
- return m.group(1)
- return None
-
-# Only 5.8.7 and 5.8.4 existed at the time we moved to the new layout
-def is_new_perl(d):
- ver = get_perl_version(d)
- if ver == "5.8.4" or ver == "5.8.7":
- return "no"
- return "yes"
+inherit cpan-base
-# Determine where the library directories are
-def perl_get_libdirs(d):
- import bb
- libdir = bb.data.getVar('libdir', d, 1)
- if is_new_perl(d) == "yes":
- libdirs = libdir + '/perl5'
- else:
- libdirs = libdir + '/*/*/perl5'
- return libdirs
-
-def is_target(d):
- import bb
- if not bb.data.inherits_class('native', d):
- return "yes"
- return "no"
-
-IS_NEW_PERL = "${@is_new_perl(d)}"
-PERLLIBDIRS = "${@perl_get_libdirs(d)}"
+EXTRA_CPANFLAGS ?= ""
# Env var which tells perl if it should use host (no) or target (yes) settings
export PERLCONFIGTARGET = "${@is_target(d)}"
cpan_do_configure () {
- perl Makefile.PL ${EXTRA_CPANFLAGS}
+ yes '' | perl Makefile.PL ${EXTRA_CPANFLAGS}
if [ "${BUILD_SYS}" != "${HOST_SYS}" ]; then
. ${STAGING_DIR}/${TARGET_SYS}/perl/config.sh
if [ "${IS_NEW_PERL}" = "yes" ]; then
diff --git a/classes/cpan_build.bbclass b/classes/cpan_build.bbclass
index 0660ef9b82..63e716c099 100644
--- a/classes/cpan_build.bbclass
+++ b/classes/cpan_build.bbclass
@@ -1,16 +1,14 @@
#
# This is for perl modules that use the new Build.PL build system
#
-INHIBIT_NATIVE_STAGE_INSTALL = "1"
-FILES_${PN} += '${libdir}/perl5'
+inherit cpan-base
-DEPENDS += "perl-native"
-RDEPENDS += "perl"
+INHIBIT_NATIVE_STAGE_INSTALL = "1"
#
# We also need to have built libmodule-build-perl-native for
# everything except libmodule-build-perl-native itself (which uses
-# this class, but uses itself as the probider of
+# this class, but uses itself as the provider of
# libmodule-build-perl)
#
def cpan_build_dep_prepend(d):
@@ -24,24 +22,29 @@ def cpan_build_dep_prepend(d):
DEPENDS_prepend = "${@cpan_build_dep_prepend(d)}"
-def is_crosscompiling(d):
- import bb
- if not bb.data.inherits_class('native', d):
- return "yes"
- return "no"
-
cpan_build_do_configure () {
- if [ ${@is_crosscompiling(d)} == "yes" ]; then
+ if [ ${@is_target(d)} == "yes" ]; then
# build for target
. ${STAGING_DIR}/${TARGET_SYS}/perl/config.sh
- perl Build.PL --installdirs vendor \
- --destdir ${D} \
- --install_path lib="${libdir}/perl5/site_perl/${version}" \
- --install_path arch="${libdir}/perl5/site_perl/${version}/${TARGET_SYS}" \
- --install_path script=${bindir} \
- --install_path bin=${bindir} \
- --install_path bindoc=${mandir}/man1 \
- --install_path libdoc=${mandir}/man3
+ if [ "${IS_NEW_PERL}" = "yes" ]; then
+ perl Build.PL --installdirs vendor \
+ --destdir ${D} \
+ --install_path lib="${datadir}/perl5" \
+ --install_path arch="${libdir}/perl5" \
+ --install_path script=${bindir} \
+ --install_path bin=${bindir} \
+ --install_path bindoc=${mandir}/man1 \
+ --install_path libdoc=${mandir}/man3
+ else
+ perl Build.PL --installdirs vendor \
+ --destdir ${D} \
+ --install_path lib="${libdir}/perl5/site_perl/${version}" \
+ --install_path arch="${libdir}/perl5/site_perl/${version}/${TARGET_SYS}" \
+ --install_path script=${bindir} \
+ --install_path bin=${bindir} \
+ --install_path bindoc=${mandir}/man1 \
+ --install_path libdoc=${mandir}/man3
+ fi
else
# build for host
perl Build.PL --installdirs site
@@ -53,13 +56,13 @@ cpan_build_do_compile () {
}
cpan_build_do_install () {
- if [ ${@is_crosscompiling(d)} == "yes" ]; then
+ if [ ${@is_target(d)} == "yes" ]; then
perl Build install
fi
}
do_stage_append () {
- if [ ${@is_crosscompiling(d)} == "no" ]; then
+ if [ ${@is_target(d)} == "no" ]; then
perl Build install
fi
}
diff --git a/classes/image.bbclass b/classes/image.bbclass
index 2954dcdf39..5f1dfa2dce 100644
--- a/classes/image.bbclass
+++ b/classes/image.bbclass
@@ -80,7 +80,7 @@ fakeroot do_rootfs () {
insert_feed_uris
- rm -f ${IMAGE_ROOTFS}${libdir}/ipkg/lists/oe
+ rm -f ${IMAGE_ROOTFS}${libdir}/ipkg/lists/*
${IMAGE_PREPROCESS_COMMAND}
diff --git a/classes/insane.bbclass b/classes/insane.bbclass
index 30b164b734..c3a211eefd 100644
--- a/classes/insane.bbclass
+++ b/classes/insane.bbclass
@@ -219,7 +219,7 @@ def package_qa_check_rpath(file,name,d):
#bb.note("???%s???" % bad_dir_test)
for line in txt:
#bb.note("===%s===" % line)
- if bad_dir_test in line:
+ if bad_dir in line:
package_qa_write_error( 1, name, file, d)
bb.error("QA Issue package %s contains bad RPATH %s in file %s" % (name, line, file))
#bb.note("Fixing RPATH for you in %s" % file)
diff --git a/classes/magicbox-image.bbclass b/classes/magicbox-image.bbclass
new file mode 100644
index 0000000000..05de28b76b
--- /dev/null
+++ b/classes/magicbox-image.bbclass
@@ -0,0 +1,37 @@
+magicbox_gen_images() {
+ # find latest kernel
+ KERNEL=`ls -tr ${DEPLOY_DIR_IMAGE}/uImage* | tail -1`
+ if [ -z "$KERNEL" ]; then
+ oefatal "No kernel found in ${DEPLOY_DIR_IMAGE}. Exiting !"
+ exit 1
+ fi
+
+ #squashfs
+ #We need to prep the image so that u-boot recognizes it
+ mv ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.squashfs ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.squashfs.bin
+ ${STAGING_BINDIR_NATIVE}/mkimage -A ppc -O linux -T ramdisk -C none -n "OPLinux-uclibc-squashfs" \
+ -d ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.squashfs.bin ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.squashfs
+ rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.squashfs.bin
+
+
+ #squashfs-lzma
+ #same as squashfs
+ mv ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.squashfs-lzma ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.squashfs-lzma.bin
+ ${STAGING_BINDIR_NATIVE}/mkimage -A ppc -O linux -T ramdisk -C none -n "OPLinux-uclibc-squashfs-lzma" \
+ -d ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.squashfs-lzma.bin ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.squashfs-lzma
+ rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.squashfs-lzma.bin
+
+ #kernel+jffs2 in a single image
+ #Add jffs2 marker at the end of the rootfs file
+ echo -ne '\xde\xad\xc0\xde' >> ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2
+
+
+ ( dd if=$KERNEL bs=65536 conv=sync; \
+ dd if=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 bs=65536 conv=sync; \
+ ) > ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.jffs2.flash.bin
+
+}
+
+
+
+IMAGE_POSTPROCESS_COMMAND += "magicbox_gen_images; "
diff --git a/conf/bitbake.conf b/conf/bitbake.conf
index ae26d992f2..c754dab273 100644
--- a/conf/bitbake.conf
+++ b/conf/bitbake.conf
@@ -205,9 +205,9 @@ IMAGE_CMD_tar.bz2 = "cd ${IMAGE_ROOTFS} && tar -jcvf ${DEPLOY_DIR_IMAGE}/${IMAGE
IMAGE_CMD_cpio = "cd ${IMAGE_ROOTFS} && (find . | cpio -o -H newc >${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.cpio)"
IMAGE_CMD_cpio.gz = "cd ${IMAGE_ROOTFS} && (find . | cpio -o -H newc | gzip -c -9 >${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.cpio.gz)"
EXTRA_IMAGECMD = ""
-EXTRA_IMAGECMD_jffs2 = "--pad --little-endian --eraseblock=0x40000"
-EXTRA_IMAGECMD_squashfs = "-le -b 16384"
-EXTRA_IMAGECMD_squashfs-lzma = "-le -b 16384"
+EXTRA_IMAGECMD_jffs2 = ""
+EXTRA_IMAGECMD_squashfs = ""
+EXTRA_IMAGECMD_squashfs-lzma = ""
IMAGE_DEPENDS = ""
IMAGE_DEPENDS_jffs2 = "mtd-utils-native"
diff --git a/conf/machine/magicbox.conf b/conf/machine/magicbox.conf
index 4ed28337d6..19dae402d9 100644
--- a/conf/machine/magicbox.conf
+++ b/conf/machine/magicbox.conf
@@ -2,22 +2,27 @@
#@Name: Magicbox router board
#@DESCRIPTION: Machine configuration for Magicbox router board http://wwww.magicbox.pl
+INHERIT += "magicbox-image"
+
TARGET_ARCH = "powerpc"
PACKAGE_EXTRA_ARCHS = "ppc405"
PREFERRED_PROVIDER_virtual/kernel = "linux-${MACHINE}"
-MACHINE_FEATURES = "kernel26 ext2"
+MACHINE_FEATURES = "kernel26"
+MACHINE_TASK_PROVIDER = "task-base"
TARGET_CPU = "405"
-OLDEST_KERNEL = "2.6.12"
+OLDEST_KERNEL = "2.6.18"
SERIAL_CONSOLE = "115200 ttyS0"
PREFERRED_VERSION_u-boot = "1.1.2"
-EXTRA_IMAGECMD = "--big-endian"
-ERASEBLOCK_SIZE = "0x10000"
-IMAGE_FSTYPES = "jffs2"
+EXTRA_IMAGECMD_jffs2 = "-pad --big-endian --squash -e 0x10000"
+EXTRA_IMAGECMD_squashfs = " -be -all-root -nopad -noappend -root-owned"
+EXTRA_IMAGECMD_squashfs-lzma = " -be -all-root -nopad -noappend -root-owned"
+
+
#tune for the 405 cpu
require conf/machine/include/tune-ppc405.conf
diff --git a/packages/cairo/cairo_git.bb b/packages/cairo/cairo_git.bb
index a2a6448565..3da41f382d 100644
--- a/packages/cairo/cairo_git.bb
+++ b/packages/cairo/cairo_git.bb
@@ -7,7 +7,7 @@ DEPENDS = "virtual/libx11 libsm libpng fontconfig libxrender"
DESCRIPTION = "Cairo graphics library"
LICENSE = "MPL LGPL"
-PV = "1.3.17+git${SRCDATE}"
+PV = "1.4.7+git${SRCDATE}"
SRC_URI = "git://git.cairographics.org/git/cairo;protocol=git \
"
diff --git a/packages/chrpath/chrpath-native_0.13.bb b/packages/chrpath/chrpath-native_0.13.bb
index c9cc9112a3..6ba8feb5e6 100644
--- a/packages/chrpath/chrpath-native_0.13.bb
+++ b/packages/chrpath/chrpath-native_0.13.bb
@@ -1,10 +1,3 @@
-DESCRIPTION = "chrpath allows you to change the rpath (where the application looks for libraries) in an application. It does not (yet) allow you to add an rpath if there isn't one already."
-LICENSE = "GPL"
-
-SRC_URI = "http://ftp.debian.org/debian/pool/main/c/chrpath/chrpath_0.13.orig.tar.gz"
-
-inherit autotools native
-
-S = "${WORKDIR}/chrpath-${PV}"
-
+require chrpath.inc
+inherit native
diff --git a/packages/chrpath/chrpath.inc b/packages/chrpath/chrpath.inc
new file mode 100644
index 0000000000..1858d47d2c
--- /dev/null
+++ b/packages/chrpath/chrpath.inc
@@ -0,0 +1,10 @@
+DESCRIPTION = "chrpath allows you to change the rpath (where the application looks for libraries) in an application. It does not (yet) allow you to add an rpath if there isn't one already."
+LICENSE = "GPL"
+
+SRC_URI = "http://ftp.debian.org/debian/pool/main/c/chrpath/chrpath_${PV}.orig.tar.gz"
+
+inherit autotools
+
+S = "${WORKDIR}/chrpath-${PV}"
+
+
diff --git a/packages/chrpath/chrpath_0.13.bb b/packages/chrpath/chrpath_0.13.bb
new file mode 100644
index 0000000000..15392d9ac2
--- /dev/null
+++ b/packages/chrpath/chrpath_0.13.bb
@@ -0,0 +1 @@
+require chrpath.inc
diff --git a/packages/db/db_4.2.52.bb b/packages/db/db_4.2.52.bb
index 05565287f5..a0c394f7a4 100644
--- a/packages/db/db_4.2.52.bb
+++ b/packages/db/db_4.2.52.bb
@@ -91,7 +91,7 @@ do_install_append() {
if test -d "${D}/${prefix}/docs"
then
mkdir -p "${D}/${datadir}"
- test ! -d "${D}/${docdir}" || rmdir "${D}/${docdir}"
+ test ! -d "${D}/${docdir}" || rm -rf "${D}/${docdir}"
mv "${D}/${prefix}/docs" "${D}/${docdir}"
fi
}
diff --git a/packages/db/db_4.3.29.bb b/packages/db/db_4.3.29.bb
index 3c14b9eb96..474e73724f 100644
--- a/packages/db/db_4.3.29.bb
+++ b/packages/db/db_4.3.29.bb
@@ -92,7 +92,7 @@ do_install_append() {
if test -d "${D}/${prefix}/docs"
then
mkdir -p "${D}/${datadir}"
- test ! -d "${D}/${docdir}" || rmdir "${D}/${docdir}"
+ test ! -d "${D}/${docdir}" || rm -rf "${D}/${docdir}"
mv "${D}/${prefix}/docs" "${D}/${docdir}"
fi
}
diff --git a/packages/ethtool/ethtool_5.bb b/packages/ethtool/ethtool_5.bb
new file mode 100644
index 0000000000..c1d30c678d
--- /dev/null
+++ b/packages/ethtool/ethtool_5.bb
@@ -0,0 +1,2 @@
+require ethtool.inc
+PR="r0"
diff --git a/packages/gcc/gcc-4.1.2/800-arm-bigendian.patch b/packages/gcc/gcc-4.1.2/800-arm-bigendian.patch
index 1fa5ae1cd2..0a9417419e 100644
--- a/packages/gcc/gcc-4.1.2/800-arm-bigendian.patch
+++ b/packages/gcc/gcc-4.1.2/800-arm-bigendian.patch
@@ -3,8 +3,10 @@ Adds support for arm*b-linux* big-endian ARM targets
See http://gcc.gnu.org/PR16350
---- gcc-4.1.0/gcc/config/arm/linux-elf.h
-+++ gcc-4.1.0/gcc/config/arm/linux-elf.h
+Index: gcc-4.1.1/gcc/config/arm/linux-elf.h
+===================================================================
+--- gcc-4.1.1.orig/gcc/config/arm/linux-elf.h
++++ gcc-4.1.1/gcc/config/arm/linux-elf.h
@@ -28,19 +28,33 @@
#undef TARGET_VERSION
#define TARGET_VERSION fputs (" (ARM GNU/Linux with ELF)", stderr);
@@ -51,9 +53,11 @@ See http://gcc.gnu.org/PR16350
SUBTARGET_EXTRA_LINK_SPEC
#undef LINK_SPEC
---- gcc-4.1.0/gcc/config.gcc
-+++ gcc-4.1.0/gcc/config.gcc
-@@ -672,6 +672,11 @@
+Index: gcc-4.1.1/gcc/config.gcc
+===================================================================
+--- gcc-4.1.1.orig/gcc/config.gcc
++++ gcc-4.1.1/gcc/config.gcc
+@@ -672,6 +672,11 @@ arm*-*-netbsd*)
;;
arm*-*-linux*) # ARM GNU/Linux with ELF
tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h"
@@ -65,3 +69,59 @@ See http://gcc.gnu.org/PR16350
tmake_file="${tmake_file} t-linux arm/t-arm"
case ${target} in
arm*-*-linux-gnueabi)
+Index: gcc-4.1.1/gcc/config/arm/linux-eabi.h
+===================================================================
+--- gcc-4.1.1.orig/gcc/config/arm/linux-eabi.h
++++ gcc-4.1.1/gcc/config/arm/linux-eabi.h
+@@ -20,6 +20,17 @@
+ the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA. */
+
++/*
++ * 'config.gcc' defines TARGET_BIG_ENDIAN_DEFAULT as 1 for arm*b-*
++ * (big endian) configurations.
++ */
++#undef TARGET_LINKER_EMULATION
++#if TARGET_BIG_ENDIAN_DEFAULT
++#define TARGET_LINKER_EMULATION "armelfb_linux_eabi"
++#else
++#define TARGET_LINKER_EMULATION "armelf_linux_eabi"
++#endif
++
+ /* On EABI GNU/Linux, we want both the BPABI builtins and the
+ GNU/Linux builtins. */
+ #undef TARGET_OS_CPP_BUILTINS
+@@ -48,7 +59,7 @@
+ #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm10tdmi
+
+ #undef SUBTARGET_EXTRA_LINK_SPEC
+-#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux_eabi"
++#define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION
+
+ /* Use ld-linux.so.3 so that it will be possible to run "classic"
+ GNU/Linux binaries on an EABI system. */
+Index: gcc-4.1.1/gcc/config/arm/bpabi.h
+===================================================================
+--- gcc-4.1.1.orig/gcc/config/arm/bpabi.h
++++ gcc-4.1.1/gcc/config/arm/bpabi.h
+@@ -33,9 +33,19 @@
+ #undef FPUTYPE_DEFAULT
+ #define FPUTYPE_DEFAULT FPUTYPE_VFP
+
++/*
++ * 'config.gcc' defines TARGET_BIG_ENDIAN_DEFAULT as 1 for arm*b-*
++ * (big endian) configurations.
++ */
++#if TARGET_BIG_ENDIAN_DEFAULT
++#define TARGET_ENDIAN_DEFAULT MASK_BIG_END
++#else
++#define TARGET_ENDIAN_DEFAULT 0
++#endif
++
+ /* EABI targets should enable interworking by default. */
+ #undef TARGET_DEFAULT
+-#define TARGET_DEFAULT MASK_INTERWORK
++#define TARGET_DEFAULT (MASK_INTERWORK | TARGET_ENDIAN_DEFAULT)
+
+ /* The ARM BPABI functions return a boolean; they use no special
+ calling convention. */
diff --git a/packages/gcc/gcc-cross_4.1.2.bb b/packages/gcc/gcc-cross_4.1.2.bb
index 657e5afaca..b11259676e 100644
--- a/packages/gcc/gcc-cross_4.1.2.bb
+++ b/packages/gcc/gcc-cross_4.1.2.bb
@@ -5,7 +5,7 @@ inherit cross
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/gcc-${PV}"
# NOTE: split PR. If the main .oe changes something that affects its *build*
# remember to increment this one too.
-PR = "r2"
+PR = "r3"
DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}libc-for-gcc gmp-native mpfr-native"
PROVIDES = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++"
diff --git a/packages/gcc/gcc_4.1.1.bb b/packages/gcc/gcc_4.1.1.bb
index c88692ae0c..9135daca18 100644
--- a/packages/gcc/gcc_4.1.1.bb
+++ b/packages/gcc/gcc_4.1.1.bb
@@ -1,4 +1,4 @@
-PR = "r13"
+PR = "r14"
DESCRIPTION = "The GNU cc and gcc C compilers."
HOMEPAGE = "http://www.gnu.org/software/gcc/"
SECTION = "devel"
@@ -37,8 +37,11 @@ SRC_URI = "http://ftp.gnu.org/pub/gnu/gcc/gcc-4.1.1/gcc-4.1.1.tar.bz2 \
SRC_URI_append_sh3 = " file://sh3-installfix-fixheaders.patch;patch=1 "
-SRC_URI_append_powerpc = " file://ppc-gcc-41-20060515.patch;patch=1 \
- file://ppc-sfp-long-double-gcc411-7.patch;patch=1 "
+#This is a dirty hack to get gcc 4.1.1 to compile for glibc AND uclibc on ppc
+#the patch that is need it to get gcc support soft-floats with glibc, makes gcc fail with uclibc
+SRC_URI_append_linux = " file://ppc-gcc-41-20060515.patch;patch=1 \
+ file://ppc-sfp-long-double-gcc411-7.patch;patch=1 "
+
#Set the fortran bits
# 'fortran' or '', not 'f77' like gcc3 had
diff --git a/packages/gcc/gcc_4.1.2.bb b/packages/gcc/gcc_4.1.2.bb
index 2e6036d119..bd205f68eb 100644
--- a/packages/gcc/gcc_4.1.2.bb
+++ b/packages/gcc/gcc_4.1.2.bb
@@ -1,4 +1,4 @@
-PR = "r1"
+PR = "r2"
DESCRIPTION = "The GNU cc and gcc C compilers."
HOMEPAGE = "http://www.gnu.org/software/gcc/"
SECTION = "devel"
@@ -20,7 +20,6 @@ SRC_URI = "ftp://ftp.gnu.org/pub/gnu/gcc/gcc-4.1.2/gcc-4.1.2.tar.bz2 \
file://602-sdk-libstdc++-includes.patch;patch=1 \
file://740-sh-pr24836.patch;patch=1 \
file://800-arm-bigendian.patch;patch=1 \
- file://801-arm-bigendian-eabi.patch;patch=1 \
file://arm-nolibfloat.patch;patch=1 \
file://arm-softfloat.patch;patch=1 \
file://gcc41-configure.in.patch;patch=1 \
diff --git a/packages/glib-2.0/glib-2.0-2.12.12/.mtn2git_empty b/packages/glib-2.0/glib-2.0-2.12.12/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/glib-2.0/glib-2.0-2.12.12/.mtn2git_empty
diff --git a/packages/glib-2.0/glib-2.0-2.12.12/configure-libtool.patch b/packages/glib-2.0/glib-2.0-2.12.12/configure-libtool.patch
new file mode 100644
index 0000000000..50ffc628db
--- /dev/null
+++ b/packages/glib-2.0/glib-2.0-2.12.12/configure-libtool.patch
@@ -0,0 +1,20 @@
+--- /tmp/configure.in 2007-02-04 12:07:05.000000000 +0100
++++ glib-2.12.9/configure.in 2007-02-04 12:08:04.655251000 +0100
+@@ -1174,7 +1174,7 @@
+ G_MODULE_LDFLAGS=
+ else
+ export SED
+- G_MODULE_LDFLAGS=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
++ G_MODULE_LDFLAGS=`(./$host_alias-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
+ fi
+ dnl G_MODULE_IMPL= don't reset, so cmd-line can override
+ G_MODULE_NEED_USCORE=0
+@@ -1239,7 +1239,7 @@
+ LDFLAGS="$LDFLAGS $G_MODULE_LDFLAGS"
+ dnl *** check for OSF1/5.0 RTLD_GLOBAL brokenness
+ echo "void glib_plugin_test(void) { }" > plugin.c
+- ${SHELL} ./libtool --mode=compile ${CC} -shared \
++ ${SHELL} ./$host_alias-libtool --mode=compile ${CC} -shared \
+ -export-dynamic -o plugin.o plugin.c 2>&1 >/dev/null
+ AC_CACHE_CHECK([for RTLD_GLOBAL brokenness],
+ glib_cv_rtldglobal_broken,[
diff --git a/packages/glib-2.0/glib-2.0_2.12.12.bb b/packages/glib-2.0/glib-2.0_2.12.12.bb
new file mode 100644
index 0000000000..f8eb9e5537
--- /dev/null
+++ b/packages/glib-2.0/glib-2.0_2.12.12.bb
@@ -0,0 +1,8 @@
+require glib.inc
+
+PR = "r0"
+
+SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/glib/2.12/glib-${PV}.tar.bz2 \
+ file://glibconfig-sysdefs.h \
+ file://configure-libtool.patch;patch=1"
+
diff --git a/packages/glib-2.0/glib.inc b/packages/glib-2.0/glib.inc
index 7539dd1e2a..6b384ad6c7 100644
--- a/packages/glib-2.0/glib.inc
+++ b/packages/glib-2.0/glib.inc
@@ -15,7 +15,10 @@ PR = "r1"
LEAD_SONAME = "libglib-2.0.*"
FILES_glib-2.0-utils = "${bindir}/*"
-EXTRA_OECONF = "--disable-debug --enable-included-printf=no"
+EXTRA_OECONF = "--disable-debug "
+
+# Add and entry for your favourite arch if your (g)libc has a sane printf
+EXTRA_OECONF_append_glibc_arm = " --enable-included-printf=no "
S = "${WORKDIR}/glib-${PV}"
diff --git a/packages/glibc/glibc-2.5/armeb-strlen.patch b/packages/glibc/glibc-2.5/armeb-strlen.patch
deleted file mode 100644
index 69a2e59d30..0000000000
--- a/packages/glibc/glibc-2.5/armeb-strlen.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- /tmp/strlen.S 2007-05-01 18:32:48.000000000 +0200
-+++ glibc-2.5/ports/sysdeps/arm/strlen.S 2007-05-01 18:33:29.665251000 +0200
-@@ -24,6 +24,8 @@
- * exit: r0 = len
- */
-
-+#define __ARMEB__
-+
- ENTRY(strlen)
- bic r1, r0, $3 @ addr of word containing first byte
- ldr r2, [r1], $4 @ get the first word
diff --git a/packages/glibc/glibc_2.5.bb b/packages/glibc/glibc_2.5.bb
index f0981694e8..f14ce45a94 100644
--- a/packages/glibc/glibc_2.5.bb
+++ b/packages/glibc/glibc_2.5.bb
@@ -5,7 +5,7 @@ ARM_INSTRUCTION_SET = "arm"
PACKAGES_DYNAMIC = "libc6*"
RPROVIDES_${PN}-dev = "libc6-dev"
-PR = "r5"
+PR = "r6"
# the -isystem in bitbake.conf screws up glibc do_stage
BUILD_CPPFLAGS = "-I${STAGING_DIR}/${BUILD_SYS}/include"
@@ -76,9 +76,6 @@ SRC_URI_append_powerpc= " file://ppc-sfp-machine.patch;patch=1 \
file://ppc-ports-ld-nofpu-20070114.patch;patch=1 \
file://powerpc-sqrt-hack.diff;patch=1""
-#armeb needs an extra define
-SRC_URI_append_armeb = " file://armeb-strlen.patch;patch=1 "
-
S = "${WORKDIR}/glibc-${PV}"
B = "${WORKDIR}/build-${TARGET_SYS}"
diff --git a/packages/gpe-autostarter/gpe-autostarter-0.12/.mtn2git_empty b/packages/gpe-autostarter/gpe-autostarter-0.12/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gpe-autostarter/gpe-autostarter-0.12/.mtn2git_empty
diff --git a/packages/gpe-autostarter/gpe-autostarter-0.12/wireless.patch b/packages/gpe-autostarter/gpe-autostarter-0.12/wireless.patch
new file mode 100644
index 0000000000..b375507ca8
--- /dev/null
+++ b/packages/gpe-autostarter/gpe-autostarter-0.12/wireless.patch
@@ -0,0 +1,12 @@
+--- gpe-autostarter-0.12/net.c.orig 2007-04-30 21:26:40.000000000 +0200
++++ gpe-autostarter-0.12/net.c 2007-04-30 21:33:20.000000000 +0200
+@@ -18,7 +18,9 @@
+ #include <locale.h>
+ #include <signal.h>
+
++#include <linux/types.h>
+ #include <sys/socket.h>
++#include <linux/if.h>
+ #include <linux/wireless.h>
+ #include <sys/ioctl.h>
+
diff --git a/packages/gpe-autostarter/gpe-autostarter_0.12.bb b/packages/gpe-autostarter/gpe-autostarter_0.12.bb
index f92b5df16b..c47f75797e 100644
--- a/packages/gpe-autostarter/gpe-autostarter_0.12.bb
+++ b/packages/gpe-autostarter/gpe-autostarter_0.12.bb
@@ -4,3 +4,5 @@ DEPENDS = "glib-2.0 dbus-glib hotplug-dbus virtual/libx11"
RDEPENDS = "hotplug-dbus"
inherit gpe
+
+SRC_URI += "file://wireless.patch;patch=1"
diff --git a/packages/gpe-conf/gpe-conf-0.2.5/wireless.patch b/packages/gpe-conf/gpe-conf-0.2.5/wireless.patch
new file mode 100644
index 0000000000..4e52f8b092
--- /dev/null
+++ b/packages/gpe-conf/gpe-conf-0.2.5/wireless.patch
@@ -0,0 +1,16 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- gpe-conf-0.2.5/modules/sysinfo.c~wireless
++++ gpe-conf-0.2.5/modules/sysinfo.c
+@@ -28,6 +28,8 @@
+ #include <sys/utsname.h>
+
+ #include <sys/socket.h>
++#include <linux/types.h>
++#include <linux/if.h>
+ #include <linux/wireless.h>
+ #include <sys/ioctl.h>
+
diff --git a/packages/gpe-conf/gpe-conf_0.2.5.bb b/packages/gpe-conf/gpe-conf_0.2.5.bb
index 6bd96204eb..8cb2d61f3d 100644
--- a/packages/gpe-conf/gpe-conf_0.2.5.bb
+++ b/packages/gpe-conf/gpe-conf_0.2.5.bb
@@ -10,7 +10,7 @@ RDEPENDS_gpe-conf-panel = "gpe-conf"
RPROVIDES_${PN} += " bl"
RCONFLICTS_${PN} = "bl"
-PR = "r3"
+PR = "r4"
GPE_TARBALL_SUFFIX = "bz2"
@@ -23,4 +23,5 @@ FILES_${PN} = "${sysconfdir} ${bindir} ${datadir}/pixmaps \
${datadir}/gpe-conf"
FILES_gpe-conf-panel = "${datadir}/applications/gpe-conf.desktop"
-SRC_URI += "file://backlight-bugfix.patch;patch=1"
+SRC_URI += "file://backlight-bugfix.patch;patch=1 \
+ file://wireless.patch;patch=1"
diff --git a/packages/gpe-dm/gpe-dm_0.51.bb b/packages/gpe-dm/gpe-dm_0.51.bb
new file mode 100644
index 0000000000..6cf1f002a0
--- /dev/null
+++ b/packages/gpe-dm/gpe-dm_0.51.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "GPE Display Manager"
+SECTION = "gpe"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "glib-2.0 xserver-common"
+RDEPENDS_${PN} += " xserver-common"
+
+GPE_TARBALL_SUFFIX ?= "bz2"
+
+inherit gpe autotools update-rc.d
+
+INITSCRIPT_NAME = "gpe-dm"
+INITSCRIPT_PARAMS = "start 99 5 2 . stop 20 0 1 6 ."
diff --git a/packages/gpe-mininet/gpe-mininet_svn.bb b/packages/gpe-mininet/gpe-mininet_svn.bb
new file mode 100644
index 0000000000..1acca052fd
--- /dev/null
+++ b/packages/gpe-mininet/gpe-mininet_svn.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "GPE network connection checker"
+SECTION = "gpe"
+LICENSE = "GPL"
+DEPENDS = "libgpewidget gpe-icons gpe-conf"
+RRECOMMENDS = "gpe-conf"
+PR = "r0"
+PV = "0.7+svn-${SRCDATE}"
+
+inherit autotools pkgconfig
+
+SRC_URI = "${GPE_EXTRA_SVN}"
+
+S = "${WORKDIR}/${PN}"
+
+FILES_${PN} = " ${bindir} ${datadir}/pixmaps ${datadir}/applications"
+FILES_${PN} += " ${datadir}/gpe/pixmaps"
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/initscripts/initscripts-1.0/oplinux-uclibc/mountall.sh b/packages/initscripts/initscripts-1.0/oplinux-uclibc/mountall.sh
new file mode 100755
index 0000000000..33d7065275
--- /dev/null
+++ b/packages/initscripts/initscripts-1.0/oplinux-uclibc/mountall.sh
@@ -0,0 +1,45 @@
+#
+# mountall.sh Mount all filesystems.
+#
+# Version: @(#)mountall.sh 2.83-2 01-Nov-2001 miquels@cistron.nl
+#
+. /etc/default/rcS
+
+#
+# Mount local filesystems in /etc/fstab. For some reason, people
+# might want to mount "proc" several times, and mount -v complains
+# about this. So we mount "proc" filesystems without -v.
+#
+test "$VERBOSE" != no && echo "Mounting local filesystems..."
+mount -a 2>/dev/null
+
+#
+# We might have mounted something over /dev, see if /dev/initctl is there.
+#
+if test ! -p /dev/initctl
+then
+ rm -f /dev/initctl
+ mknod -m 600 /dev/initctl p
+fi
+kill -USR1 1
+
+#
+# Execute swapon command again, in case we want to swap to
+# a file on a now mounted filesystem.
+#
+doswap=yes
+case "`uname -r`" in
+ 2.[0123].*)
+ if grep -qs resync /proc/mdstat
+ then
+ doswap=no
+ fi
+ ;;
+esac
+if test $doswap = yes
+then
+ swapon -a 2> /dev/null
+fi
+
+: exit 0
+
diff --git a/packages/initscripts/initscripts_1.0.bb b/packages/initscripts/initscripts_1.0.bb
index 4409c30b0b..21e3bb2afe 100644
--- a/packages/initscripts/initscripts_1.0.bb
+++ b/packages/initscripts/initscripts_1.0.bb
@@ -4,7 +4,7 @@ PRIORITY = "required"
DEPENDS = "makedevs"
RDEPENDS = "makedevs"
LICENSE = "GPL"
-PR = "r89"
+PR = "r90"
SRC_URI = "file://halt \
file://ramdisk \
diff --git a/packages/libglade/libglade_2.4.2.bb b/packages/libglade/libglade_2.4.2.bb
index b57d51d996..dce7e5618d 100644
--- a/packages/libglade/libglade_2.4.2.bb
+++ b/packages/libglade/libglade_2.4.2.bb
@@ -12,7 +12,7 @@ SRC_URI += "file://glade-cruft.patch;patch=1 file://no-xml2.patch;patch=1"
EXTRA_OECONF += "--without-libxml2"
-CFLAGS += "-lz"
+LDFLAGS += "-lz"
PACKAGES += " ${PN}-data"
FILES_${PN} = "${libdir}/lib*.so.*"
diff --git a/packages/libglade/libglade_2.5.1.bb b/packages/libglade/libglade_2.5.1.bb
index 4dcbe69828..8d43bc412e 100644
--- a/packages/libglade/libglade_2.5.1.bb
+++ b/packages/libglade/libglade_2.5.1.bb
@@ -13,7 +13,7 @@ SRC_URI += "file://glade-cruft.patch;patch=1 file://no-xml2.patch;patch=1 \
EXTRA_OECONF += "--without-libxml2"
-CFLAGS += "-lz"
+LDFLAGS += "-lz"
PACKAGES += " ${PN}-data"
FILES_${PN} = "${libdir}/lib*.so.*"
diff --git a/packages/libtool/libtool-1.5.22/.mtn2git_empty b/packages/libtool/libtool-1.5.22/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/libtool/libtool-1.5.22/.mtn2git_empty
diff --git a/packages/libtool/libtool-1.5.22/autotools.patch b/packages/libtool/libtool-1.5.22/autotools.patch
new file mode 100644
index 0000000000..5df441e945
--- /dev/null
+++ b/packages/libtool/libtool-1.5.22/autotools.patch
@@ -0,0 +1,127 @@
+diff -urNd -urNd libtool-1.5/cdemo/configure.ac libtool-1.5.ac/cdemo/configure.ac
+--- libtool-1.5/cdemo/configure.ac 2001-10-06 11:35:17.000000000 -0400
++++ libtool-1.5.ac/cdemo/configure.ac 2004-05-05 17:16:17.000000000 -0400
+@@ -24,6 +24,7 @@
+ ## ------------------------ ##
+ AC_INIT([cdemo], [0.1], [bug-libtool@gnu.org])
+ AC_CONFIG_SRCDIR([main.c])
++AC_CONFIG_AUX_DIR([..])
+
+
+ ## ------------------------ ##
+diff -urNd -urNd libtool-1.5/demo/configure.ac libtool-1.5.ac/demo/configure.ac
+--- libtool-1.5/demo/configure.ac 2002-03-02 22:19:55.000000000 -0500
++++ libtool-1.5.ac/demo/configure.ac 2004-05-05 17:16:17.000000000 -0400
+@@ -24,6 +24,7 @@
+ ## ------------------------ ##
+ AC_INIT([demo], [1.0], [bug-libtool@gnu.org])
+ AC_CONFIG_SRCDIR([hello.c])
++AC_CONFIG_AUX_DIR([..])
+
+
+ ## ------------------------ ##
+diff -urNd -urNd libtool-1.5/demo/Makefile.am libtool-1.5.ac/demo/Makefile.am
+--- libtool-1.5/demo/Makefile.am 2002-11-19 04:42:39.000000000 -0500
++++ libtool-1.5.ac/demo/Makefile.am 2004-05-05 17:17:34.000000000 -0400
+@@ -121,17 +121,16 @@
+
+ # This is one of the essential tests for deplibs_check_method=pass_all.
+ # If this one passes with pass_all, it is likely that pass_all works
+-EXTRA_LIBRARIES = libhell0.a
+-libhell0_a_SOURCES = hello.c foo.c
+-EXTRA_LTLIBRARIES = libhell1.la libhell2.la
++EXTRA_LTLIBRARIES = libhell0.la libhell1.la libhell2.la
++libhell0_la_SOURCES = hello.c foo.c
+ libhell1_la_SOURCES = hell1.c
+ libhell1_la_LIBADD = -L. -lhell0
+ libhell1_la_LDFLAGS = -no-undefined -rpath $(libdir)
+-libhell1_la_DEPENDENCIES = libhell0.a
++libhell1_la_DEPENDENCIES = libhell0.la
+ libhell2_la_SOURCES = hell2.c
+ libhell2_la_LIBADD = -L. -lhell0
+ libhell2_la_LDFLAGS = -no-undefined -rpath $(libdir)
+-libhell2_la_DEPENDENCIES = libhell0.a
++libhell2_la_DEPENDENCIES = libhell0.la
+ EXTRA_PROGRAMS = hell0
+ hell0_SOURCES = main.c
+ hell0_LDADD = libhell1.la libhell2.la $(LIBM)
+diff -urNd -urNd libtool-1.5/depdemo/configure.ac libtool-1.5.ac/depdemo/configure.ac
+--- libtool-1.5/depdemo/configure.ac 2002-10-22 15:29:28.000000000 -0400
++++ libtool-1.5.ac/depdemo/configure.ac 2004-05-05 17:16:17.000000000 -0400
+@@ -24,6 +24,7 @@
+ ## ------------------------ ##
+ AC_INIT([depdemo], [0.1], [bug-libtool@gnu.org])
+ AC_CONFIG_SRCDIR([main.c])
++AC_CONFIG_AUX_DIR([..])
+
+
+ ## ------------------------ ##
+diff -urNd -urNd libtool-1.5/f77demo/configure.ac libtool-1.5.ac/f77demo/configure.ac
+--- libtool-1.5/f77demo/configure.ac 2003-03-22 01:34:27.000000000 -0500
++++ libtool-1.5.ac/f77demo/configure.ac 2004-05-05 17:16:17.000000000 -0400
+@@ -23,6 +23,7 @@
+ ## ------------------------ ##
+ AC_INIT([f77demo], [0.1], [bug-libtool@gnu.org])
+ AC_CONFIG_SRCDIR([foof.f])dnl
++AC_CONFIG_AUX_DIR([..])
+
+ ## ------------------------ ##
+ ## Automake Initialisation. ##
+diff -urNd -urNd libtool-1.5/mdemo/configure.ac libtool-1.5.ac/mdemo/configure.ac
+--- libtool-1.5/mdemo/configure.ac 2001-10-06 11:35:17.000000000 -0400
++++ libtool-1.5.ac/mdemo/configure.ac 2004-05-05 17:16:17.000000000 -0400
+@@ -24,6 +24,7 @@
+ ## ------------------------ ##
+ AC_INIT([mdemo], [0.1], [bug-libtool@gnu.org])
+ AC_CONFIG_SRCDIR([main.c])
++AC_CONFIG_AUX_DIR([..])
+
+
+ ## ------------------------ ##
+diff -urNd -urNd libtool-1.5/pdemo/configure.ac libtool-1.5.ac/pdemo/configure.ac
+--- libtool-1.5/pdemo/configure.ac 2001-10-06 11:35:17.000000000 -0400
++++ libtool-1.5.ac/pdemo/configure.ac 2004-05-05 17:16:17.000000000 -0400
+@@ -24,6 +24,7 @@
+ ## ------------------------ ##
+ AC_INIT([pdemo], [0.1], [bug-libtool@gnu.org])
+ AC_CONFIG_SRCDIR([longer_file_name_hello.c])
++AC_CONFIG_AUX_DIR([..])
+
+
+ ## ------------------------ ##
+diff -urNd -urNd libtool-1.5/pdemo/Makefile.am libtool-1.5.ac/pdemo/Makefile.am
+--- libtool-1.5/pdemo/Makefile.am 2002-11-19 04:42:39.000000000 -0500
++++ libtool-1.5.ac/pdemo/Makefile.am 2004-05-05 17:17:59.000000000 -0400
+@@ -121,17 +121,16 @@
+
+ # This is one of the essential tests for deplibs_check_method=pass_all.
+ # If this one passes with pass_all, it is likely that pass_all works
+-EXTRA_LIBRARIES = libhell0.a
+-libhell0_a_SOURCES = longer_file_name_hello.c longer_file_name_foo.c
+-EXTRA_LTLIBRARIES = libhell1.la libhell2.la
++libhell0_la_SOURCES = longer_file_name_hello.c longer_file_name_foo.c
++EXTRA_LTLIBRARIES = libhell0.la libhell1.la libhell2.la
+ libhell1_la_SOURCES = longer_file_name_hell1.c
+ libhell1_la_LIBADD = -L. -lhell0
+ libhell1_la_LDFLAGS = -no-undefined -rpath $(libdir)
+-libhell1_la_DEPENDENCIES = libhell0.a
++libhell1_la_DEPENDENCIES = libhell0.la
+ libhell2_la_SOURCES = longer_file_name_hell2.c
+ libhell2_la_LIBADD = -L. -lhell0
+ libhell2_la_LDFLAGS = -no-undefined -rpath $(libdir)
+-libhell2_la_DEPENDENCIES = libhell0.a
++libhell2_la_DEPENDENCIES = libhell0.la
+ EXTRA_PROGRAMS = hell0
+ hell0_SOURCES = longer_file_name_main.c
+ hell0_LDADD = libhell1.la libhell2.la $(LIBM)
+diff -urNd -urNd libtool-1.5/tagdemo/configure.ac libtool-1.5.ac/tagdemo/configure.ac
+--- libtool-1.5/tagdemo/configure.ac 2001-10-06 11:35:17.000000000 -0400
++++ libtool-1.5.ac/tagdemo/configure.ac 2004-05-05 17:16:17.000000000 -0400
+@@ -24,6 +24,7 @@
+ ## ------------------------ ##
+ AC_INIT([tagdemo], [0.1], [bug-libtool@gnu.org])
+ AC_CONFIG_SRCDIR([foo.cpp])
++AC_CONFIG_AUX_DIR([..])
+
+ AC_CANONICAL_TARGET
+
diff --git a/packages/libtool/libtool-1.5.22/install-path-check.patch b/packages/libtool/libtool-1.5.22/install-path-check.patch
new file mode 100644
index 0000000000..46cc960986
--- /dev/null
+++ b/packages/libtool/libtool-1.5.22/install-path-check.patch
@@ -0,0 +1,25 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- libtool-1.5.6/ltmain.in~install-path-check 2004-05-14 22:56:19.000000000 -0500
++++ libtool-1.5.6/ltmain.in 2004-05-14 22:57:48.000000000 -0500
+@@ -5503,10 +5503,13 @@
+ # At present, this check doesn't affect windows .dll's that
+ # are installed into $libdir/../bin (currently, that works fine)
+ # but it's something to keep an eye on.
+- if test "$inst_prefix_dir" = "$destdir"; then
+- $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
+- exit $EXIT_FAILURE
+- fi
++ #
++ # This breaks install into our staging area. -PB
++ #
++ # if test "$inst_prefix_dir" = "$destdir"; then
++ # $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
++ # exit $EXIT_FAILURE
++ # fi
+
+ if test -n "$inst_prefix_dir"; then
+ # Stick the inst_prefix_dir data into the link command.
diff --git a/packages/libtool/libtool-1.5.22/libdir-la.patch b/packages/libtool/libtool-1.5.22/libdir-la.patch
new file mode 100644
index 0000000000..47aae4c7af
--- /dev/null
+++ b/packages/libtool/libtool-1.5.22/libdir-la.patch
@@ -0,0 +1,52 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- libtool-1.5.6/ltmain.in~libdir-la 2004-04-01 21:46:15.000000000 -0600
++++ libtool-1.5.6/ltmain.in 2004-05-14 22:53:51.000000000 -0500
+@@ -2147,8 +2147,14 @@
+ absdir="$abs_ladir"
+ libdir="$abs_ladir"
+ else
+- dir="$libdir"
+- absdir="$libdir"
++ # Adding 'libdir' from the .la file to our library search paths
++ # breaks crosscompilation horribly. We cheat here and don't add
++ # it, instead adding the path where we found the .la. -CL
++ dir="$abs_ladir"
++ absdir="$abs_ladir"
++ libdir="$abs_ladir"
++ #dir="$libdir"
++ #absdir="$libdir"
+ fi
+ else
+ dir="$ladir/$objdir"
+@@ -2615,6 +2621,16 @@
+ esac
+ if grep "^installed=no" $deplib > /dev/null; then
+ path="$absdir/$objdir"
++# This interferes with crosscompilation. -CL
++# else
++# eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
++# if test -z "$libdir"; then
++# $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
++# exit 1
++# fi
++# if test "$absdir" != "$libdir"; then
++# $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
++# fi
+ else
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ if test -z "$libdir"; then
+@@ -5165,6 +5181,10 @@
+ # Replace all uninstalled libtool libraries with the installed ones
+ newdependency_libs=
+ for deplib in $dependency_libs; do
++ # Replacing uninstalled with installed can easily break crosscompilation,
++ # since the installed path is generally the wrong architecture. -CL
++ newdependency_libs="$newdependency_libs $deplib"
++ continue
+ case $deplib in
+ *.la)
+ name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
diff --git a/packages/libtool/libtool-1.5.22/prefix.patch b/packages/libtool/libtool-1.5.22/prefix.patch
new file mode 100644
index 0000000000..5e7d9ba51d
--- /dev/null
+++ b/packages/libtool/libtool-1.5.22/prefix.patch
@@ -0,0 +1,44 @@
+diff -aur libtool-1.5.22.orig/libtool.m4 libtool-1.5.22/libtool.m4
+--- libtool-1.5.22.orig/libtool.m4 2005-12-18 16:53:17.000000000 -0500
++++ libtool-1.5.22/libtool.m4 2007-05-05 15:47:41.000000000 -0400
+@@ -67,7 +67,8 @@
+ LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+ # Always use our own libtool.
+-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
++LIBTOOL='$(SHELL) $(top_builddir)'
++LIBTOOL="$LIBTOOL/$host_alias-libtool"
+ AC_SUBST(LIBTOOL)dnl
+
+ # Prevent multiple expansion
+@@ -134,7 +135,7 @@
+ rm="rm -f"
+
+ # Global variables:
+-default_ofile=libtool
++default_ofile=${host_alias}-libtool
+ can_build_shared=yes
+
+ # All known linkers require a `.a' archive for static linking (except MSVC,
+Only in libtool-1.5.22: libtool.m4.orig
+diff -aur libtool-1.5.22.orig/Makefile.am libtool-1.5.22/Makefile.am
+--- libtool-1.5.22.orig/Makefile.am 2005-08-12 13:21:09.000000000 -0400
++++ libtool-1.5.22/Makefile.am 2007-05-05 15:49:25.000000000 -0400
+@@ -30,7 +30,7 @@
+ aclocal_DATA = $(aclocal_macros)
+
+ # The standalone libtool script, and the libtool distributor.
+-bin_SCRIPTS = libtool libtoolize
++bin_SCRIPTS = $(host_alias)-libtool libtoolize
+
+ ## These are installed as a subdirectory of pkgdatadir so that
+ ## libtoolize --ltdl can find them later:
+@@ -55,7 +55,7 @@
+ libltdl/configure \
+ libltdl/config-h.in
+
+-libtool: $(srcdir)/ltmain.sh $(top_builddir)/configure.ac
++$(host_alias)-libtool: $(srcdir)/ltmain.sh $(top_builddir)/configure.ac
+ $(SHELL) $(top_builddir)/config.status --recheck
+ chmod +x $@
+
diff --git a/packages/libtool/libtool-1.5.22/sedvar.patch b/packages/libtool/libtool-1.5.22/sedvar.patch
new file mode 100644
index 0000000000..d505edae24
--- /dev/null
+++ b/packages/libtool/libtool-1.5.22/sedvar.patch
@@ -0,0 +1,16 @@
+
+#
+# Made by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- libtool-1.5/ltmain.in~sedvar 2003-04-14 16:58:24.000000000 -0500
++++ libtool-1.5/ltmain.in 2003-09-24 14:18:50.175518400 -0500
+@@ -48,6 +48,8 @@
+ exit 0
+ fi
+
++[ -z "${SED}" ] && SED=sed
++
+ # The name of this program.
+ progname=`$echo "$0" | ${SED} 's%^.*/%%'`
+ modename="$progname"
diff --git a/packages/libtool/libtool-1.5.22/tag.patch b/packages/libtool/libtool-1.5.22/tag.patch
new file mode 100644
index 0000000000..8921a3efb7
--- /dev/null
+++ b/packages/libtool/libtool-1.5.22/tag.patch
@@ -0,0 +1,19 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- libtool-1.5.6/ltmain.in~tag 2004-05-15 05:14:32.000000000 -0400
++++ libtool-1.5.6/ltmain.in 2004-05-15 05:18:01.000000000 -0400
+@@ -226,8 +226,9 @@
+ # line option must be used.
+ if test -z "$tagname"; then
+ $echo "$modename: unable to infer tagged configuration"
+- $echo "$modename: specify a tag with \`--tag'" 1>&2
+- exit $EXIT_FAILURE
++ $echo "$modename: defaulting to \`CC'"
++ $echo "$modename: if this is not correct, specify a tag with \`--tag'"
++# exit $EXIT_FAILURE
+ # else
+ # $echo "$modename: using $tagname tagged configuration"
+ fi
diff --git a/packages/libtool/libtool-1.5.22/tag1.patch b/packages/libtool/libtool-1.5.22/tag1.patch
new file mode 100644
index 0000000000..6fefd6266d
--- /dev/null
+++ b/packages/libtool/libtool-1.5.22/tag1.patch
@@ -0,0 +1,13 @@
+Index: libtool-1.5.10/libltdl/ltmain.sh
+===================================================================
+--- libtool-1.5.10.orig/libltdl/ltmain.sh 2004-09-19 13:34:44.000000000 +0100
++++ libtool-1.5.10/libltdl/ltmain.sh 2006-05-25 15:28:39.000000000 +0100
+@@ -232,7 +232,7 @@
+ if test -z "$tagname"; then
+ $echo "$modename: unable to infer tagged configuration"
+ $echo "$modename: specify a tag with \`--tag'" 1>&2
+- exit $EXIT_FAILURE
++# exit $EXIT_FAILURE
+ # else
+ # $echo "$modename: using $tagname tagged configuration"
+ fi
diff --git a/packages/libtool/libtool-1.5.22/uclibc.patch b/packages/libtool/libtool-1.5.22/uclibc.patch
new file mode 100644
index 0000000000..2c8cbabbb3
--- /dev/null
+++ b/packages/libtool/libtool-1.5.22/uclibc.patch
@@ -0,0 +1,19 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- libtool-1.5.8/libtool.m4~uclibc
++++ libtool-1.5.8/libtool.m4
+@@ -2221,6 +2221,11 @@
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
++linux-uclibc*)
++ lt_cv_deplibs_check_method=pass_all
++ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
++ ;;
++
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
diff --git a/packages/libtool/libtool-cross_1.5.22.bb b/packages/libtool/libtool-cross_1.5.22.bb
new file mode 100644
index 0000000000..2188963495
--- /dev/null
+++ b/packages/libtool/libtool-cross_1.5.22.bb
@@ -0,0 +1,30 @@
+DEFAULT_PREFERENCE = "-1"
+
+SECTION = "devel"
+require libtool_${PV}.bb
+
+PR = "r0"
+PACKAGES = ""
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/libtool-${PV}"
+SRC_URI_append = " file://libdir-la.patch;patch=1 \
+ file://prefix.patch;patch=1 \
+ file://tag.patch;patch=1 \
+ file://tag1.patch;patch=1 \
+ file://install-path-check.patch;patch=1"
+S = "${WORKDIR}/libtool-${PV}"
+
+prefix = "${STAGING_DIR}"
+exec_prefix = "${prefix}/${BUILD_SYS}"
+bindir = "${STAGING_BINDIR_NATIVE}"
+
+do_compile () {
+ :
+}
+
+do_stage () {
+ install -m 0755 ${HOST_SYS}-libtool ${bindir}/${HOST_SYS}-libtool
+}
+
+do_install () {
+ :
+}
diff --git a/packages/libtool/libtool-native_1.5.22.bb b/packages/libtool/libtool-native_1.5.22.bb
new file mode 100644
index 0000000000..35d7f40b09
--- /dev/null
+++ b/packages/libtool/libtool-native_1.5.22.bb
@@ -0,0 +1,44 @@
+DEFAULT_PREFERENCE = "-1"
+
+SECTION = "devel"
+require libtool_${PV}.bb
+
+PR = "r0"
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/libtool-${PV}"
+SRC_URI_append = " file://libdir-la.patch;patch=1 \
+ file://prefix.patch;patch=1 \
+ file://tag.patch;patch=1 \
+ file://tag1.patch;patch=1 \
+ file://install-path-check.patch;patch=1"
+S = "${WORKDIR}/libtool-${PV}"
+
+STAGING_DATADIR_safe := "${STAGING_DATADIR}"
+
+inherit native
+
+do_stage () {
+ install -m 0755 ${HOST_SYS}-libtool ${STAGING_BINDIR}/${HOST_SYS}-libtool
+ install -m 0755 libtoolize ${STAGING_BINDIR}/libtoolize
+ oe_libinstall -a -so -C libltdl libltdl ${STAGING_LIBDIR}
+ install -m 0644 libltdl/ltdl.h ${STAGING_INCDIR}/
+ for dir in ${STAGING_DATADIR} ${STAGING_DATADIR_safe}; do
+ ltdldir="${dir}/libtool/libltdl"
+ install -d $dir/libtool \
+ $ltdldir \
+ $dir/aclocal
+ install -c config.guess $dir/libtool/config.guess
+ install -c config.sub $dir/libtool/config.sub
+ install -c -m 0644 ltmain.sh $dir/libtool/
+ install -c -m 0644 libtool.m4 $dir/aclocal/
+ install -c -m 0644 ltdl.m4 $dir/aclocal/
+
+ for src in README COPYING.LIB Makefile.am configure.ac \
+ config-h.in ltdl.c ltdl.h; do
+ install -m 0644 libltdl/${src} ${ltdldir}
+ done
+ done
+}
+
+do_install () {
+ :
+}
diff --git a/packages/libtool/libtool_1.5.22.bb b/packages/libtool/libtool_1.5.22.bb
new file mode 100644
index 0000000000..d470d30cda
--- /dev/null
+++ b/packages/libtool/libtool_1.5.22.bb
@@ -0,0 +1,37 @@
+DEFAULT_PREFERENCE = "-1"
+
+DESCRIPTION = "Generic library support script \
+This is GNU libtool, a generic library support script. Libtool hides \
+the complexity of generating special library types (such as shared \
+libraries) behind a consistent interface."
+HOMEPAGE = "http://www.gnu.org/software/libtool/libtool.html"
+LICENSE = "GPL"
+SECTION = "devel"
+PR = "r1"
+
+SRC_URI = "${GNU_MIRROR}/libtool/libtool-${PV}.tar.gz \
+ file://autotools.patch;patch=1 \
+ file://uclibc.patch;patch=1"
+# file://3figures.patch;patch=1"
+S = "${WORKDIR}/libtool-${PV}"
+
+PACKAGES = "libltdl libltdl-dev ${PN}"
+FILES_${PN} += "${datadir}/aclocal*"
+FILES_libltdl = "${libdir}/libltdl.so.*"
+FILES_libltdl-dev = "${libdir}/libltdl.* ${includedir}/ltdl.h"
+
+inherit autotools
+
+EXTRA_AUTORECONF = "--exclude=libtoolize"
+
+do_configure () {
+ find ${S} -name acinclude.m4 | for m4 in `cat`; do
+ cat ${S}/libtool.m4 ${S}/ltdl.m4 > $m4
+ done
+ autotools_do_configure
+}
+
+do_stage () {
+ oe_libinstall -a -so -C libltdl libltdl ${STAGING_LIBDIR}
+ install -m 0644 libltdl/ltdl.h ${STAGING_INCDIR}/
+}
diff --git a/packages/linux/linux-ezx-2.6.21/ezx-core.patch b/packages/linux/linux-ezx-2.6.21/ezx-core.patch
index 81be0ef159..8e89afff53 100644
--- a/packages/linux/linux-ezx-2.6.21/ezx-core.patch
+++ b/packages/linux/linux-ezx-2.6.21/ezx-core.patch
@@ -1,7 +1,7 @@
Index: linux-2.6.21/arch/arm/boot/compressed/head-xscale.S
===================================================================
---- linux-2.6.21.orig/arch/arm/boot/compressed/head-xscale.S 2007-04-26 00:08:32.000000000 -0300
-+++ linux-2.6.21/arch/arm/boot/compressed/head-xscale.S 2007-04-26 20:27:42.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/boot/compressed/head-xscale.S 2007-05-03 17:41:57.000000000 -0300
++++ linux-2.6.21/arch/arm/boot/compressed/head-xscale.S 2007-05-03 17:42:02.000000000 -0300
@@ -53,3 +53,6 @@
str r1, [r0, #0x18]
#endif
@@ -11,8 +11,8 @@ Index: linux-2.6.21/arch/arm/boot/compressed/head-xscale.S
+#endif
Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-04-26 00:08:32.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-04-26 20:27:42.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-05-03 17:41:57.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-05-04 04:17:33.000000000 -0300
@@ -37,6 +37,10 @@
bool "Keith und Koep Trizeps4 DIMM-Module"
select PXA27x
@@ -60,8 +60,8 @@ Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
endif
Index: linux-2.6.21/arch/arm/mach-pxa/Makefile
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-04-26 00:08:32.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-04-26 20:27:42.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-05-03 17:41:57.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-05-04 04:17:42.000000000 -0300
@@ -18,6 +18,7 @@
obj-$(CONFIG_MACH_AKITA) += akita-ioexp.o
obj-$(CONFIG_MACH_POODLE) += poodle.o corgi_ssp.o
@@ -73,8 +73,8 @@ Index: linux-2.6.21/arch/arm/mach-pxa/Makefile
Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-04-26 20:27:42.000000000 -0300
-@@ -0,0 +1,379 @@
++++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-05-04 04:17:42.000000000 -0300
+@@ -0,0 +1,378 @@
+/*
+ * linux/arch/arm/mach-ezx/a780.c
+ *
@@ -97,7 +97,6 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
+#include <linux/bitops.h>
+#include <linux/apm_bios.h>
+#include <linux/platform_device.h>
-+#include <linux/input.h>
+
+#include <asm/types.h>
+#include <asm/setup.h>
@@ -379,7 +378,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
+
+static void __init a780_init(void)
+{
-+//FIXME CKEN = CKEN9_OSTIMER | CKEN22_MEMC | CKEN5_STUART;
++ CKEN = CKEN9_OSTIMER | CKEN22_MEMC;
+
+ ezx_ssp_set_machinfo(&ezx_ssp_machinfo);
+
@@ -457,7 +456,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
Index: linux-2.6.21/include/asm-arm/arch-pxa/ezx.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/include/asm-arm/arch-pxa/ezx.h 2007-04-26 20:27:42.000000000 -0300
++++ linux-2.6.21/include/asm-arm/arch-pxa/ezx.h 2007-05-03 17:42:02.000000000 -0300
@@ -0,0 +1,225 @@
+/*
+ * linux/include/asm-arm/arch-pxa/ezx.h
@@ -686,8 +685,8 @@ Index: linux-2.6.21/include/asm-arm/arch-pxa/ezx.h
+
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-04-26 00:08:32.000000000 -0300
-+++ linux-2.6.21/include/asm-arm/arch-pxa/pxa-regs.h 2007-04-26 20:28:45.000000000 -0300
+--- linux-2.6.21.orig/include/asm-arm/arch-pxa/pxa-regs.h 2007-05-03 17:41:57.000000000 -0300
++++ linux-2.6.21/include/asm-arm/arch-pxa/pxa-regs.h 2007-05-04 04:17:32.000000000 -0300
@@ -849,6 +849,8 @@
#define UP2OCR_HXOE (1 << 17) /* Host Port 2 Transceiver Output Enable */
#define UP2OCR_SEOS (1 << 24) /* Single-Ended Output Select */
@@ -803,8 +802,8 @@ Index: linux-2.6.21/include/asm-arm/arch-pxa/pxa-regs.h
#define PGSR2 __REG(0x40F00028) /* Power Manager GPIO Sleep State Register for GP[84-64] */
Index: linux-2.6.21/arch/arm/boot/compressed/head.S
===================================================================
---- linux-2.6.21.orig/arch/arm/boot/compressed/head.S 2007-04-26 00:08:32.000000000 -0300
-+++ linux-2.6.21/arch/arm/boot/compressed/head.S 2007-04-26 20:27:42.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/boot/compressed/head.S 2007-05-03 17:41:57.000000000 -0300
++++ linux-2.6.21/arch/arm/boot/compressed/head.S 2007-05-03 17:42:02.000000000 -0300
@@ -117,6 +117,9 @@
mov r0, r0
.endr
@@ -817,8 +816,8 @@ Index: linux-2.6.21/arch/arm/boot/compressed/head.S
.word start @ absolute load/run zImage address
Index: linux-2.6.21/include/asm-arm/arch-pxa/uncompress.h
===================================================================
---- linux-2.6.21.orig/include/asm-arm/arch-pxa/uncompress.h 2007-04-26 00:08:32.000000000 -0300
-+++ linux-2.6.21/include/asm-arm/arch-pxa/uncompress.h 2007-04-26 20:27:42.000000000 -0300
+--- linux-2.6.21.orig/include/asm-arm/arch-pxa/uncompress.h 2007-05-03 17:41:57.000000000 -0300
++++ linux-2.6.21/include/asm-arm/arch-pxa/uncompress.h 2007-05-03 17:42:02.000000000 -0300
@@ -14,14 +14,14 @@
#define STUART ((volatile unsigned long *)0x40700000)
#define HWUART ((volatile unsigned long *)0x41600000)
@@ -840,7 +839,7 @@ Index: linux-2.6.21/include/asm-arm/arch-pxa/uncompress.h
Index: linux-2.6.21/arch/arm/mach-pxa/ezx_ssp.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx_ssp.c 2007-04-26 20:27:42.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx_ssp.c 2007-05-03 17:42:02.000000000 -0300
@@ -0,0 +1,126 @@
+/*
+ * SSP control code for Motorola EZX phones
@@ -971,7 +970,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx_ssp.c
Index: linux-2.6.21/arch/arm/mach-pxa/ezx.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx.h 2007-04-26 20:27:42.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx.h 2007-05-03 17:42:02.000000000 -0300
@@ -0,0 +1,9 @@
+#include <asm/arch/ezx.h>
+
@@ -985,8 +984,8 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx.h
Index: linux-2.6.21/arch/arm/mach-pxa/ezx_lcd.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx_lcd.c 2007-04-26 20:27:42.000000000 -0300
-@@ -0,0 +1,112 @@
++++ linux-2.6.21/arch/arm/mach-pxa/ezx_lcd.c 2007-05-03 17:42:02.000000000 -0300
+@@ -0,0 +1,113 @@
+/*
+ * linux/arch/arm/mach-ezx/a780.c
+ *
@@ -1028,8 +1027,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx_lcd.c
+ }
+}
+
-+#ifdef CONFIG_PXA_E2
-+static void sumatra_backlight_power(int on)
++static void ezx_backlight_power(int on)
+{
+ if (on) {
+ pxa_gpio_mode(GPIO16_PWM0_MD);
@@ -1045,6 +1043,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx_lcd.c
+ }
+}
+
++#ifdef CONFIG_PXA_E2
+static struct pxafb_mode_info mode_ezx = {
+ .pixclock = 192308,
+ .xres = 240,
@@ -1059,12 +1058,12 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx_lcd.c
+ .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
+};
+
-+static struct pxafb_mach_info ezx_fb_info __initdata = {
++static struct pxafb_mach_info ezx_fb_info = {
+ .modes = &mode_ezx,
+ .num_modes = 1,
+ .lccr0 = 0x022008B8,
+ .lccr3 = 0xC130FF13,
-+ .pxafb_backlight_power = sumatra_backlight_power,
++ .pxafb_backlight_power = ezx_backlight_power,
+ .pxafb_lcd_power = &pxafb_lcd_power,
+};
+
@@ -1083,12 +1082,13 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx_lcd.c
+ .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
+};
+
-+static struct pxafb_mach_info ezx_fb_info __initdata = {
++static struct pxafb_mach_info ezx_fb_info = {
+ .modes = &mode_ezx,
+ .num_modes = 1,
+ .lccr0 = 0x002008F8,
+ .lccr3 = 0x0430FF09,
-+ .pxafb_lcd_power= &pxafb_lcd_power,
++ .pxafb_backlight_power = ezx_backlight_power,
++ .pxafb_lcd_power = &pxafb_lcd_power,
+};
+#endif
+
@@ -1101,13 +1101,13 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx_lcd.c
+arch_initcall(__ezx_lcd_init);
Index: linux-2.6.21/arch/arm/mm/init.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mm/init.c 2007-04-26 00:08:32.000000000 -0300
-+++ linux-2.6.21/arch/arm/mm/init.c 2007-04-26 20:27:42.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mm/init.c 2007-05-03 17:41:57.000000000 -0300
++++ linux-2.6.21/arch/arm/mm/init.c 2007-05-04 03:48:30.000000000 -0300
@@ -241,6 +241,10 @@
*/
reserve_bootmem_node(pgdat, boot_pfn << PAGE_SHIFT,
boot_pages << PAGE_SHIFT);
-+#ifdef CONFIG_ARCH_EZX
++#ifdef CONFIG_PXA_EZX
+ /* reserve the first page memory for exiting sleep and user off */
+ reserve_bootmem_node(pgdat, PHYS_OFFSET, PAGE_SIZE);
+#endif
diff --git a/packages/linux/linux-ezx-2.6.21/ezx-emu.patch b/packages/linux/linux-ezx-2.6.21/ezx-emu.patch
index cb3bfc53e7..91d99ee17b 100644
--- a/packages/linux/linux-ezx-2.6.21/ezx-emu.patch
+++ b/packages/linux/linux-ezx-2.6.21/ezx-emu.patch
@@ -1,8 +1,8 @@
-Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx-emu.c
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx-emu.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.20.7/arch/arm/mach-pxa/ezx-emu.c 2007-04-23 01:14:40.000000000 -0300
-@@ -0,0 +1,200 @@
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-emu.c 2007-05-02 23:30:15.000000000 -0300
+@@ -0,0 +1,215 @@
+/*
+ * EMU Driver for Motorola EZX phones
+ *
@@ -135,7 +135,10 @@ Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx-emu.c
+
+ pxa_set_udc_info(&ezx_udc_info);
+
-+ emu_switch_to_default();
++ if(ezx_pcap_read_bit(SSP_PCAP_ADJ_BIT_PSTAT_USBDET_4V))
++ emu_switch_to_default();
++ else
++ emu_switch_to_nothing();
+
+ return 0;
+}
@@ -148,6 +151,18 @@ Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx-emu.c
+ return 0;
+}
+
++static int ezx_emu_suspend(struct platform_device *dev, pm_message_t state)
++{
++ emu_switch_to_nothing();
++ return 0;
++}
++
++static int ezx_emu_resume(struct platform_device *dev)
++{
++ emu_switch_to_default();
++ return 0;
++}
++
+/* USB Device Controller */
+static int udc_connected_status;
+static void ezx_udc_command(int cmd)
@@ -179,8 +194,8 @@ Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx-emu.c
+static struct platform_driver ezxemu_driver = {
+ .probe = ezx_emu_probe,
+ .remove = ezx_emu_remove,
-+ //.suspend = ezx_emu_suspend,
-+ //.resume = ezx_emu_resume,
++ .suspend = ezx_emu_suspend,
++ .resume = ezx_emu_resume,
+ .driver = {
+ .name = "ezx-emu",
+ .owner = THIS_MODULE,
@@ -203,10 +218,10 @@ Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx-emu.c
+MODULE_DESCRIPTION("Motorola Enchanced Mini Usb driver");
+MODULE_AUTHOR("Daniel Ribeiro <drwyrm@gmail.com>");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.20.7/arch/arm/mach-pxa/Kconfig
+Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
===================================================================
---- linux-2.6.20.7.orig/arch/arm/mach-pxa/Kconfig 2007-04-22 15:02:54.000000000 -0300
-+++ linux-2.6.20.7/arch/arm/mach-pxa/Kconfig 2007-04-22 15:23:10.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-05-02 21:31:22.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-05-02 23:26:53.000000000 -0300
@@ -94,6 +94,27 @@
endchoice
@@ -235,10 +250,10 @@ Index: linux-2.6.20.7/arch/arm/mach-pxa/Kconfig
endif
endmenu
-Index: linux-2.6.20.7/arch/arm/mach-pxa/Makefile
+Index: linux-2.6.21/arch/arm/mach-pxa/Makefile
===================================================================
---- linux-2.6.20.7.orig/arch/arm/mach-pxa/Makefile 2007-04-22 15:23:01.000000000 -0300
-+++ linux-2.6.20.7/arch/arm/mach-pxa/Makefile 2007-04-22 15:23:10.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-05-02 23:26:52.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-05-03 17:41:40.000000000 -0300
@@ -19,6 +19,7 @@
obj-$(CONFIG_MACH_POODLE) += poodle.o corgi_ssp.o
obj-$(CONFIG_MACH_TOSA) += tosa.o
@@ -247,11 +262,11 @@ Index: linux-2.6.20.7/arch/arm/mach-pxa/Makefile
# Support for blinky lights
led-y := leds.o
-Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx.c
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
===================================================================
---- linux-2.6.20.7.orig/arch/arm/mach-pxa/ezx.c 2007-04-22 15:22:55.000000000 -0300
-+++ linux-2.6.20.7/arch/arm/mach-pxa/ezx.c 2007-04-23 01:02:05.000000000 -0300
-@@ -36,6 +36,7 @@
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx.c 2007-05-02 23:26:52.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-05-03 17:25:08.000000000 -0300
+@@ -35,6 +35,7 @@
#include <asm/arch/ohci.h>
#include <asm/arch/pxa-regs.h>
@@ -259,7 +274,7 @@ Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx.c
#include "ezx.h"
#include "generic.h"
#include <linux/tty.h>
-@@ -92,6 +93,30 @@
+@@ -91,6 +92,30 @@
.resource = ezxpcap_resources,
};
@@ -290,7 +305,7 @@ Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx.c
/* OHCI Controller */
static int ezx_ohci_init(struct device *dev)
-@@ -317,6 +342,7 @@
+@@ -316,6 +341,7 @@
&ezxssp_device,
&ezxpcap_device,
&ezxbp_device,
diff --git a/packages/linux/linux-ezx-2.6.21/ezx-kbd.patch b/packages/linux/linux-ezx-2.6.21/ezx-kbd.patch
new file mode 100644
index 0000000000..7c020a2d96
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/ezx-kbd.patch
@@ -0,0 +1,139 @@
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx-kbd.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-kbd.c 2007-04-30 20:33:19.000000000 -0300
+@@ -0,0 +1,109 @@
++#include <linux/input.h>
++#include <asm/arch/kbd.h>
++#include <asm/arch/pxa-regs.h>
++
++extern void __init pxa_set_kbd_info(struct pxakbd_platform_data *);
++
++#if defined(CONFIG_PXA_EZX_E680)
++static unsigned char ezx_keycode[] = {
++ /* row 0 */
++ KEY_UP, KEY_RIGHT, KEY_RESERVED, KEY_PHONE,
++ /* row 1 */
++ KEY_DOWN, KEY_LEFT, KEY_VOLUMEUP, KEY_VOLUMEDOWN,
++ /* row 2 */
++ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_KPENTER,
++};
++
++static unsigned char ezx_direct_keycode[] = {
++ KEY_CAMERA,
++ KEYPAD_RESERVED,
++ KEYPAD_RESERVED,
++ KEYPAD_HOME,
++ KEY_POWER,
++ KEYPAD_MENU,
++};
++#elif defined(CONFIG_PXA_EZX_A780)
++static unsigned char ezx_keycode[] = {
++ /* row 0 */
++ KEY_KPENTER, KEY_MENU, KEY_CANCEL, KEY_PAGEUP, KEY_UP,
++ /* row 1 */
++ KEY_KP1, KEY_KP2, KEY_KP3, KEY_ENTER, KEY_KPENTER, /*center joypad */
++ /* row 2 */
++ KEY_KP4, KEY_KP5, KEY_KP6, KEY_PAGEDOWN, KEY_PHONE,
++ /* row 3 */
++ KEY_KP7, KEY_KP8, KEY_KP9, KEY_PHONE, KEY_LEFT,
++ /* row 4 */
++ KEY_KPASTERISK, KEY_KP0, KEY_KPDOT, KEY_PAGEDOWN, KEY_DOWN,
++};
++static unsigned char ezx_direct_keycode[] = {
++ KEY_CAMERA,
++};
++#else
++#error "no EZX subarchitecture defined"
++#endif
++
++static int ezx_kbd_init(void)
++{
++#if defined(CONFIG_PXA_EZX_E680)
++ pxa_gpio_mode(93 | GPIO_ALT_FN_1_IN); /* KP_DKIN<0>, VR Key */
++ pxa_gpio_mode(96 | GPIO_ALT_FN_1_IN); /* KP_DKIN<3>, GAME_A */
++ pxa_gpio_mode(97 | GPIO_ALT_FN_1_IN); /* KP_DKIN<4>, power key */
++ pxa_gpio_mode(98 | GPIO_ALT_FN_1_IN); /* KP_DKIN<5>, GAME_B */
++ pxa_gpio_mode(100 | GPIO_ALT_FN_1_IN); /* KP_MKIN<0> */
++ pxa_gpio_mode(101 | GPIO_ALT_FN_1_IN); /* KP_MKIN<1> */
++ pxa_gpio_mode(102 | GPIO_ALT_FN_1_IN); /* KP_MKIN<2> */
++ pxa_gpio_mode(103 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<0> */
++ pxa_gpio_mode(104 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<1> */
++ pxa_gpio_mode(105 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<2> */
++ pxa_gpio_mode(106 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<3> */
++ pxa_gpio_mode(GPIO_TC_MM_EN);
++ GPDR(GPIO_TC_MM_EN) |= GPIO_bit(GPIO_TC_MM_EN);
++ GPSR(GPIO_TC_MM_EN) = GPIO_bit(GPIO_TC_MM_EN);
++ PGSR3 |= GPIO_bit(GPIO_TC_MM_EN);
++#elif defined(CONFIG_PXA_EZX_A780)
++ pxa_gpio_mode(93 | GPIO_ALT_FN_1_IN); /* KP_DKIN<0>, voice_rec */
++ pxa_gpio_mode(97 | GPIO_ALT_FN_3_IN); /* KP_MKIN<3> */
++ pxa_gpio_mode(98 | GPIO_ALT_FN_3_IN); /* KP_MKIN<4> */
++ pxa_gpio_mode(100 | GPIO_ALT_FN_1_IN); /* KP_MKIN<0> */
++ pxa_gpio_mode(101 | GPIO_ALT_FN_1_IN); /* KP_MKIN<1> */
++ pxa_gpio_mode(102 | GPIO_ALT_FN_1_IN); /* KP_MKIN<2> */
++ pxa_gpio_mode(103 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<0> */
++ pxa_gpio_mode(104 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<1> */
++ pxa_gpio_mode(105 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<2> */
++ pxa_gpio_mode(106 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<3> */
++ pxa_gpio_mode(107 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<4> */
++#endif
++ return 0;
++}
++
++static struct pxakbd_platform_data ezx_kbd_platform_data = {
++ .init = &ezx_kbd_init,
++ .scan_interval = HZ/40,
++ .matrix = {
++ .keycode = ezx_keycode,
++#if defined(CONFIG_PXA_EZX_E680)
++ .cols = 4,
++ .rows = 3,
++#elif defined(CONFIG_PXA_EZX_A780)
++ .cols = 5,
++ .rows = 5,
++#endif
++ },
++ .direct = {
++ .keycode = ezx_direct_keycode,
++#if defined(CONFIG_PXA_EZX_E680)
++ .num = 6,
++#elif defined(CONFIG_PXA_EZX_A780)
++ .num = 1,
++#endif
++ },
++};
++
++
++int __init __ezx_kbd_init (void)
++{
++ pxa_set_kbd_info(&ezx_kbd_platform_data);
++ return 0;
++}
++
++arch_initcall(__ezx_kbd_init);
+Index: linux-2.6.21/arch/arm/mach-pxa/Makefile
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-04-30 20:09:21.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-04-30 20:09:34.000000000 -0300
+@@ -18,7 +18,7 @@
+ obj-$(CONFIG_MACH_AKITA) += akita-ioexp.o
+ obj-$(CONFIG_MACH_POODLE) += poodle.o corgi_ssp.o
+ obj-$(CONFIG_MACH_TOSA) += tosa.o
+-obj-$(CONFIG_PXA_EZX) += ezx.o ezx_lcd.o ezx_ssp.o ezx-pcap.o ezx-mci.o
++obj-$(CONFIG_PXA_EZX) += ezx.o ezx_lcd.o ezx_ssp.o ezx-pcap.o ezx-mci.o ezx-kbd.o
+ obj-$(CONFIG_PXA_EZX_EMU) += ezx-emu.o
+
+ # Support for blinky lights
+Index: linux-2.6.21/drivers/input/keyboard/pxakbd.c
+===================================================================
+--- linux-2.6.21.orig/drivers/input/keyboard/pxakbd.c 2007-04-30 20:47:29.000000000 -0300
++++ linux-2.6.21/drivers/input/keyboard/pxakbd.c 2007-04-30 20:49:32.000000000 -0300
+@@ -213,6 +213,7 @@
+ if (!input_dev)
+ goto out_pxa;
+
++ spin_lock_init(&pxakbd->lock);
+ pxakbd->irq = platform_get_irq(pdev, 0);
+ r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ if (!r || pxakbd->irq == NO_IRQ) {
diff --git a/packages/linux/linux-ezx-2.6.21/ezx-pcap.patch b/packages/linux/linux-ezx-2.6.21/ezx-pcap.patch
index 22c5d44f36..a077ad5ffb 100644
--- a/packages/linux/linux-ezx-2.6.21/ezx-pcap.patch
+++ b/packages/linux/linux-ezx-2.6.21/ezx-pcap.patch
@@ -1,8 +1,8 @@
-Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx-pcap.c
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.20.7/arch/arm/mach-pxa/ezx-pcap.c 2007-04-21 08:26:37.000000000 -0300
-@@ -0,0 +1,411 @@
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c 2007-05-04 03:07:37.000000000 -0300
+@@ -0,0 +1,425 @@
+/* Driver for Motorola PCAP2 as present in EZX phones
+ *
+ * This is both a SPI device driver for PCAP itself, as well as
@@ -51,7 +51,7 @@ Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx-pcap.c
+ ezx_ssp_pcap_putget(value);
+ local_irq_enable();
+
-+ DEBUGP("pcap write r%x: 0x%08x\n", reg_num, value);
++// DEBUGP("pcap write r%x: 0x%08x\n", reg_num, value);
+ return 0;
+}
+EXPORT_SYMBOL_GPL(ezx_pcap_write);
@@ -65,7 +65,7 @@ Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx-pcap.c
+ *value = ezx_ssp_pcap_putget(frame);
+ local_irq_enable();
+
-+ DEBUGP("pcap read r%x: 0x%08x\n", reg_num, *value);
++// DEBUGP("pcap read r%x: 0x%08x\n", reg_num, *value);
+ return 0;
+}
+EXPORT_SYMBOL_GPL(ezx_pcap_read);
@@ -121,12 +121,14 @@ Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx-pcap.c
+ /* FIXME: this should be board-level, not chip-level */
+ /* implement a per board pcap init reg array? */
+
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_ISR_USB4VI, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_USB4VM, 0);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_ISR_USB1VI, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_USB1VM, 0);
++// ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_ISR_USB4VI, 1);
++// ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_USB4VM, 0);
++// ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_ISR_USB1VI, 1);
++// ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_USB1VM, 0);
+ // disable all interrupts
-+ //ezx_pcap_write(SSP_PCAP_ADJ_MSR_REGISTER, 0x03ffffff);
++ ezx_pcap_write(SSP_PCAP_ADJ_MSR_REGISTER, PCAP_MASK_ALL_INTERRUPT);
++ // clear all interrupts
++ ezx_pcap_write(SSP_PCAP_ADJ_ISR_REGISTER, PCAP_MASK_ALL_INTERRUPT);
+
+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_A1CTRL, 1);
+ ezx_pcap_vibrator_level(PCAP_VIBRATOR_VOLTAGE_LEVEL3);
@@ -288,12 +290,12 @@ Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx-pcap.c
+{
+ int i;
+ const unsigned int cpu = smp_processor_id();
-+ u_int32_t reg;
-+
-+ DEBUGP("pcap_irq_demux_handler(%u,,) entered\n", irq);
++ u_int32_t reg, mask;
+
+ spin_lock(&desc->lock);
+
++ DEBUGP("pcap_irq_demux_handler(%u,,) entered\n", irq);
++
+ desc->status &= ~(IRQ_REPLAY | IRQ_WAITING);
+
+ if (unlikely(desc->status & IRQ_INPROGRESS)) {
@@ -305,6 +307,7 @@ Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx-pcap.c
+ }
+
+ kstat_cpu(cpu).irqs[irq]++;
++ desc->chip->ack(irq);
+ desc->status |= IRQ_INPROGRESS;
+
+ do {
@@ -317,30 +320,27 @@ Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx-pcap.c
+ }
+
+ desc->status &= ~IRQ_PENDING;
-+ spin_unlock(&desc->lock);
+
-+ ezx_pcap_read(SSP_PCAP_ADJ_ISR_REGISTER, &reg);
-+ DEBUGP("pcap_irq_demux_handler: ISR=0x%08x\n", reg);
++ ezx_pcap_read(SSP_PCAP_ADJ_ISR_REGISTER, &reg);
++ ezx_pcap_read(SSP_PCAP_ADJ_MSR_REGISTER, &mask);
++ DEBUGP("pcap_irq_demux_handler: ISR=0x%08x MSR=0x%08x\n", reg, mask);
+
+ for (i = ARRAY_SIZE(pcap2irq)-1; i >= 0; i--) {
+ unsigned int pirq = pcap2irq[i];
+ if (pirq == 0)
+ continue;
+
-+ if (reg & (1 << i)) {
++ if ((reg & (1 << i)) && !(mask & (1 << i))) {
+ struct irq_desc *subdesc;
+ DEBUGP("found irq %u\n", pirq);
+ subdesc = irq_desc + pirq;
-+
-+ // acknowledge pcap irq
-+ // do just one pcap irq each time
+ subdesc->chip->ack(pirq);
-+ i = 0;
+
++ spin_unlock(&desc->lock);
+ handle_IRQ_event(pirq, subdesc->action);
++ spin_lock(&desc->lock);
+ }
+ }
-+ spin_lock(&desc->lock);
+
+ } while ((desc->status & (IRQ_PENDING | IRQ_DISABLED)) == IRQ_PENDING);
+
@@ -387,9 +387,23 @@ Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx-pcap.c
+ return 0;
+}
+
++static int ezx_pcap_suspend(struct platform_device *dev, pm_message_t state)
++{
++ DEBUGP("pcap suspend!\n");
++ return 0;
++}
++
++static int ezx_pcap_resume(struct platform_device *dev)
++{
++ DEBUGP("pcap resume!\n");
++ return 0;
++}
++
+static struct platform_driver ezxpcap_driver = {
+ .probe = ezx_pcap_probe,
+ .remove = ezx_pcap_remove,
++ .suspend = ezx_pcap_suspend,
++ .resume = ezx_pcap_resume,
+ .driver = {
+ .name = "ezx-pcap",
+ .owner = THIS_MODULE,
@@ -414,10 +428,10 @@ Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx-pcap.c
+MODULE_AUTHOR("Harald Welte");
+MODULE_DESCRIPTION("SPI Driver for Motorola PCAP2");
+
-Index: linux-2.6.20.7/include/asm-arm/arch-pxa/ezx-pcap.h
+Index: linux-2.6.21/include/asm-arm/arch-pxa/ezx-pcap.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.20.7/include/asm-arm/arch-pxa/ezx-pcap.h 2007-04-21 08:26:37.000000000 -0300
++++ linux-2.6.21/include/asm-arm/arch-pxa/ezx-pcap.h 2007-05-03 17:43:48.000000000 -0300
@@ -0,0 +1,665 @@
+/* (c) Copyright Motorola Beijing 2002 all rights reserved.
+
@@ -1084,10 +1098,10 @@ Index: linux-2.6.20.7/include/asm-arm/arch-pxa/ezx-pcap.h
+extern void ssp_pcap_screenlock_unlock(u32 data);
+
+#endif
-Index: linux-2.6.20.7/include/asm-arm/arch-pxa/irqs.h
+Index: linux-2.6.21/include/asm-arm/arch-pxa/irqs.h
===================================================================
---- linux-2.6.20.7.orig/include/asm-arm/arch-pxa/irqs.h 2007-04-21 08:26:32.000000000 -0300
-+++ linux-2.6.20.7/include/asm-arm/arch-pxa/irqs.h 2007-04-21 08:26:37.000000000 -0300
+--- linux-2.6.21.orig/include/asm-arm/arch-pxa/irqs.h 2007-05-03 17:41:55.000000000 -0300
++++ linux-2.6.21/include/asm-arm/arch-pxa/irqs.h 2007-05-03 17:43:48.000000000 -0300
@@ -176,7 +176,8 @@
#define NR_IRQS (IRQ_LOCOMO_SPI_TEND + 1)
#elif defined(CONFIG_ARCH_LUBBOCK) || \
@@ -1115,10 +1129,10 @@ Index: linux-2.6.20.7/include/asm-arm/arch-pxa/irqs.h
+#define EZX_IRQ_ONOFF EZX_IRQ(7)
+#define EZX_IRQ_ONOFF2 EZX_IRQ(8)
+
-Index: linux-2.6.20.7/arch/arm/mach-pxa/Makefile
+Index: linux-2.6.21/arch/arm/mach-pxa/Makefile
===================================================================
---- linux-2.6.20.7.orig/arch/arm/mach-pxa/Makefile 2007-04-21 08:26:37.000000000 -0300
-+++ linux-2.6.20.7/arch/arm/mach-pxa/Makefile 2007-04-21 08:45:09.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-05-03 17:42:02.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-05-04 04:17:33.000000000 -0300
@@ -18,7 +18,7 @@
obj-$(CONFIG_MACH_AKITA) += akita-ioexp.o
obj-$(CONFIG_MACH_POODLE) += poodle.o corgi_ssp.o
@@ -1128,11 +1142,11 @@ Index: linux-2.6.20.7/arch/arm/mach-pxa/Makefile
# Support for blinky lights
led-y := leds.o
-Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx.c
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
===================================================================
---- linux-2.6.20.7.orig/arch/arm/mach-pxa/ezx.c 2007-04-21 08:26:37.000000000 -0300
-+++ linux-2.6.20.7/arch/arm/mach-pxa/ezx.c 2007-04-21 08:51:15.000000000 -0300
-@@ -73,6 +73,24 @@
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx.c 2007-05-03 17:42:02.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-05-04 04:17:33.000000000 -0300
+@@ -72,6 +72,24 @@
.clk_pcap = 1,
};
@@ -1157,7 +1171,7 @@ Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx.c
/* OHCI Controller */
-@@ -236,7 +254,7 @@
+@@ -235,7 +253,7 @@
};
@@ -1166,7 +1180,7 @@ Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx.c
[0] = {
.start = GPIO_BP_RDY,
.end = GPIO_BP_RDY,
-@@ -256,15 +274,15 @@
+@@ -255,15 +273,15 @@
#endif
};
@@ -1185,7 +1199,7 @@ Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx.c
};
static void __init ezx_init_gpio_irq(void)
-@@ -297,7 +315,8 @@
+@@ -296,7 +314,8 @@
static struct platform_device *devices[] __initdata = {
&ezxssp_device,
diff --git a/packages/linux/linux-ezx-2.6.21/ezx-pm.patch b/packages/linux/linux-ezx-2.6.21/ezx-pm.patch
new file mode 100644
index 0000000000..4ad66936c9
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/ezx-pm.patch
@@ -0,0 +1,58 @@
+Index: linux-2.6.21/arch/arm/mach-pxa/pxa27x.c
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/pxa27x.c 2007-05-03 17:41:39.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/pxa27x.c 2007-05-03 17:43:42.000000000 -0300
+@@ -22,6 +22,10 @@
+ #include <asm/arch/pxa-regs.h>
+ #include <asm/arch/ohci.h>
+
++#ifdef CONFIG_PXA_EZX
++#include <asm/arch/ezx.h>
++#endif
++
+ #include "generic.h"
+
+ /* Crystal clock: 13MHz */
+@@ -156,7 +160,13 @@
+ break;
+ case PM_SUSPEND_MEM:
+ /* set resume return address */
++#ifdef CONFIG_PXA_EZX
++ /* set EZX flags for blob - WM */
++ *(unsigned long *)(phys_to_virt(RESUME_ADDR)) = virt_to_phys(pxa_cpu_resume);
++ *(unsigned long *)(phys_to_virt(FLAG_ADDR)) = SLEEP_FLAG;
++#else
+ PSPR = virt_to_phys(pxa_cpu_resume);
++#endif
+ pxa_cpu_suspend(PWRMODE_SLEEP);
+ break;
+ }
+Index: linux-2.6.21/arch/arm/mach-pxa/pm.c
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/pm.c 2007-05-03 17:41:39.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/pm.c 2007-05-04 03:51:15.000000000 -0300
+@@ -24,6 +24,10 @@
+ #include <asm/arch/lubbock.h>
+ #include <asm/mach/time.h>
+
++#ifdef CONFIG_PXA_EZX
++#include <asm/arch/ezx.h>
++#endif
++
+
+ /*
+ * Debug macros
+@@ -152,8 +156,12 @@
+ }
+
+ /* ensure not to come back here if it wasn't intended */
++#ifdef CONFIG_PXA_EZX
++ *(unsigned long *)(phys_to_virt(RESUME_ADDR)) = 0;
++ *(unsigned long *)(phys_to_virt(FLAG_ADDR)) = OFF_FLAG;
++#else
+ PSPR = 0;
+-
++#endif
+ /* restore registers */
+ RESTORE_GPLEVEL(0); RESTORE_GPLEVEL(1); RESTORE_GPLEVEL(2);
+ RESTORE(GPDR0); RESTORE(GPDR1); RESTORE(GPDR2);
diff --git a/packages/linux/linux-ezx-2.6.21/ezx-ts.patch b/packages/linux/linux-ezx-2.6.21/ezx-ts.patch
new file mode 100644
index 0000000000..1dd88efd6e
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/ezx-ts.patch
@@ -0,0 +1,399 @@
+Index: linux-2.6.21/drivers/input/touchscreen/Kconfig
+===================================================================
+--- linux-2.6.21.orig/drivers/input/touchscreen/Kconfig 2007-04-26 05:08:32.000000000 +0200
++++ linux-2.6.21/drivers/input/touchscreen/Kconfig 2007-04-26 23:27:05.000000000 +0200
+@@ -164,4 +164,16 @@
+ To compile this driver as a module, choose M here: the
+ module will be called ucb1400_ts.
+
++config TOUCHSCREEN_PCAP
++ tristate "Motorola PCAP touchscreen"
++ depends on PXA_EZX_PCAP
++ help
++ Say Y here if you have a Motorola EZX (E680, A780) telephone
++ and want to support the built-in touchscreen.
++
++ If unsure, say N.
++
++ To compile this driver as a module, choose M here: the
++ module will be called hp680_ts_input.
++
+ endif
+Index: linux-2.6.21/drivers/input/touchscreen/Makefile
+===================================================================
+--- linux-2.6.21.orig/drivers/input/touchscreen/Makefile 2007-04-26 05:08:32.000000000 +0200
++++ linux-2.6.21/drivers/input/touchscreen/Makefile 2007-04-26 23:27:52.000000000 +0200
+@@ -16,3 +16,4 @@
+ obj-$(CONFIG_TOUCHSCREEN_TOUCHRIGHT) += touchright.o
+ obj-$(CONFIG_TOUCHSCREEN_TOUCHWIN) += touchwin.o
+ obj-$(CONFIG_TOUCHSCREEN_UCB1400) += ucb1400_ts.o
++obj-$(CONFIG_TOUCHSCREEN_PCAP) += pcap_ts.o
+Index: linux-2.6.21/drivers/input/touchscreen/pcap_ts.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/drivers/input/touchscreen/pcap_ts.c 2007-04-26 23:27:05.000000000 +0200
+@@ -0,0 +1,364 @@
++/*
++ * pcap_ts.c - Touchscreen driver for Motorola PCAP2 based touchscreen as found
++ * in the EZX phone platform.
++ *
++ * Copyright (C) 2006 Harald Welte <laforge@openezx.org>
++ *
++ * Based on information found in the original Motorola 2.4.x ezx-ts.c driver.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ * TODO:
++ * split this in a hardirq handler and a tasklet/bh
++ * suspend/resume support
++ */
++
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/fs.h>
++#include <linux/string.h>
++#include <linux/pm.h>
++#include <linux/timer.h>
++#include <linux/config.h>
++#include <linux/interrupt.h>
++#include <linux/platform_device.h>
++#include <linux/input.h>
++
++#include <asm/arch/hardware.h>
++#include <asm/arch/pxa-regs.h>
++
++#include "../../misc/ezx/ssp_pcap.h"
++
++#if 1
++#define DEBUGP(x, args ...) printk(KERN_DEBUG "%s: " x, __FUNCTION__, ## args)
++#else
++#define DEBUGP(x, args ...)
++#endif
++
++#define PRESSURE 1
++#define COORDINATE 2
++
++struct pcap_ts {
++ int irq_xy;
++ int irq_touch;
++ struct input_dev *input;
++ struct timer_list timer;
++
++ u_int16_t x, y;
++ u_int16_t pressure, pressure_last;
++
++ u_int8_t read_state;
++};
++
++#define X_AXIS_MIN 0
++#define X_AXIS_MAX 1023
++
++#define Y_AXIS_MAX X_AXIS_MAX
++#define Y_AXIS_MIN X_AXIS_MIN
++
++#define PRESSURE_MAX X_AXIS_MAX
++#define PRESSURE_MIN X_AXIS_MIN
++
++static int pcap_ts_mode(u_int32_t mode)
++{
++ int ret;
++
++ u_int32_t tmp;
++
++ ret = ezx_pcap_read(SSP_PCAP_ADJ_ADC1_REGISTER, &tmp);
++ if (ret < 0)
++ return ret;
++
++ tmp &= ~SSP_PCAP_TOUCH_PANEL_POSITION_DETECT_MODE_MASK;
++ tmp |= mode;
++ ret = ezx_pcap_write(SSP_PCAP_ADJ_ADC1_REGISTER, tmp);
++
++ DEBUGP("set ts mode ");
++ if (mode == PCAP_TS_POSITION_XY_MEASUREMENT)
++ DEBUGP("COORD\n");
++ else if (mode == PCAP_TS_PRESSURE_MEASUREMENT)
++ DEBUGP("PRESS\n");
++ else if (mode == PCAP_TS_STANDBY_MODE)
++ DEBUGP("STANDBY\n");
++ else
++ printk("UNKNOWN\n");
++
++ return ret;
++}
++
++/* issue a XY read command to the ADC of PCAP2. Well get an ADCDONE2 interrupt
++ * once the result of the conversion is available */
++static int pcap_ts_start_xy_read(struct pcap_ts *pcap_ts)
++{
++ int ret;
++ u_int32_t tmp;
++ DEBUGP("start xy read in mode %s\n",
++ pcap_ts->read_state == COORDINATE ? "COORD" : "PRESS");
++
++ ret = ezx_pcap_read(SSP_PCAP_ADJ_ADC1_REGISTER, &tmp);
++ if (ret < 0)
++ return ret;
++
++ tmp &= SSP_PCAP_ADC_START_VALUE_SET_MASK;
++ tmp |= SSP_PCAP_ADC_START_VALUE;
++
++ ret = ezx_pcap_write(SSP_PCAP_ADJ_ADC1_REGISTER, tmp);
++ if (ret < 0)
++ return ret;
++
++ ret = ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_ADC2_ASC, 1);
++
++ return ret;
++}
++
++/* read the XY result from the ADC of PCAP2 */
++static int pcap_ts_get_xy_value(struct pcap_ts *pcap_ts)
++{
++ int ret;
++ u_int32_t tmp;
++
++ DEBUGP("get xy value in mode %s\n",
++ pcap_ts->read_state == COORDINATE ? "COORD" : "PRESS");
++
++ ret = ezx_pcap_read(SSP_PCAP_ADJ_ADC2_REGISTER, &tmp);
++ if (ret < 0)
++ return ret;
++
++ if (tmp & 0x00400000)
++ return -EIO;
++
++ if (pcap_ts->read_state == COORDINATE) {
++ pcap_ts->x = (tmp & SSP_PCAP_ADD1_VALUE_MASK);
++ pcap_ts->y = (tmp & SSP_PCAP_ADD2_VALUE_MASK)
++ >>SSP_PCAP_ADD2_VALUE_SHIFT;
++ } else {
++ pcap_ts->pressure_last = pcap_ts->pressure;
++ pcap_ts->pressure = (tmp & SSP_PCAP_ADD2_VALUE_MASK)
++ >>SSP_PCAP_ADD2_VALUE_SHIFT;
++ }
++
++ return 0;
++}
++
++/* PCAP2 interrupts us when ADC conversion result is available */
++static irqreturn_t pcap_ts_irq_xy(int irq, void *dev_id, struct pt_regs *regs)
++{
++ struct pcap_ts *pcap_ts = dev_id;
++
++ if (pcap_ts_get_xy_value(pcap_ts) < 0) {
++ printk("pcap_ts: error reading XY value\n");
++ return IRQ_HANDLED;
++ }
++
++ DEBUGP("%s X=%4d, Y=%4d Z=%4d\n",
++ pcap_ts->read_state == COORDINATE ? "COORD" : "PRESS",
++ pcap_ts->x, pcap_ts->y, pcap_ts->pressure);
++
++ if (pcap_ts->read_state == PRESSURE) {
++ input_report_abs(pcap_ts->input, ABS_PRESSURE,
++ pcap_ts->pressure);
++ if ((pcap_ts->pressure >= PRESSURE_MAX ||
++ pcap_ts->pressure <= PRESSURE_MIN ) &&
++ pcap_ts->pressure == pcap_ts->pressure_last) {
++ /* pen has been released */
++ input_report_key(pcap_ts->input, BTN_TOUCH, 0);
++ input_sync(pcap_ts->input);
++
++ pcap_ts->x = pcap_ts->y = 0;
++
++ /* ask PCAP2 to interrupt us if touch event happens
++ * again */
++ pcap_ts->read_state = PRESSURE;
++ pcap_ts_mode(PCAP_TS_STANDBY_MODE);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 0);
++
++ /* no need for timer, we'll get interrupted with
++ * next touch down event */
++ del_timer(&pcap_ts->timer);
++ } else {
++ /* pen has been touched down */
++ input_report_key(pcap_ts->input, BTN_TOUCH, 1);
++ /* don't input_sync(), we don't know position yet */
++
++ /* switch state machine into coordinate read mode */
++ pcap_ts->read_state = COORDINATE;
++ pcap_ts_mode(PCAP_TS_POSITION_XY_MEASUREMENT);
++ pcap_ts_start_xy_read(pcap_ts);
++
++ mod_timer(&pcap_ts->timer, jiffies + HZ/20);
++ }
++ } else {
++ /* we are in coordinate mode */
++ if (pcap_ts->x <= X_AXIS_MIN || pcap_ts->x >= X_AXIS_MAX ||
++ pcap_ts->y <= Y_AXIS_MIN || pcap_ts->y >= Y_AXIS_MAX) {
++ DEBUGP("invalid x/y coordinate position: PEN_UP?\n");
++#if 0
++ input_report_key(pcap_ts->input, BTN_TOUCH, 0);
++ pcap_ts->x = pcap_ts->y = 0;
++#endif
++ } else {
++ input_report_abs(pcap_ts->input, ABS_X, pcap_ts->x);
++ input_report_abs(pcap_ts->input, ABS_Y, pcap_ts->y);
++ }
++ input_sync(pcap_ts->input);
++
++ /* switch back to pressure read mode */
++ pcap_ts->read_state = PRESSURE;
++ pcap_ts_mode(PCAP_TS_STANDBY_MODE);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 0);
++ }
++
++ return IRQ_HANDLED;
++}
++
++/* PCAP2 interrupts us if the pen touches down */
++static irqreturn_t pcap_ts_irq_touch(int irq, void *dev_id, struct pt_regs *regs)
++{
++ struct pcap_ts *pcap_ts = dev_id;
++ DEBUGP("entered\n");
++
++ /* mask Touchscreen interrupt bit, prevents further touch events
++ * from being reported to us until we're finished with reading
++ * both pressure and x/y from ADC */
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 1);
++ pcap_ts_mode(PCAP_TS_PRESSURE_MEASUREMENT);
++ pcap_ts->read_state = PRESSURE;
++ pcap_ts_start_xy_read(pcap_ts);
++
++ return IRQ_HANDLED;
++}
++
++static void pcap_ts_timer_fn(unsigned long data)
++{
++ struct pcap_ts *pcap_ts = (struct pcap_ts *) data;
++
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 1);
++ pcap_ts_mode(PCAP_TS_PRESSURE_MEASUREMENT);
++ pcap_ts->read_state = PRESSURE;
++ pcap_ts_start_xy_read(pcap_ts);
++}
++
++static int __init ezxts_probe(struct platform_device *pdev)
++{
++ struct pcap_ts *pcap_ts;
++ struct input_dev *input_dev;
++ int err = -ENOMEM;
++
++ pcap_ts = kzalloc(sizeof(*pcap_ts), GFP_KERNEL);
++ input_dev = input_allocate_device();
++ if (!pcap_ts || !input_dev)
++ goto fail;
++
++ pcap_ts->irq_xy = platform_get_irq(pdev, 0);
++ if (pcap_ts->irq_xy < 0) {
++ err = pcap_ts->irq_xy;
++ goto fail;
++ }
++
++ pcap_ts->irq_touch = platform_get_irq(pdev, 1);
++ if (pcap_ts->irq_touch < 0) {
++ err = pcap_ts->irq_touch;
++ goto fail;
++ }
++
++ ssp_pcap_open(SSP_PCAP_TS_OPEN);
++
++ err = request_irq(pcap_ts->irq_xy, pcap_ts_irq_xy, SA_INTERRUPT,
++ "PCAP Touchscreen XY", pcap_ts);
++ if (err < 0) {
++ printk(KERN_ERR "pcap_ts: can't grab xy irq %d: %d\n",
++ pcap_ts->irq_xy, err);
++ goto fail;
++ }
++
++ err = request_irq(pcap_ts->irq_touch, pcap_ts_irq_touch, SA_INTERRUPT,
++ "PCAP Touchscreen Touch", pcap_ts);
++ if (err < 0) {
++ printk(KERN_ERR "pcap_ts: can't grab touch irq %d: %d\n",
++ pcap_ts->irq_touch, err);
++ goto fail_xy;
++ }
++
++ pcap_ts->input = input_dev;
++ pcap_ts->read_state = PRESSURE;
++ init_timer(&pcap_ts->timer);
++ pcap_ts->timer.data = (unsigned long) pcap_ts;
++ pcap_ts->timer.function = &pcap_ts_timer_fn;
++
++ platform_set_drvdata(pdev, pcap_ts);
++
++ /* enable pressure interrupt */
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 0);
++
++ input_dev->name = "EZX PCAP2 Touchscreen";
++ input_dev->phys = "ezxts/input0";
++ input_dev->id.bustype = BUS_HOST;
++ input_dev->id.vendor = 0x0001;
++ input_dev->id.product = 0x0002;
++ input_dev->id.version = 0x0100;
++ input_dev->cdev.dev = &pdev->dev;
++ input_dev->private = pcap_ts;
++
++ input_dev->evbit[0] = BIT(EV_KEY) | BIT(EV_ABS);
++ input_dev->keybit[LONG(BTN_TOUCH)] = BIT(BTN_TOUCH);
++ input_set_abs_params(input_dev, ABS_X, X_AXIS_MIN, X_AXIS_MAX, 0, 0);
++ input_set_abs_params(input_dev, ABS_Y, Y_AXIS_MIN, Y_AXIS_MAX, 0, 0);
++ input_set_abs_params(input_dev, ABS_PRESSURE, PRESSURE_MIN,
++ PRESSURE_MAX, 0, 0);
++
++ input_register_device(pcap_ts->input);
++
++ return 0;
++
++fail_xy:
++ free_irq(pcap_ts->irq_xy, pcap_ts);
++fail:
++ input_free_device(input_dev);
++ kfree(pcap_ts);
++
++ return err;
++}
++
++static int ezxts_remove(struct platform_device *pdev)
++{
++ struct pcap_ts *pcap_ts = platform_get_drvdata(pdev);
++
++ del_timer_sync(&pcap_ts->timer);
++
++ free_irq(pcap_ts->irq_touch, pcap_ts);
++ free_irq(pcap_ts->irq_xy, pcap_ts);
++
++ input_unregister_device(pcap_ts->input);
++ kfree(pcap_ts);
++
++ return 0;
++}
++
++static struct platform_driver ezxts_driver = {
++ .probe = ezxts_probe,
++ .remove = ezxts_remove,
++ //.suspend = ezxts_suspend,
++ //.resume = ezxts_resume,
++ .driver = {
++ .name = "pcap-ts",
++ },
++};
++
++static int __devinit ezxts_init(void)
++{
++ return platform_driver_register(&ezxts_driver);
++}
++
++static void __exit ezxts_exit(void)
++{
++ platform_driver_unregister(&ezxts_driver);
++}
++
++module_init(ezxts_init);
++module_exit(ezxts_exit);
++
++MODULE_DESCRIPTION("Motorola PCAP2 touchscreen driver");
++MODULE_AUTHOR("Harald Welte <laforge@openezx.org>");
++MODULE_LICENSE("GPL");
diff --git a/packages/linux/linux-ezx-2.6.21/mux-linux-2.6.20.7-fix.patch b/packages/linux/linux-ezx-2.6.21/mux-linux-2.6.20.7-fix.patch
new file mode 100644
index 0000000000..cab7490118
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/mux-linux-2.6.20.7-fix.patch
@@ -0,0 +1,224 @@
+Index: linux-2.6.20.7/drivers/char/ts0710.h
+===================================================================
+--- linux-2.6.20.7.orig/drivers/char/ts0710.h 2007-04-24 16:04:23.000000000 +0200
++++ linux-2.6.20.7/drivers/char/ts0710.h 2007-04-24 16:04:23.000000000 +0200
+@@ -45,7 +45,7 @@
+ * 11/18/2002 Modified
+ */
+
+-#include <linux/config.h>
++//#include <linux/config.h>
+ #include <linux/module.h>
+
+ #include <linux/errno.h>
+@@ -58,7 +58,7 @@
+ #include <linux/major.h>
+ #include <linux/mm.h>
+ #include <linux/init.h>
+-#include <linux/devfs_fs_kernel.h>
++//#include <linux/devfs_fs_kernel.h>
+
+ #include <asm/uaccess.h>
+ #include <asm/system.h>
+Index: linux-2.6.20.7/drivers/char/ts0710_mux.c
+===================================================================
+--- linux-2.6.20.7.orig/drivers/char/ts0710_mux.c 2007-04-24 16:04:23.000000000 +0200
++++ linux-2.6.20.7/drivers/char/ts0710_mux.c 2007-04-24 16:26:58.000000000 +0200
+@@ -46,7 +46,7 @@
+ * 11/18/2002 Second version
+ * 04/21/2004 Add GPRS PROC
+ */
+-#include <linux/config.h>
++//#include <linux/config.h>
+ #include <linux/module.h>
+ #include <linux/types.h>
+
+@@ -70,7 +70,7 @@
+ #include <linux/mm.h>
+ #include <linux/slab.h>
+ #include <linux/init.h>
+-#include <linux/devfs_fs_kernel.h>
++//#include <linux/devfs_fs_kernel.h>
+ //#include <syslog.h>
+
+ #include <asm/uaccess.h>
+@@ -268,8 +268,8 @@
+ static struct work_struct post_recv_tqueue;
+
+ static struct tty_struct *mux_table[NR_MUXS];
+-static struct termios *mux_termios[NR_MUXS];
+-static struct termios *mux_termios_locked[NR_MUXS];
++static struct ktermios *mux_termios[NR_MUXS];
++static struct ktermios *mux_termios_locked[NR_MUXS];
+ static volatile short int mux_tty[NR_MUXS];
+
+ #ifdef min
+@@ -1894,11 +1894,14 @@
+ if (test_bit(TTY_THROTTLED, &tty->flags)) {
+ queue_data = 1;
+ } else {
++ /*
+ if (test_bit
+ (TTY_DONT_FLIP, &tty->flags)) {
+ queue_data = 1;
+ post_recv = 1;
+- } else if (recv_info->total) {
++ } else
++ */
++ if (recv_info->total) {
+ queue_data = 1;
+ post_recv = 1;
+ } else if (recv_room < uih_len) {
+@@ -3149,7 +3152,7 @@
+
+ /*For BP UART problem End*/
+
+-static void receive_worker(void *private_)
++static void receive_worker(struct work_struct *private_)
+ {
+ struct tty_struct *tty = COMM_FOR_MUX_TTY;
+ int i, count, tbuf_free, tbuf_read;
+@@ -3440,7 +3443,7 @@
+ clear_bit(RECV_RUNNING, &mux_recv_flags);
+ }
+
+-static void post_recv_worker(void *private_)
++static void post_recv_worker(struct work_struct *private_)
+ {
+ ts0710_con *ts0710 = &ts0710_connection;
+ int tty_idx;
+@@ -3499,11 +3502,14 @@
+ if (test_bit(TTY_THROTTLED, &tty->flags)) {
+ add_post_recv_queue(&post_recv_q, recv_info);
+ continue;
+- } else if (test_bit(TTY_DONT_FLIP, &tty->flags)) {
++ }
++ /*
++ else if (test_bit(TTY_DONT_FLIP, &tty->flags)) {
+ post_recv = 1;
+ add_post_recv_queue(&post_recv_q, recv_info);
+ continue;
+ }
++ */
+
+ flow_control = 0;
+ recv_packet2 = recv_info->mux_packet;
+@@ -3635,7 +3641,7 @@
+ }
+ }
+
+-static void send_worker(void *private_)
++static void send_worker(struct work_struct *private_)
+ {
+ ts0710_con *ts0710 = &ts0710_connection;
+ __u8 j;
+@@ -3893,9 +3899,9 @@
+ }
+ post_recv_count_flag = 0;
+
+- INIT_WORK(&send_tqueue, send_worker, NULL);
+- INIT_WORK(&receive_tqueue, receive_worker, NULL);
+- INIT_WORK(&post_recv_tqueue, post_recv_worker, NULL);
++ INIT_WORK(&send_tqueue, send_worker);
++ INIT_WORK(&receive_tqueue, receive_worker);
++ INIT_WORK(&post_recv_tqueue, post_recv_worker);
+
+ mux_driver = alloc_tty_driver(NR_MUXS);
+ if (!mux_driver)
+@@ -3904,12 +3910,12 @@
+ mux_driver->owner = THIS_MODULE;
+ mux_driver->driver_name = "ts0710mux";
+ mux_driver->name = "mux";
+- mux_driver->devfs_name = "mux";
++ //mux_driver->devfs_name = "mux";
+ mux_driver->major = TS0710MUX_MAJOR;
+ mux_driver->minor_start = TS0710MUX_MINOR_START;
+ mux_driver->type = TTY_DRIVER_TYPE_SERIAL;
+ mux_driver->subtype = SERIAL_TYPE_NORMAL;
+- mux_driver->flags = TTY_DRIVER_RESET_TERMIOS | TTY_DRIVER_REAL_RAW;
++ mux_driver->flags = TTY_DRIVER_RESET_TERMIOS | TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV;
+
+ mux_driver->init_termios = tty_std_termios;
+ mux_driver->init_termios.c_iflag = 0;
+@@ -3917,10 +3923,10 @@
+ mux_driver->init_termios.c_cflag = B38400 | CS8 | CREAD;
+ mux_driver->init_termios.c_lflag = 0;
+
+-// mux_driver.ttys = mux_table;
++ //mux_driver.ttys = mux_table;
+ mux_driver->termios = mux_termios;
+ mux_driver->termios_locked = mux_termios_locked;
+-// mux_driver.driver_state = mux_state;
++ //mux_driver.driver_state = mux_state;
+ mux_driver->other = NULL;
+
+ mux_driver->open = mux_open;
+Index: linux-2.6.20.7/drivers/char/ts0710_mux_usb.c
+===================================================================
+--- linux-2.6.20.7.orig/drivers/char/ts0710_mux_usb.c 2007-04-24 16:27:30.000000000 +0200
++++ linux-2.6.20.7/drivers/char/ts0710_mux_usb.c 2007-04-24 16:31:51.000000000 +0200
+@@ -86,8 +86,8 @@
+ struct tty_struct *usb_for_mux_tty = NULL;
+ void (*usb_mux_dispatcher)(struct tty_struct *tty) = NULL;
+ void (*usb_mux_sender)(void) = NULL;
+-void (*ipcusb_ap_to_bp)(unsigned char*, int) = NULL;
+-void (*ipcusb_bp_to_ap)(unsigned char*, int) = NULL;
++void (*ipcusb_ap_to_bp)(const unsigned char*, int) = NULL;
++void (*ipcusb_bp_to_ap)(const unsigned char*, int) = NULL;
+ EXPORT_SYMBOL(usb_for_mux_driver);
+ EXPORT_SYMBOL(usb_for_mux_tty);
+ EXPORT_SYMBOL(usb_mux_dispatcher);
+@@ -222,7 +222,7 @@
+ inbuf = list_entry(ptr, buf_list_t, list);
+ src_count = inbuf->size;
+ if (dst_count >= src_count) {
+- memcpy(buf, inbuf->body, src_count);
++ memcpy((char *)buf, inbuf->body, src_count);
+ ret = src_count;
+ list_del(ptr);
+ kfree(inbuf->body);
+@@ -282,7 +282,7 @@
+ spin_unlock(&bvd_ipc->in_buf_lock);
+ }
+
+-static void usb_ipc_read_bulk(struct urb *urb, struct pt_regs *regs)
++static void usb_ipc_read_bulk(struct urb *urb)
+ {
+ buf_list_t *inbuf;
+ int count = urb->actual_length;
+@@ -319,7 +319,7 @@
+ bvd_dbg("usb_ipc_read_bulk: completed!!!");
+ }
+
+-static void usb_ipc_write_bulk(struct urb *urb, struct pt_regs *regs)
++static void usb_ipc_write_bulk(struct urb *urb)
+ {
+ callback_times++;
+ bvd_ipc->write_finished_flag = 1;
+@@ -437,7 +437,7 @@
+ /*send IN token*/
+ bvd_ipc->readurb_mux.actual_length = 0;
+ bvd_ipc->readurb_mux.dev = bvd_ipc->ipc_dev;
+- if (ret = usb_submit_urb(&bvd_ipc->readurb_mux, GFP_ATOMIC))
++ if ( (ret = usb_submit_urb(&bvd_ipc->readurb_mux, GFP_ATOMIC)) )
+ printk("ipcusb_xmit_data: usb_submit_urb(read mux bulk)"
+ "failed! status=%d\n", ret);
+ bvd_dbg("ipcusb_xmit_data: Send a IN token successfully!");
+@@ -447,7 +447,7 @@
+ bvd_ipc->write_finished_flag = 0;
+ //printk("%s: clear write_finished_flag:%d\n", __FUNCTION__, bvd_ipc->write_finished_flag);
+ bvd_ipc->writeurb_mux.dev = bvd_ipc->ipc_dev;
+- if (result = usb_submit_urb(&bvd_ipc->writeurb_mux, GFP_ATOMIC))
++ if ( (result = usb_submit_urb(&bvd_ipc->writeurb_mux, GFP_ATOMIC)) )
+ warn("ipcusb_xmit_data: funky result! result=%d\n", result);
+
+ bvd_dbg("ipcusb_xmit_data: usb_submit_urb finished! result:%d", result);
+@@ -556,7 +556,7 @@
+ struct usb_config_descriptor *ipccfg;
+ struct usb_interface_descriptor *interface;
+ struct usb_endpoint_descriptor *endpoint;
+- int ep_cnt, readsize, writesize;
++ int ep_cnt, readsize=0, writesize=0;
+ char have_bulk_in_mux, have_bulk_out_mux;
+
+ bvd_dbg("usb_ipc_probe: vendor id 0x%x, device id 0x%x",
diff --git a/packages/linux/linux-ezx-2.6.21/mux-linux-2.6.21-fix.patch b/packages/linux/linux-ezx-2.6.21/mux-linux-2.6.21-fix.patch
index 79f48ae581..8d5299e3bd 100644
--- a/packages/linux/linux-ezx-2.6.21/mux-linux-2.6.21-fix.patch
+++ b/packages/linux/linux-ezx-2.6.21/mux-linux-2.6.21-fix.patch
@@ -202,7 +202,7 @@ Index: linux-2.6.21/drivers/char/ts0710_mux.c
Index: linux-2.6.21/drivers/char/ts0710_mux_usb.c
===================================================================
--- linux-2.6.21.orig/drivers/char/ts0710_mux_usb.c 2007-04-27 20:35:44.000000000 -0300
-+++ linux-2.6.21/drivers/char/ts0710_mux_usb.c 2007-04-27 22:28:55.000000000 -0300
++++ linux-2.6.21/drivers/char/ts0710_mux_usb.c 2007-04-27 22:34:31.000000000 -0300
@@ -188,7 +188,8 @@
buf_list_t *inbuf;
int count = urb->actual_length;
@@ -213,6 +213,15 @@ Index: linux-2.6.21/drivers/char/ts0710_mux_usb.c
if (!inbuf) {
printk("append_to_inbuf_list: (%d) out of memory!\n",
sizeof(buf_list_t));
+@@ -196,7 +197,7 @@
+ }
+
+ inbuf->size = count;
+- inbuf->body = kmalloc(sizeof(char)*count, GFP_KERNEL);
++ inbuf->body = kmalloc(sizeof(char)*count, GFP_ATOMIC);
+ if (!inbuf->body) {
+ kfree(inbuf);
+ printk("append_to_inbuf_list: (%d) out of memory!\n",
@@ -222,7 +223,7 @@
inbuf = list_entry(ptr, buf_list_t, list);
src_count = inbuf->size;
diff --git a/packages/linux/linux-ezx-2.6.21/pcap-ts.patch b/packages/linux/linux-ezx-2.6.21/pcap-ts.patch
new file mode 100644
index 0000000000..a07ec1abe9
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/pcap-ts.patch
@@ -0,0 +1,450 @@
+Index: linux-2.6.21/drivers/input/touchscreen/Kconfig
+===================================================================
+--- linux-2.6.21.orig/drivers/input/touchscreen/Kconfig 2007-05-03 17:39:18.000000000 -0300
++++ linux-2.6.21/drivers/input/touchscreen/Kconfig 2007-05-03 17:44:12.000000000 -0300
+@@ -164,4 +164,13 @@
+ To compile this driver as a module, choose M here: the
+ module will be called ucb1400_ts.
+
++config TOUCHSCREEN_PCAP
++ tristate "Motorola PCAP touchscreen"
++ depends on PXA_EZX
++ help
++ Say Y here if you have a Motorola EZX telephone and
++ want to support the built-in touchscreen.
++
++ If unsure, say N.
++
+ endif
+Index: linux-2.6.21/drivers/input/touchscreen/pcap_ts.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/drivers/input/touchscreen/pcap_ts.c 2007-05-04 04:17:22.000000000 -0300
+@@ -0,0 +1,372 @@
++/*
++ * pcap_ts.c - Touchscreen driver for Motorola PCAP2 based touchscreen as found
++ * in the EZX phone platform.
++ *
++ * Copyright (C) 2006 Harald Welte <laforge@openezx.org>
++ *
++ * Based on information found in the original Motorola 2.4.x ezx-ts.c driver.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ * May 3, 2007 - Daniel Ribeiro <drwyrm@gmail.com>
++ * Major cleanup
++ * PM Callbacks
++ *
++ * TODO:
++ * split this in a hardirq handler and a tasklet/bh
++ */
++
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/fs.h>
++#include <linux/string.h>
++#include <linux/pm.h>
++#include <linux/timer.h>
++//#include <linux/config.h>
++#include <linux/interrupt.h>
++#include <linux/platform_device.h>
++#include <linux/input.h>
++
++#include <asm/arch/hardware.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/ezx-pcap.h>
++
++#if 0
++#define DEBUGP(x, args ...) printk(x, ## args)
++#else
++#define DEBUGP(x, args ...)
++#endif
++
++#define PRESSURE 1
++#define COORDINATE 2
++#define STANDBY 3
++
++struct pcap_ts {
++ int irq_xy;
++ int irq_touch;
++ struct input_dev *input;
++ struct timer_list timer;
++
++ u_int16_t x, y;
++ u_int16_t pressure;
++
++ u_int8_t read_state;
++};
++
++#define X_AXIS_MIN 0
++#define X_AXIS_MAX 1023
++
++#define Y_AXIS_MAX X_AXIS_MAX
++#define Y_AXIS_MIN X_AXIS_MIN
++
++#define PRESSURE_MAX X_AXIS_MAX
++#define PRESSURE_MIN X_AXIS_MIN
++
++/* if we try to read faster, pressure reading becomes unreliable */
++#define SAMPLE_INTERVAL (HZ/50)
++
++
++static void pcap_ts_mode(u_int32_t mode)
++{
++ u_int32_t tmp;
++
++ ezx_pcap_read(SSP_PCAP_ADJ_ADC1_REGISTER, &tmp);
++ tmp &= ~SSP_PCAP_TOUCH_PANEL_POSITION_DETECT_MODE_MASK;
++ tmp |= mode;
++ ezx_pcap_write(SSP_PCAP_ADJ_ADC1_REGISTER, tmp);
++}
++
++/* issue a XY read command to the ADC of PCAP2. Well get an ADCDONE2 interrupt
++ * once the result of the conversion is available */
++static void pcap_ts_start_xy_read(struct pcap_ts *pcap_ts)
++{
++ u_int32_t tmp;
++
++ ezx_pcap_read(SSP_PCAP_ADJ_ADC1_REGISTER, &tmp);
++ tmp &= SSP_PCAP_ADC_START_VALUE_SET_MASK;
++ tmp |= SSP_PCAP_ADC_START_VALUE;
++ ezx_pcap_write(SSP_PCAP_ADJ_ADC1_REGISTER, tmp);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_ADC2_ASC, 1);
++}
++
++/* read the XY result from the ADC of PCAP2 */
++static void pcap_ts_get_xy_value(struct pcap_ts *pcap_ts)
++{
++ u_int32_t tmp;
++
++ ezx_pcap_read(SSP_PCAP_ADJ_ADC2_REGISTER, &tmp);
++
++ if (pcap_ts->read_state == COORDINATE && !(tmp & 0x00400000)) {
++ pcap_ts->x = (tmp & SSP_PCAP_ADD1_VALUE_MASK);
++ pcap_ts->y = (tmp & SSP_PCAP_ADD2_VALUE_MASK)
++ >>SSP_PCAP_ADD2_VALUE_SHIFT;
++ } else {
++ pcap_ts->pressure = (tmp & SSP_PCAP_ADD2_VALUE_MASK)
++ >>SSP_PCAP_ADD2_VALUE_SHIFT;
++ }
++
++}
++
++/* PCAP2 interrupts us when ADC conversion result is available */
++static irqreturn_t pcap_ts_irq_xy(int irq, void *dev_id)
++{
++ struct pcap_ts *pcap_ts = dev_id;
++
++ pcap_ts_get_xy_value(pcap_ts);
++ DEBUGP(KERN_DEBUG "%s X=%4d, Y=%4d Z=%4d ",
++ pcap_ts->read_state == COORDINATE ? "COORD" : "PRESS",
++ pcap_ts->x, pcap_ts->y, pcap_ts->pressure);
++
++ switch (pcap_ts->read_state) {
++ case PRESSURE:
++ if (pcap_ts->pressure >= PRESSURE_MAX ||
++ pcap_ts->pressure <= PRESSURE_MIN ) {
++ /* pen has been released (or cant read pressure - WM)*/
++ DEBUGP("UP\n");
++ /* do nothing */
++ } else {
++ /* pen has been touched down */
++ DEBUGP("DOWN\n");
++ input_report_key(pcap_ts->input, BTN_TOUCH, 1);
++ input_report_abs(pcap_ts->input, ABS_PRESSURE, pcap_ts->pressure);
++ }
++ /* switch state machine into coordinate read mode */
++ pcap_ts->read_state = COORDINATE;
++ pcap_ts_mode(PCAP_TS_POSITION_XY_MEASUREMENT);
++ pcap_ts_start_xy_read(pcap_ts);
++ break;
++ case COORDINATE:
++ if (pcap_ts->x <= X_AXIS_MIN || pcap_ts->x >= X_AXIS_MAX ||
++ pcap_ts->y <= Y_AXIS_MIN || pcap_ts->y >= Y_AXIS_MAX) {
++ /* pen has been released */
++ DEBUGP("UP END\n");
++
++ input_report_key(pcap_ts->input, BTN_TOUCH, 0);
++ input_report_abs(pcap_ts->input, ABS_PRESSURE, 0);
++
++ /* no need for timer, we'll get interrupted with
++ * next touch down event */
++ del_timer(&pcap_ts->timer);
++
++ /* ask PCAP2 to interrupt us if touch event happens
++ * again */
++ pcap_ts->read_state = STANDBY;
++ pcap_ts_mode(PCAP_TS_STANDBY_MODE);
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 0);
++ } else {
++ DEBUGP("DOWN\n");
++ input_report_abs(pcap_ts->input, ABS_X, pcap_ts->x);
++ input_report_abs(pcap_ts->input, ABS_Y, pcap_ts->y);
++
++ /* switch back to pressure read mode */
++ pcap_ts->read_state = PRESSURE;
++ pcap_ts_mode(PCAP_TS_PRESSURE_MEASUREMENT);
++ mod_timer(&pcap_ts->timer, jiffies + SAMPLE_INTERVAL);
++ }
++ input_sync(pcap_ts->input);
++ break;
++ default:
++ DEBUGP("ERROR\n");
++ break;
++ }
++
++ return IRQ_HANDLED;
++}
++
++/* PCAP2 interrupts us if the pen touches down (interrupts also on pen up - WM)*/
++static irqreturn_t pcap_ts_irq_touch(int irq, void *dev_id)
++{
++ struct pcap_ts *pcap_ts = dev_id;
++
++ /* mask Touchscreen interrupt bit, prevents further touch events
++ * from being reported to us until we're finished with reading
++ * both pressure and x/y from ADC */
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 1);
++
++ DEBUGP("touched!!\n");
++ pcap_ts_mode(PCAP_TS_PRESSURE_MEASUREMENT);
++ pcap_ts->read_state = PRESSURE;
++ pcap_ts_start_xy_read(pcap_ts);
++
++ return IRQ_HANDLED;
++}
++
++static void pcap_ts_timer_fn(unsigned long data)
++{
++ struct pcap_ts *pcap_ts = (struct pcap_ts *) data;
++
++ pcap_ts_start_xy_read(pcap_ts);
++}
++
++static int __init ezxts_probe(struct platform_device *pdev)
++{
++ int ret;
++ u_int32_t tmp;
++ struct pcap_ts *pcap_ts;
++ struct input_dev *input_dev;
++ int err = -ENOMEM;
++
++ pcap_ts = kzalloc(sizeof(*pcap_ts), GFP_KERNEL);
++ input_dev = input_allocate_device();
++ if (!pcap_ts || !input_dev)
++ goto fail;
++
++ pcap_ts->irq_xy = platform_get_irq(pdev, 0);
++ if (pcap_ts->irq_xy < 0) {
++ err = pcap_ts->irq_xy;
++ goto fail;
++ }
++
++ pcap_ts->irq_touch = platform_get_irq(pdev, 1);
++ if (pcap_ts->irq_touch < 0) {
++ err = pcap_ts->irq_touch;
++ goto fail;
++ }
++
++ // Some initialization before done in ssp_pcap_open()
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_TS_REFENB, 0);
++ // ack interrupts
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ISR_ADCDONE2I, 1);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ISR_TSI, 1);
++ // unmask interrupts
++ // ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_MSR_TSM, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_MSR_ADCDONE2M, 0);
++ // set adc bits? FIXME I dont think its necessary - WM
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC2_ADINC1, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC2_ADINC2, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_ATO0, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_ATO1, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_ATO2, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_ATO3, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_ATOX, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_MTR1, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_MTR2, 0);
++
++ ret = ezx_pcap_read(SSP_PCAP_ADJ_ADC1_REGISTER, &tmp);
++ if (ret < 0)
++ return ret;
++
++ tmp &= (~SSP_PCAP_TOUCH_PANEL_POSITION_DETECT_MODE_MASK);
++ tmp |= PCAP_TS_STANDBY_MODE;
++
++ ret = ezx_pcap_write(SSP_PCAP_ADJ_ADC1_REGISTER, tmp);
++ if (ret < 0)
++ return ret;
++
++ err = request_irq(pcap_ts->irq_xy, pcap_ts_irq_xy, SA_INTERRUPT,
++ "PCAP Touchscreen XY", pcap_ts);
++ if (err < 0) {
++ printk(KERN_ERR "pcap_ts: can't grab xy irq %d: %d\n",
++ pcap_ts->irq_xy, err);
++ goto fail;
++ }
++
++ err = request_irq(pcap_ts->irq_touch, pcap_ts_irq_touch, SA_INTERRUPT,
++ "PCAP Touchscreen Touch", pcap_ts);
++ if (err < 0) {
++ printk(KERN_ERR "pcap_ts: can't grab touch irq %d: %d\n",
++ pcap_ts->irq_touch, err);
++ goto fail_xy;
++ }
++
++ pcap_ts->input = input_dev;
++ init_timer(&pcap_ts->timer);
++ pcap_ts->timer.data = (unsigned long) pcap_ts;
++ pcap_ts->timer.function = &pcap_ts_timer_fn;
++
++ platform_set_drvdata(pdev, pcap_ts);
++
++ pcap_ts->read_state = STANDBY;
++ pcap_ts_mode(PCAP_TS_STANDBY_MODE);
++
++ /* enable pressure interrupt */
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 0);
++
++ input_dev->name = "EZX PCAP2 Touchscreen";
++ input_dev->phys = "ezxts/input0";
++ input_dev->id.bustype = BUS_HOST;
++ input_dev->id.vendor = 0x0001;
++ input_dev->id.product = 0x0002;
++ input_dev->id.version = 0x0100;
++ input_dev->cdev.dev = &pdev->dev;
++ input_dev->private = pcap_ts;
++
++ input_dev->evbit[0] = BIT(EV_KEY) | BIT(EV_ABS);
++ input_dev->keybit[LONG(BTN_TOUCH)] = BIT(BTN_TOUCH);
++ input_set_abs_params(input_dev, ABS_X, X_AXIS_MIN, X_AXIS_MAX, 0, 0);
++ input_set_abs_params(input_dev, ABS_Y, Y_AXIS_MIN, Y_AXIS_MAX, 0, 0);
++ input_set_abs_params(input_dev, ABS_PRESSURE, PRESSURE_MIN,
++ PRESSURE_MAX, 0, 0);
++
++ input_register_device(pcap_ts->input);
++
++ return 0;
++
++fail_xy:
++ free_irq(pcap_ts->irq_xy, pcap_ts);
++fail:
++ input_free_device(input_dev);
++ kfree(pcap_ts);
++
++ return err;
++}
++
++static int ezxts_remove(struct platform_device *pdev)
++{
++ struct pcap_ts *pcap_ts = platform_get_drvdata(pdev);
++
++ del_timer_sync(&pcap_ts->timer);
++
++ free_irq(pcap_ts->irq_touch, pcap_ts);
++ free_irq(pcap_ts->irq_xy, pcap_ts);
++
++ input_unregister_device(pcap_ts->input);
++ kfree(pcap_ts);
++
++ return 0;
++}
++
++static int ezxts_suspend(struct platform_device *dev, pm_message_t state)
++{
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_ADC1_TS_REF_LOWPWR, 1);
++ return 0;
++}
++
++static int ezxts_resume(struct platform_device *dev)
++{
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_ADC1_TS_REF_LOWPWR, 0);
++ /* just in case we suspend with TSI masked. */
++ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 0);
++ return 0;
++}
++
++
++static struct platform_driver ezxts_driver = {
++ .probe = ezxts_probe,
++ .remove = ezxts_remove,
++ .suspend = ezxts_suspend,
++ .resume = ezxts_resume,
++ .driver = {
++ .name = "pcap-ts",
++ .owner = THIS_MODULE,
++ },
++};
++
++static int __init ezxts_init(void)
++{
++ return platform_driver_register(&ezxts_driver);
++}
++
++static void __exit ezxts_exit(void)
++{
++ platform_driver_unregister(&ezxts_driver);
++}
++
++module_init(ezxts_init);
++module_exit(ezxts_exit);
++
++MODULE_DESCRIPTION("Motorola PCAP2 touchscreen driver");
++MODULE_AUTHOR("Harald Welte <laforge@openezx.org>");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx.c 2007-05-03 19:09:25.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-05-03 19:15:57.000000000 -0300
+@@ -116,8 +116,32 @@
+ .resource = ezxemu_resources,
+ };
+
+-/* OHCI Controller */
++/* PCAP_TS */
++struct resource pcap_ts_resources[] = {
++ [0] = {
++ .start = EZX_IRQ_ADCDONE2,
++ .end = EZX_IRQ_ADCDONE2,
++ .flags = IORESOURCE_IRQ,
++ },
++ [1] = {
++ .start = EZX_IRQ_TS,
++ .end = EZX_IRQ_TS,
++ .flags = IORESOURCE_IRQ,
++ }
++};
+
++struct platform_device pcap_ts_device = {
++ .name = "pcap-ts",
++ .id = -1,
++ .dev = {
++ .parent = &ezxpcap_device.dev,
++ },
++ .num_resources = ARRAY_SIZE(pcap_ts_resources),
++ .resource = pcap_ts_resources,
++};
++
++
++/* OHCI Controller */
+ static int ezx_ohci_init(struct device *dev)
+ {
+ /* for A780 support (connected with Neptune) */
+@@ -342,6 +366,7 @@
+ &ezxpcap_device,
+ &ezxbp_device,
+ &ezxemu_device,
++ &pcap_ts_device,
+ };
+
+ static void __init a780_init(void)
+Index: linux-2.6.21/drivers/input/touchscreen/Makefile
+===================================================================
+--- linux-2.6.21.orig/drivers/input/touchscreen/Makefile 2007-05-03 18:50:12.000000000 -0300
++++ linux-2.6.21/drivers/input/touchscreen/Makefile 2007-05-03 18:50:59.000000000 -0300
+@@ -16,3 +16,4 @@
+ obj-$(CONFIG_TOUCHSCREEN_TOUCHRIGHT) += touchright.o
+ obj-$(CONFIG_TOUCHSCREEN_TOUCHWIN) += touchwin.o
+ obj-$(CONFIG_TOUCHSCREEN_UCB1400) += ucb1400_ts.o
++obj-$(CONFIG_TOUCHSCREEN_PCAP) += pcap_ts.o
diff --git a/packages/linux/linux-ezx-2.6.21/pcap_ts.c.patch b/packages/linux/linux-ezx-2.6.21/pcap_ts.c.patch
new file mode 100644
index 0000000000..d46033bc80
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/pcap_ts.c.patch
@@ -0,0 +1,237 @@
+Index: linux-2.6.21/drivers/input/touchscreen/pcap_ts.c
+===================================================================
+--- linux-2.6.21.orig/drivers/input/touchscreen/pcap_ts.c 2007-05-01 16:28:00.000000000 +0200
++++ linux-2.6.21/drivers/input/touchscreen/pcap_ts.c 2007-05-01 16:28:03.000000000 +0200
+@@ -21,15 +21,14 @@
+ #include <linux/string.h>
+ #include <linux/pm.h>
+ #include <linux/timer.h>
+-#include <linux/config.h>
++//#include <linux/config.h>
+ #include <linux/interrupt.h>
+ #include <linux/platform_device.h>
+ #include <linux/input.h>
+
+ #include <asm/arch/hardware.h>
+ #include <asm/arch/pxa-regs.h>
+-
+-#include "../../misc/ezx/ssp_pcap.h"
++#include <asm/arch/ezx-pcap.h>
+
+ #if 1
+ #define DEBUGP(x, args ...) printk(KERN_DEBUG "%s: " x, __FUNCTION__, ## args)
+@@ -61,6 +60,9 @@
+ #define PRESSURE_MAX X_AXIS_MAX
+ #define PRESSURE_MIN X_AXIS_MIN
+
++#define SAMPLE_INTERVAL (HZ/100)
++
++
+ static int pcap_ts_mode(u_int32_t mode)
+ {
+ int ret;
+@@ -157,8 +159,6 @@
+ pcap_ts->x, pcap_ts->y, pcap_ts->pressure);
+
+ if (pcap_ts->read_state == PRESSURE) {
+- input_report_abs(pcap_ts->input, ABS_PRESSURE,
+- pcap_ts->pressure);
+ if ((pcap_ts->pressure >= PRESSURE_MAX ||
+ pcap_ts->pressure <= PRESSURE_MIN ) &&
+ pcap_ts->pressure == pcap_ts->pressure_last) {
+@@ -166,6 +166,8 @@
+ input_report_key(pcap_ts->input, BTN_TOUCH, 0);
+ input_sync(pcap_ts->input);
+
++ input_report_abs(pcap_ts->input, ABS_PRESSURE, 0);
++
+ pcap_ts->x = pcap_ts->y = 0;
+
+ /* ask PCAP2 to interrupt us if touch event happens
+@@ -182,18 +184,24 @@
+ input_report_key(pcap_ts->input, BTN_TOUCH, 1);
+ /* don't input_sync(), we don't know position yet */
+
++ if (pcap_ts->pressure == 0)
++ pcap_ts->pressure = pcap_ts->pressure_last;
++
++ input_report_abs(pcap_ts->input, ABS_PRESSURE,
++ pcap_ts->pressure);
++
+ /* switch state machine into coordinate read mode */
+ pcap_ts->read_state = COORDINATE;
+ pcap_ts_mode(PCAP_TS_POSITION_XY_MEASUREMENT);
+ pcap_ts_start_xy_read(pcap_ts);
+-
+- mod_timer(&pcap_ts->timer, jiffies + HZ/20);
+ }
+ } else {
+ /* we are in coordinate mode */
+ if (pcap_ts->x <= X_AXIS_MIN || pcap_ts->x >= X_AXIS_MAX ||
+ pcap_ts->y <= Y_AXIS_MIN || pcap_ts->y >= Y_AXIS_MAX) {
+ DEBUGP("invalid x/y coordinate position: PEN_UP?\n");
++
++ pcap_ts->pressure = 0;
+ #if 0
+ input_report_key(pcap_ts->input, BTN_TOUCH, 0);
+ pcap_ts->x = pcap_ts->y = 0;
+@@ -206,8 +214,8 @@
+
+ /* switch back to pressure read mode */
+ pcap_ts->read_state = PRESSURE;
+- pcap_ts_mode(PCAP_TS_STANDBY_MODE);
+- ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 0);
++ pcap_ts_mode(PCAP_TS_PRESSURE_MEASUREMENT);
++ mod_timer(&pcap_ts->timer, jiffies + SAMPLE_INTERVAL);
+ }
+
+ return IRQ_HANDLED;
+@@ -234,18 +242,19 @@
+ {
+ struct pcap_ts *pcap_ts = (struct pcap_ts *) data;
+
+- ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 1);
+- pcap_ts_mode(PCAP_TS_PRESSURE_MEASUREMENT);
+- pcap_ts->read_state = PRESSURE;
+ pcap_ts_start_xy_read(pcap_ts);
+ }
+
+ static int __init ezxts_probe(struct platform_device *pdev)
+ {
++ int ret;
++ u_int32_t tmp;
+ struct pcap_ts *pcap_ts;
+ struct input_dev *input_dev;
+ int err = -ENOMEM;
+
++ printk(KERN_DEBUG "Start probing TS!\n");
++
+ pcap_ts = kzalloc(sizeof(*pcap_ts), GFP_KERNEL);
+ input_dev = input_allocate_device();
+ if (!pcap_ts || !input_dev)
+@@ -263,7 +272,46 @@
+ goto fail;
+ }
+
+- ssp_pcap_open(SSP_PCAP_TS_OPEN);
++ // Some initialization before done in ssp_pcap_open()
++ //ssp_pcap_open(SSP_PCAP_TS_OPEN);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_TS_REFENB, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ISR_ADCDONE2I, 1);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ISR_TSI, 1);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_MSR_TSM, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_MSR_ADCDONE2M, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC2_ADINC1, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC2_ADINC2, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_ATO0, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_ATO1, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_ATO2, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_ATO3, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_ATOX, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_MTR1, 0);
++ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_MTR2, 0);
++
++ //SSP_PCAP_TSI_mode_set(PCAP_TS_STANDBY_MODE);
++ ret = ezx_pcap_read(SSP_PCAP_ADJ_ADC1_REGISTER, &tmp);
++ if (ret < 0)
++ return ret;
++
++ tmp &= (~SSP_PCAP_TOUCH_PANEL_POSITION_DETECT_MODE_MASK);
++ tmp |= PCAP_TS_STANDBY_MODE;
++
++ ret = ezx_pcap_write(SSP_PCAP_ADJ_ADC1_REGISTER, tmp);
++ if (ret < 0)
++ return ret;
++
++ /* send the usb accessory infomation to PM */
++ /*
++ if((ACCESSORY_TYPE) sspUsbAccessoryInfo.type == ACCESSORY_DEVICE_USB_PORT)
++ {
++ if( (ACCESSORY_DEVICE_STATUS )sspUsbAccessoryInfo.status == ACCESSORY_DEVICE_STATUS_ATTACHED )
++ apm_queue_event(KRNL_ACCS_ATTACH);
++ else
++ apm_queue_event(KRNL_ACCS_DETACH);
++ }
++ */
++
+
+ err = request_irq(pcap_ts->irq_xy, pcap_ts_irq_xy, SA_INTERRUPT,
+ "PCAP Touchscreen XY", pcap_ts);
+@@ -343,10 +391,11 @@
+ //.resume = ezxts_resume,
+ .driver = {
+ .name = "pcap-ts",
++ .owner = THIS_MODULE,
+ },
+ };
+
+-static int __devinit ezxts_init(void)
++static int __init ezxts_init(void)
+ {
+ return platform_driver_register(&ezxts_driver);
+ }
+Index: linux-2.6.21/drivers/input/touchscreen/Kconfig
+===================================================================
+--- linux-2.6.21.orig/drivers/input/touchscreen/Kconfig 2007-05-01 16:28:00.000000000 +0200
++++ linux-2.6.21/drivers/input/touchscreen/Kconfig 2007-05-01 16:28:03.000000000 +0200
+@@ -166,7 +166,7 @@
+
+ config TOUCHSCREEN_PCAP
+ tristate "Motorola PCAP touchscreen"
+- depends on PXA_EZX_PCAP
++ depends on PXA_EZX
+ help
+ Say Y here if you have a Motorola EZX (E680, A780) telephone
+ and want to support the built-in touchscreen.
+@@ -174,6 +174,6 @@
+ If unsure, say N.
+
+ To compile this driver as a module, choose M here: the
+- module will be called hp680_ts_input.
++ module will be called pcap_ts.
+
+ endif
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx.c 2007-05-01 16:28:00.000000000 +0200
++++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-05-01 16:28:03.000000000 +0200
+@@ -116,6 +116,31 @@
+ .resource = ezxemu_resources,
+ };
+
++/* PCAP_TS */
++struct resource pcap_ts_resources[] = {
++ [0] = {
++ .start = EZX_IRQ_ADCDONE2,
++ .end = EZX_IRQ_ADCDONE2,
++ .flags = IORESOURCE_IRQ,
++ },
++ [1] = {
++ .start = EZX_IRQ_TS,
++ .end = EZX_IRQ_TS,
++ .flags = IORESOURCE_IRQ,
++ }
++};
++
++struct platform_device pcap_ts_device = {
++ .name = "pcap-ts",
++ .id = -1,
++ .dev = {
++ .parent = &ezxpcap_device.dev,
++ },
++ .num_resources = ARRAY_SIZE(pcap_ts_resources),
++ .resource = pcap_ts_resources,
++};
++
++
+ /* OHCI Controller */
+
+ static int ezx_ohci_init(struct device *dev)
+@@ -342,6 +367,7 @@
+ &ezxpcap_device,
+ &ezxbp_device,
+ &ezxemu_device,
++ &pcap_ts_device,
+ };
+
+ static void __init a780_init(void)
diff --git a/packages/linux/linux-ezx-2.6.21/pxa-kbd.patch b/packages/linux/linux-ezx-2.6.21/pxa-kbd.patch
new file mode 100644
index 0000000000..9bc6be656a
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/pxa-kbd.patch
@@ -0,0 +1,463 @@
+Index: linux-2.6.21/arch/arm/mach-pxa/generic.c
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/generic.c 2007-04-30 19:19:58.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/generic.c 2007-04-30 19:45:20.000000000 -0300
+@@ -42,6 +42,7 @@
+ #include <asm/arch/mmc.h>
+ #include <asm/arch/irda.h>
+ #include <asm/arch/i2c.h>
++#include <asm/arch/kbd.h>
+
+ #include "generic.h"
+
+@@ -430,6 +431,30 @@
+ .id = -1,
+ };
+
++static struct resource pxa_kbd_resources[] = {
++ {
++ .start = IRQ_KEYPAD,
++ .end = IRQ_KEYPAD,
++ .flags = IORESOURCE_IRQ,
++ }, {
++ .start = 0x41500000,
++ .end = 0x4150004c,
++ .flags = IORESOURCE_MEM,
++ },
++};
++
++static struct platform_device kbd_device = {
++ .name = "pxa-keyboard",
++ .id = -1,
++ .resource = pxa_kbd_resources,
++ .num_resources = ARRAY_SIZE(pxa_kbd_resources),
++};
++
++void __init pxa_set_kbd_info(struct pxakbd_platform_data *info)
++{
++ kbd_device.dev.platform_data = info;
++}
++
+ static struct platform_device *devices[] __initdata = {
+ &pxamci_device,
+ &udc_device,
+@@ -444,6 +469,7 @@
+ #endif
+ &i2s_device,
+ &pxartc_device,
++ &kbd_device,
+ };
+
+ static int __init pxa_init(void)
+Index: linux-2.6.21/drivers/input/keyboard/Kconfig
+===================================================================
+--- linux-2.6.21.orig/drivers/input/keyboard/Kconfig 2007-04-30 19:15:26.000000000 -0300
++++ linux-2.6.21/drivers/input/keyboard/Kconfig 2007-04-30 19:43:53.000000000 -0300
+@@ -229,4 +229,11 @@
+ To compile this driver as a module, choose M here: the
+ module will be called gpio-keys.
+
++config KEYBOARD_PXA
++ tristate "Intel PXA keyboard support"
++ depends on ARCH_PXA
++ help
++ This add support for a driver of the Intel PXA2xx keyboard
++ controller.
++
+ endif
+Index: linux-2.6.21/drivers/input/keyboard/Makefile
+===================================================================
+--- linux-2.6.21.orig/drivers/input/keyboard/Makefile 2007-04-30 19:17:25.000000000 -0300
++++ linux-2.6.21/drivers/input/keyboard/Makefile 2007-04-30 19:46:54.000000000 -0300
+@@ -19,4 +19,4 @@
+ obj-$(CONFIG_KEYBOARD_OMAP) += omap-keypad.o
+ obj-$(CONFIG_KEYBOARD_AAED2000) += aaed2000_kbd.o
+ obj-$(CONFIG_KEYBOARD_GPIO) += gpio_keys.o
+-
++obj-$(CONFIG_KEYBOARD_PXA) += pxakbd.o
+Index: linux-2.6.21/include/asm-arm/arch-pxa/kbd.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/include/asm-arm/arch-pxa/kbd.h 2007-04-30 19:27:58.000000000 -0300
+@@ -0,0 +1,28 @@
++/*
++ * kbd_pxa.h
++ *
++ * Copyright (C) 2006 Harald Welte <laforge@openezx.org>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ */
++#ifndef _KBD_PXA_H_
++#define _KBD_PXA_H_
++
++struct pxakbd_platform_data {
++ int (*init)(void); /* init gpio, etc. */
++ unsigned int scan_interval;
++ struct {
++ unsigned int rows;
++ unsigned int cols;
++ unsigned char *keycode;
++ } matrix;
++ struct {
++ unsigned int num;
++ unsigned char *keycode;
++ } direct;
++};
++
++#endif
+Index: linux-2.6.21/drivers/input/keyboard/pxakbd.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/drivers/input/keyboard/pxakbd.c 2007-04-30 19:48:13.000000000 -0300
+@@ -0,0 +1,332 @@
++/*
++ * Driver for Motorola EZX phone "keyboard"
++ *
++ * (C) 2006 by Harald Welte <laforge@openezx.org>
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/interrupt.h>
++#include <linux/input.h>
++#include <linux/spinlock.h>
++#include <linux/platform_device.h>
++
++#include <asm/hardware.h>
++#include <asm/io.h>
++#include <asm/irq.h>
++
++#include <asm/arch/kbd.h>
++#include <asm/arch/irqs.h>
++#include <asm/arch/pxa-regs.h>
++
++#if 1
++#define DEBUGP(x, args ...) printk(x, ## args)
++#else
++#define DEBUGP(x, args ...)
++#endif
++
++/* per-keyboard private data structure */
++struct pxakbd {
++ struct input_dev *input;
++ struct timer_list timer;
++ spinlock_t lock;
++
++ struct resource *res;
++ unsigned int irq;
++
++ struct pxakbd_platform_data *pd;
++};
++
++static int pxakbd_scan_direct(struct pxakbd *pxakbd)
++{
++ u_int32_t kpdk;
++ unsigned int i;
++ int num_pressed = 0;
++
++ kpdk = KPDK & 0x000000ff;
++ for (i = 0; i < pxakbd->pd->direct.num; i++) {
++ int pressed = 0;
++
++ if (kpdk & (1 << i)) {
++ pressed = 1;
++ num_pressed++;
++ DEBUGP("pxakbd: pressed: direct %u\n", i);
++ }
++ if (pxakbd->pd->direct.keycode[i] != KEY_RESERVED) {
++ DEBUGP( "pxakbd: sending to input layer: keycode = %d, pressed = %d\n", pxakbd->pd->direct.keycode[i], pressed );
++ input_report_key(pxakbd->input, pxakbd->pd->direct.keycode[i],
++ pressed);
++ }
++ }
++ return num_pressed;
++}
++
++/* read the full 8x8 matrix from the PXA27x keypad controller */
++static void __read_matrix(u_int8_t *matrix)
++{
++ u_int32_t tmp;
++
++ tmp = KPASMKP0;
++ matrix[0] = tmp & 0x000000ff;
++ matrix[1] = (tmp & 0x00ff0000) >> 16;
++
++ tmp = KPASMKP1;
++ matrix[2] = tmp & 0x000000ff;
++ matrix[3] = (tmp & 0x00ff0000) >> 16;
++
++ tmp = KPASMKP2;
++ matrix[4] = tmp & 0x000000ff;
++ matrix[5] = (tmp & 0x00ff0000) >> 16;
++
++ tmp = KPASMKP3;
++ matrix[6] = tmp & 0x000000ff;
++ matrix[7] = (tmp & 0x00ff0000) >> 16;
++}
++
++/* compare current matrix with last, generate 'diff' events */
++static int __cmp_matrix_gen_events(struct pxakbd *pxakbd, u_int8_t *matrix)
++{
++ unsigned int i;
++ int num_pressed = 0;
++
++ /* iterate over the matrix */
++ for (i = 0; i < pxakbd->pd->matrix.rows; i++) {
++ unsigned int j;
++ for (j = 0; j < pxakbd->pd->matrix.cols; j++) {
++ u_int32_t scancode =
++ (i * pxakbd->pd->matrix.cols) + j;
++ int pressed = matrix[i] & (1 << j);
++
++ if (pressed) {
++ DEBUGP("pxakbd: pressed: %u/%u\n", i, j);
++ num_pressed++;
++ }
++
++ input_report_key(pxakbd->input,
++ pxakbd->pd->matrix.keycode[scancode], pressed);
++ }
++ }
++
++ return num_pressed;
++}
++
++/* scan the matrix keypad */
++static int pxakbd_scan_matrix(struct pxakbd *pxakbd)
++{
++ int num_pressed;
++ u_int32_t kpas;
++ u_int8_t matrix[8];
++
++ kpas = KPAS;
++
++ if ((kpas & KPAS_MUKP) == KPAS_MUKP_NONE) {
++ /* no keys pressed */
++ memset(matrix, 0, sizeof(matrix));
++ } else if ((kpas & KPAS_MUKP) == KPAS_MUKP_ONE) {
++ /* one key pressed */
++ u_int8_t row = (kpas & KPAS_RP) >> 4;
++ u_int8_t col = kpas & KPAS_CP;
++
++ if (row == 0x0f || col == 0x0f) {
++ printk(KERN_WARNING "pxakbd: col or row invalid!\n");
++ return -1;
++ }
++
++ /* clear the matrix and set the single pressed key */
++ memset(matrix, 0, sizeof(matrix));
++ matrix[row] |= (1 << col);
++ } else {
++ /* multiple keys pressed */
++ __read_matrix(matrix);
++ }
++
++ num_pressed = __cmp_matrix_gen_events(pxakbd, matrix);
++
++ return num_pressed;
++}
++
++static void pxakbd_timer_callback(unsigned long data)
++{
++ unsigned long flags;
++ struct pxakbd *pxakbd = (struct pxakbd *) data;
++ unsigned int num_pressed;
++
++ spin_lock_irqsave(&pxakbd->lock, flags);
++
++ num_pressed = pxakbd_scan_direct(pxakbd);
++ num_pressed += pxakbd_scan_matrix(pxakbd);
++
++ spin_unlock_irqrestore(&pxakbd->lock, flags);
++
++ /* propagate events up the input stack */
++ input_sync(pxakbd->input);
++}
++
++static irqreturn_t pxakbd_interrupt(int irq, void *dummy)
++{
++ struct pxakbd *pxakbd = dummy;
++ u_int32_t kpc;
++ int handled = 0;
++ int num_pressed = 0;
++
++ /* read and clear interrupt */
++ kpc = KPC;
++
++ if (kpc & KPC_DI) {
++ num_pressed += pxakbd_scan_direct(pxakbd);
++ handled = 1;
++ }
++
++ if (kpc & KPC_MI) {
++ while (KPAS & KPAS_SO) {
++ /* wait for scan to complete beforereading scan regs */
++ cpu_relax();
++ }
++ num_pressed += pxakbd_scan_matrix(pxakbd);
++ handled = 1;
++ }
++
++ /* If any keys are currently pressed, we need to start the timer to detect
++ * key release. */
++ if (num_pressed)
++ mod_timer(&pxakbd->timer, jiffies + pxakbd->pd->scan_interval);
++
++ /* propagate events up the input stack */
++ input_sync(pxakbd->input);
++
++ return IRQ_RETVAL(handled);
++}
++
++static int __init pxakbd_probe(struct platform_device *pdev)
++{
++ struct pxakbd *pxakbd;
++ struct input_dev *input_dev;
++ struct resource *r;
++ int i;
++ int ret = -ENOMEM;
++
++ pxakbd = kzalloc(sizeof(*pxakbd), GFP_KERNEL);
++ if (!pxakbd)
++ goto out;
++
++ input_dev = input_allocate_device();
++ if (!input_dev)
++ goto out_pxa;
++
++ pxakbd->irq = platform_get_irq(pdev, 0);
++ r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++ if (!r || pxakbd->irq == NO_IRQ) {
++ printk(KERN_ERR "pxakbd: invalid resources\n");
++ ret = -EBUSY;
++ goto out_idev;
++ }
++
++ pxakbd->input = input_dev;
++ init_timer(&pxakbd->timer);
++ pxakbd->timer.function = pxakbd_timer_callback;
++ pxakbd->timer.data = (unsigned long) pxakbd;
++ pxakbd->pd = pdev->dev.platform_data;
++ pxakbd->res = r;
++
++ input_dev->name = "PXA Keyboard";
++ input_dev->phys = "pxakbd/input0";
++ input_dev->id.bustype = BUS_HOST;
++ input_dev->id.vendor = 0x0001;
++ input_dev->id.product = 0x0001;
++ input_dev->id.version = 0x0001;
++ input_dev->cdev.dev = &pdev->dev;
++ input_dev->private = pxakbd;
++
++ input_dev->evbit[0] = BIT(EV_KEY)|BIT(EV_REP);
++ input_dev->keycode = pxakbd->pd->matrix.keycode;
++ input_dev->keycodesize = sizeof(unsigned char);
++ input_dev->keycodemax = pxakbd->pd->matrix.rows
++ *pxakbd->pd->matrix.cols;
++
++ for (i = 0; i < input_dev->keycodemax; i++)
++ set_bit(pxakbd->pd->matrix.keycode[i], input_dev->keybit);
++ clear_bit(0, input_dev->keybit);
++
++ if (request_irq(pxakbd->irq, pxakbd_interrupt, 0, "pxakbd", pxakbd)) {
++ printk(KERN_ERR "pxakbd: can't request irq %d\n", pxakbd->irq);
++ ret = -EBUSY;
++ goto out_idev;
++ }
++
++ r = request_mem_region(r->start, 0x4c, "pxakbd");
++ if (!r) {
++ printk(KERN_ERR "pxakbd: can't request memregion\n");
++ ret = -EBUSY;
++ goto out_irq;
++ }
++
++ /* set up gpio */
++ pxakbd->pd->init();
++
++ /* set keypad control register */
++ KPC = (KPC_ASACT | /* automatic scan on activity */
++ KPC_ME | KPC_DE | /* matrix and direct keypad enabled */
++ ((pxakbd->pd->matrix.cols-1)<<23) | /* columns */
++ ((pxakbd->pd->matrix.rows-1)<<26) | /* rows */
++ ((pxakbd->pd->direct.num-1)<<6) | /* direct keys */
++ KPC_MS_ALL); /* scan all columns */
++
++ pxa_set_cken(CKEN19_KEYPAD, 1);
++
++ KPC |= (KPC_DIE | KPC_MIE); /* enable matrix and direct keyboard */
++
++ KPKDI = 0x40; /* matrix key debounce interval: 0x40 */
++
++ platform_set_drvdata(pdev, pxakbd);
++
++ return input_register_device(pxakbd->input);
++
++out_drvdata:
++ platform_set_drvdata(pdev, NULL);
++out_mem:
++ release_resource(r);
++out_irq:
++ free_irq(pxakbd->irq, pxakbd);
++out_idev:
++ input_free_device(input_dev);
++out_pxa:
++ kfree(pxakbd);
++out:
++ return ret;
++}
++
++static int pxakbd_remove(struct platform_device *pdev)
++{
++ struct pxakbd *pxakbd = platform_get_drvdata(pdev);
++ input_unregister_device(pxakbd->input);
++ platform_set_drvdata(pdev, NULL);
++ release_resource(pxakbd->res);
++ free_irq(pxakbd->irq, pxakbd);
++ kfree(pxakbd);
++ return 0;
++}
++
++static struct platform_driver pxakbd_driver = {
++ .probe = &pxakbd_probe,
++ .remove = &pxakbd_remove,
++ .driver = {
++ .name = "pxa-keyboard",
++ },
++};
++
++static int __devinit pxakbd_init(void)
++{
++ return platform_driver_register(&pxakbd_driver);
++}
++
++static void __exit pxakbd_exit(void)
++{
++ platform_driver_unregister(&pxakbd_driver);
++}
++
++module_init(pxakbd_init);
++module_exit(pxakbd_exit);
++
++MODULE_AUTHOR("Harald Welte <laforge@openezx.org>");
++MODULE_DESCRIPTION("Driver for Intel PXA27x keypad controller");
++MODULE_LICENSE("GPL");
+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-04-30 19:39:30.000000000 -0300
++++ linux-2.6.21/include/asm-arm/arch-pxa/pxa-regs.h 2007-04-30 19:42:34.000000000 -0300
+@@ -2165,6 +2165,11 @@
+ #define KPMK_MKP (0x1 << 31)
+ #define KPAS_SO (0x1 << 31)
+ #define KPASMKPx_SO (0x1 << 31)
++#define KPAS_RP (0x000000f0)
++#define KPAS_CP (0x0000000f)
++#define KPAS_MUKP (0x7c000000)
++#define KPAS_MUKP_ONE (0x04000000)
++#define KPAS_MUKP_NONE (0x00000000)
+
+ /*
+ * UHC: USB Host Controller (OHCI-like) register definitions
diff --git a/packages/linux/linux-ezx-2.6.21/touchscreen-fix-r0.patch b/packages/linux/linux-ezx-2.6.21/touchscreen-fix-r0.patch
new file mode 100644
index 0000000000..9f4ce980ad
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/touchscreen-fix-r0.patch
@@ -0,0 +1,21 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+Index: linux-2.6.21/drivers/input/touchscreen/pcap_ts.c
+===================================================================
+--- linux-2.6.21.orig/drivers/input/touchscreen/pcap_ts.c 2007-04-30 21:55:41.000000000 +0200
++++ linux-2.6.21/drivers/input/touchscreen/pcap_ts.c 2007-04-30 21:55:41.000000000 +0200
+@@ -128,10 +128,7 @@
+ if (ret < 0)
+ return ret;
+
+- if (tmp & 0x00400000)
+- return -EIO;
+-
+- if (pcap_ts->read_state == COORDINATE) {
++ if (pcap_ts->read_state == COORDINATE && !(tmp & 0x00400000)) {
+ pcap_ts->x = (tmp & SSP_PCAP_ADD1_VALUE_MASK);
+ pcap_ts->y = (tmp & SSP_PCAP_ADD2_VALUE_MASK)
+ >>SSP_PCAP_ADD2_VALUE_SHIFT;
diff --git a/packages/linux/linux-ezx-2.6.21/wyrm-ts.diff b/packages/linux/linux-ezx-2.6.21/wyrm-ts.diff
new file mode 100644
index 0000000000..6e424c626c
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/wyrm-ts.diff
@@ -0,0 +1,124 @@
+Ignores read interrupts after penUP events until a penDOWN interrupt arrives.
+Some other changes i dont remember exactly. :)
+Signed-off-by: Daniel Ribeiro <drwyrm@gmail.com>
+Index: linux-2.6.16/drivers/input/touchscreen/pcap_ts.c
+===================================================================
+--- linux-2.6.16.orig/drivers/input/touchscreen/pcap_ts.c 2007-03-09 21:26:25.000000000 -0300
++++ linux-2.6.16/drivers/input/touchscreen/pcap_ts.c 2007-03-09 21:26:42.000000000 -0300
+@@ -31,7 +31,7 @@
+
+ #include "../../misc/ezx/ssp_pcap.h"
+
+-#if 1
++#if 0
+ #define DEBUGP(x, args ...) printk(KERN_DEBUG "%s: " x, __FUNCTION__, ## args)
+ #else
+ #define DEBUGP(x, args ...)
+@@ -39,6 +39,7 @@
+
+ #define PRESSURE 1
+ #define COORDINATE 2
++#define STANDBY 3
+
+ struct pcap_ts {
+ int irq_xy;
+@@ -97,7 +98,7 @@
+ int ret;
+ u_int32_t tmp;
+ DEBUGP("start xy read in mode %s\n",
+- pcap_ts->read_state == COORDINATE ? "COORD" : "PRESS");
++ pcap_ts->read_state == COORDINATE ? "COORD" : (pcap_ts->read_state == PRESSURE ? "PRESS" : "STANDBY"));
+
+ ret = ezx_pcap_read(SSP_PCAP_ADJ_ADC1_REGISTER, &tmp);
+ if (ret < 0)
+@@ -122,7 +123,7 @@
+ u_int32_t tmp;
+
+ DEBUGP("get xy value in mode %s\n",
+- pcap_ts->read_state == COORDINATE ? "COORD" : "PRESS");
++ pcap_ts->read_state == COORDINATE ? "COORD" : (pcap_ts->read_state == PRESSURE ? "PRESS" : "STANDBY"));
+
+ ret = ezx_pcap_read(SSP_PCAP_ADJ_ADC2_REGISTER, &tmp);
+ if (ret < 0)
+@@ -145,7 +146,16 @@
+ static irqreturn_t pcap_ts_irq_xy(int irq, void *dev_id, struct pt_regs *regs)
+ {
+ struct pcap_ts *pcap_ts = dev_id;
++// DEBUGP("read_state: %d\n", pcap_ts->read_state);
+
++ /*
++ * Ignore further read interrupts after we set STANDBY - WM
++ */
++ if (pcap_ts->read_state == STANDBY)
++ {
++ DEBUGP("ignored\n");
++ return IRQ_HANDLED;
++ }
+ if (pcap_ts_get_xy_value(pcap_ts) < 0) {
+ printk("pcap_ts: error reading XY value\n");
+ return IRQ_HANDLED;
+@@ -160,33 +170,32 @@
+ pcap_ts->pressure <= PRESSURE_MIN ) &&
+ pcap_ts->pressure == pcap_ts->pressure_last) {
+ /* pen has been released */
++ DEBUGP("UP\n");
+ input_report_key(pcap_ts->input, BTN_TOUCH, 0);
+- input_sync(pcap_ts->input);
+-
+ input_report_abs(pcap_ts->input, ABS_PRESSURE, 0);
++ input_sync(pcap_ts->input);
+
+ pcap_ts->x = pcap_ts->y = 0;
+
++ /* no need for timer, we'll get interrupted with
++ * next touch down event */
++ del_timer(&pcap_ts->timer);
++
+ /* ask PCAP2 to interrupt us if touch event happens
+ * again */
+- pcap_ts->read_state = PRESSURE;
++ pcap_ts->read_state = STANDBY;
+ pcap_ts_mode(PCAP_TS_STANDBY_MODE);
+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 0);
+-
+- /* no need for timer, we'll get interrupted with
+- * next touch down event */
+- del_timer(&pcap_ts->timer);
+ } else {
+ /* pen has been touched down */
++ DEBUGP("DOWN\n");
++
+ input_report_key(pcap_ts->input, BTN_TOUCH, 1);
+ /* don't input_sync(), we don't know position yet */
+
+ if (pcap_ts->pressure == 0)
+ pcap_ts->pressure = pcap_ts->pressure_last;
+
+- input_report_abs(pcap_ts->input, ABS_PRESSURE,
+- pcap_ts->pressure);
+-
+ /* switch state machine into coordinate read mode */
+ pcap_ts->read_state = COORDINATE;
+ pcap_ts_mode(PCAP_TS_POSITION_XY_MEASUREMENT);
+@@ -196,18 +205,14 @@
+ /* we are in coordinate mode */
+ if (pcap_ts->x <= X_AXIS_MIN || pcap_ts->x >= X_AXIS_MAX ||
+ pcap_ts->y <= Y_AXIS_MIN || pcap_ts->y >= Y_AXIS_MAX) {
+- DEBUGP("invalid x/y coordinate position: PEN_UP?\n");
+-
++ DEBUGP("PEN_UP?\n");
+ pcap_ts->pressure = 0;
+-#if 0
+- input_report_key(pcap_ts->input, BTN_TOUCH, 0);
+- pcap_ts->x = pcap_ts->y = 0;
+-#endif
+ } else {
++ input_report_abs(pcap_ts->input, ABS_PRESSURE, pcap_ts->pressure);
+ input_report_abs(pcap_ts->input, ABS_X, pcap_ts->x);
+ input_report_abs(pcap_ts->input, ABS_Y, pcap_ts->y);
++ input_sync(pcap_ts->input);
+ }
+- input_sync(pcap_ts->input);
+
+ /* switch back to pressure read mode */
+ pcap_ts->read_state = PRESSURE;
diff --git a/packages/linux/linux-ezx_2.6.21.bb b/packages/linux/linux-ezx_2.6.21.bb
index 2b233e0c2e..35dc2dff5d 100644
--- a/packages/linux/linux-ezx_2.6.21.bb
+++ b/packages/linux/linux-ezx_2.6.21.bb
@@ -5,10 +5,7 @@ HOMEPAGE = "http://www.openezx.org"
LICENSE = "GPL"
DEPENDS += "quilt-native"
EZX = "ezx0"
-PR = "${EZX}-r1"
-
-DEFAULT_PREFERENCE = "-1"
-
+PR = "${EZX}-r4"
inherit kernel
@@ -18,15 +15,19 @@ RPSRC = "http://www.rpsys.net/openzaurus/patches/archive"
##############################################################
# source and patches
#
-SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
- \
+SRC_URI = " \
+ ${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
file://ezx-core.patch;patch=1 \
+ file://ezx-pm.patch;patch=1 \
file://ezx-pcap.patch;patch=1 \
file://ezx-mci.patch;patch=1 \
file://pxa27x-udc-support.2.patch;patch=1 \
file://ezx-emu.patch;patch=1 \
file://ezx-mtd-map.patch;patch=1 \
file://ezx-serial-bug-workaround.patch;patch=1 \
+ file://pxa-kbd.patch;patch=1 \
+ file://ezx-kbd.patch;patch=1 \
+ file://pcap-ts.patch;patch=1 \
file://mux_cli.patch;patch=1 \
file://mux-fix.patch;patch=1 \
file://mux-fix-init-errorpath.patch;patch=1 \
@@ -38,13 +39,10 @@ SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
file://mux-linux-2.6.21-fix.patch;patch=1 \
file://mux-ifdef-ezx-features.patch;patch=1 \
file://mux_debug.patch;patch=1 \
-
- \
-
- file://logo_linux_clut224.ppm \
- file://defconfig-a780 \
- file://defconfig-e680 \
- "
+ file://logo_linux_clut224.ppm \
+ file://defconfig-a780 \
+ file://defconfig-e680 \
+ "
S = "${WORKDIR}/linux-${PV}"
@@ -126,4 +124,4 @@ do_deploy() {
do_deploy[dirs] = "${S}"
-addtask deploy before do_package after do_install
+addtask deploy before do_populate_staging after do_package
diff --git a/packages/linux/linux-magicbox-2.6.18.6/squashfs-lzma-support.patch b/packages/linux/linux-magicbox-2.6.18.6/squashfs-lzma-support.patch
new file mode 100644
index 0000000000..212386e7bc
--- /dev/null
+++ b/packages/linux/linux-magicbox-2.6.18.6/squashfs-lzma-support.patch
@@ -0,0 +1,890 @@
+diff -Naur linux-2.6.18.orig/fs/squashfs/LzmaDecode.c linux-2.6.18/fs/squashfs/LzmaDecode.c
+--- linux-2.6.18.orig/fs/squashfs/LzmaDecode.c 1969-12-31 16:00:00.000000000 -0800
++++ linux-2.6.18/fs/squashfs/LzmaDecode.c 2006-10-14 03:56:43.000000000 -0700
+@@ -0,0 +1,663 @@
++/*
++ LzmaDecode.c
++ LZMA Decoder
++
++ LZMA SDK 4.05 Copyright (c) 1999-2004 Igor Pavlov (2004-08-25)
++ http://www.7-zip.org/
++
++ LZMA SDK is licensed under two licenses:
++ 1) GNU Lesser General Public License (GNU LGPL)
++ 2) Common Public License (CPL)
++ It means that you can select one of these two licenses and
++ follow rules of that license.
++
++ SPECIAL EXCEPTION:
++ Igor Pavlov, as the author of this code, expressly permits you to
++ statically or dynamically link your code (or bind by name) to the
++ interfaces of this file without subjecting your linked code to the
++ terms of the CPL or GNU LGPL. Any modifications or additions
++ to this file, however, are subject to the LGPL or CPL terms.
++*/
++
++#include "LzmaDecode.h"
++
++#ifndef Byte
++#define Byte unsigned char
++#endif
++
++#define kNumTopBits 24
++#define kTopValue ((UInt32)1 << kNumTopBits)
++
++#define kNumBitModelTotalBits 11
++#define kBitModelTotal (1 << kNumBitModelTotalBits)
++#define kNumMoveBits 5
++
++typedef struct _CRangeDecoder
++{
++ Byte *Buffer;
++ Byte *BufferLim;
++ UInt32 Range;
++ UInt32 Code;
++ #ifdef _LZMA_IN_CB
++ ILzmaInCallback *InCallback;
++ int Result;
++ #endif
++ int ExtraBytes;
++} CRangeDecoder;
++
++Byte RangeDecoderReadByte(CRangeDecoder *rd)
++{
++ if (rd->Buffer == rd->BufferLim)
++ {
++ #ifdef _LZMA_IN_CB
++ UInt32 size;
++ rd->Result = rd->InCallback->Read(rd->InCallback, &rd->Buffer, &size);
++ rd->BufferLim = rd->Buffer + size;
++ if (size == 0)
++ #endif
++ {
++ rd->ExtraBytes = 1;
++ return 0xFF;
++ }
++ }
++ return (*rd->Buffer++);
++}
++
++/* #define ReadByte (*rd->Buffer++) */
++#define ReadByte (RangeDecoderReadByte(rd))
++
++void RangeDecoderInit(CRangeDecoder *rd,
++ #ifdef _LZMA_IN_CB
++ ILzmaInCallback *inCallback
++ #else
++ Byte *stream, UInt32 bufferSize
++ #endif
++ )
++{
++ int i;
++ #ifdef _LZMA_IN_CB
++ rd->InCallback = inCallback;
++ rd->Buffer = rd->BufferLim = 0;
++ #else
++ rd->Buffer = stream;
++ rd->BufferLim = stream + bufferSize;
++ #endif
++ rd->ExtraBytes = 0;
++ rd->Code = 0;
++ rd->Range = (0xFFFFFFFF);
++ for(i = 0; i < 5; i++)
++ rd->Code = (rd->Code << 8) | ReadByte;
++}
++
++#define RC_INIT_VAR UInt32 range = rd->Range; UInt32 code = rd->Code;
++#define RC_FLUSH_VAR rd->Range = range; rd->Code = code;
++#define RC_NORMALIZE if (range < kTopValue) { range <<= 8; code = (code << 8) | ReadByte; }
++
++UInt32 RangeDecoderDecodeDirectBits(CRangeDecoder *rd, int numTotalBits)
++{
++ RC_INIT_VAR
++ UInt32 result = 0;
++ int i;
++ for (i = numTotalBits; i > 0; i--)
++ {
++ /* UInt32 t; */
++ range >>= 1;
++
++ result <<= 1;
++ if (code >= range)
++ {
++ code -= range;
++ result |= 1;
++ }
++ /*
++ t = (code - range) >> 31;
++ t &= 1;
++ code -= range & (t - 1);
++ result = (result + result) | (1 - t);
++ */
++ RC_NORMALIZE
++ }
++ RC_FLUSH_VAR
++ return result;
++}
++
++int RangeDecoderBitDecode(CProb *prob, CRangeDecoder *rd)
++{
++ UInt32 bound = (rd->Range >> kNumBitModelTotalBits) * *prob;
++ if (rd->Code < bound)
++ {
++ rd->Range = bound;
++ *prob += (kBitModelTotal - *prob) >> kNumMoveBits;
++ if (rd->Range < kTopValue)
++ {
++ rd->Code = (rd->Code << 8) | ReadByte;
++ rd->Range <<= 8;
++ }
++ return 0;
++ }
++ else
++ {
++ rd->Range -= bound;
++ rd->Code -= bound;
++ *prob -= (*prob) >> kNumMoveBits;
++ if (rd->Range < kTopValue)
++ {
++ rd->Code = (rd->Code << 8) | ReadByte;
++ rd->Range <<= 8;
++ }
++ return 1;
++ }
++}
++
++#define RC_GET_BIT2(prob, mi, A0, A1) \
++ UInt32 bound = (range >> kNumBitModelTotalBits) * *prob; \
++ if (code < bound) \
++ { A0; range = bound; *prob += (kBitModelTotal - *prob) >> kNumMoveBits; mi <<= 1; } \
++ else \
++ { A1; range -= bound; code -= bound; *prob -= (*prob) >> kNumMoveBits; mi = (mi + mi) + 1; } \
++ RC_NORMALIZE
++
++#define RC_GET_BIT(prob, mi) RC_GET_BIT2(prob, mi, ; , ;)
++
++int RangeDecoderBitTreeDecode(CProb *probs, int numLevels, CRangeDecoder *rd)
++{
++ int mi = 1;
++ int i;
++ #ifdef _LZMA_LOC_OPT
++ RC_INIT_VAR
++ #endif
++ for(i = numLevels; i > 0; i--)
++ {
++ #ifdef _LZMA_LOC_OPT
++ CProb *prob = probs + mi;
++ RC_GET_BIT(prob, mi)
++ #else
++ mi = (mi + mi) + RangeDecoderBitDecode(probs + mi, rd);
++ #endif
++ }
++ #ifdef _LZMA_LOC_OPT
++ RC_FLUSH_VAR
++ #endif
++ return mi - (1 << numLevels);
++}
++
++int RangeDecoderReverseBitTreeDecode(CProb *probs, int numLevels, CRangeDecoder *rd)
++{
++ int mi = 1;
++ int i;
++ int symbol = 0;
++ #ifdef _LZMA_LOC_OPT
++ RC_INIT_VAR
++ #endif
++ for(i = 0; i < numLevels; i++)
++ {
++ #ifdef _LZMA_LOC_OPT
++ CProb *prob = probs + mi;
++ RC_GET_BIT2(prob, mi, ; , symbol |= (1 << i))
++ #else
++ int bit = RangeDecoderBitDecode(probs + mi, rd);
++ mi = mi + mi + bit;
++ symbol |= (bit << i);
++ #endif
++ }
++ #ifdef _LZMA_LOC_OPT
++ RC_FLUSH_VAR
++ #endif
++ return symbol;
++}
++
++Byte LzmaLiteralDecode(CProb *probs, CRangeDecoder *rd)
++{
++ int symbol = 1;
++ #ifdef _LZMA_LOC_OPT
++ RC_INIT_VAR
++ #endif
++ do
++ {
++ #ifdef _LZMA_LOC_OPT
++ CProb *prob = probs + symbol;
++ RC_GET_BIT(prob, symbol)
++ #else
++ symbol = (symbol + symbol) | RangeDecoderBitDecode(probs + symbol, rd);
++ #endif
++ }
++ while (symbol < 0x100);
++ #ifdef _LZMA_LOC_OPT
++ RC_FLUSH_VAR
++ #endif
++ return symbol;
++}
++
++Byte LzmaLiteralDecodeMatch(CProb *probs, CRangeDecoder *rd, Byte matchByte)
++{
++ int symbol = 1;
++ #ifdef _LZMA_LOC_OPT
++ RC_INIT_VAR
++ #endif
++ do
++ {
++ int bit;
++ int matchBit = (matchByte >> 7) & 1;
++ matchByte <<= 1;
++ #ifdef _LZMA_LOC_OPT
++ {
++ CProb *prob = probs + ((1 + matchBit) << 8) + symbol;
++ RC_GET_BIT2(prob, symbol, bit = 0, bit = 1)
++ }
++ #else
++ bit = RangeDecoderBitDecode(probs + ((1 + matchBit) << 8) + symbol, rd);
++ symbol = (symbol << 1) | bit;
++ #endif
++ if (matchBit != bit)
++ {
++ while (symbol < 0x100)
++ {
++ #ifdef _LZMA_LOC_OPT
++ CProb *prob = probs + symbol;
++ RC_GET_BIT(prob, symbol)
++ #else
++ symbol = (symbol + symbol) | RangeDecoderBitDecode(probs + symbol, rd);
++ #endif
++ }
++ break;
++ }
++ }
++ while (symbol < 0x100);
++ #ifdef _LZMA_LOC_OPT
++ RC_FLUSH_VAR
++ #endif
++ return symbol;
++}
++
++#define kNumPosBitsMax 4
++#define kNumPosStatesMax (1 << kNumPosBitsMax)
++
++#define kLenNumLowBits 3
++#define kLenNumLowSymbols (1 << kLenNumLowBits)
++#define kLenNumMidBits 3
++#define kLenNumMidSymbols (1 << kLenNumMidBits)
++#define kLenNumHighBits 8
++#define kLenNumHighSymbols (1 << kLenNumHighBits)
++
++#define LenChoice 0
++#define LenChoice2 (LenChoice + 1)
++#define LenLow (LenChoice2 + 1)
++#define LenMid (LenLow + (kNumPosStatesMax << kLenNumLowBits))
++#define LenHigh (LenMid + (kNumPosStatesMax << kLenNumMidBits))
++#define kNumLenProbs (LenHigh + kLenNumHighSymbols)
++
++int LzmaLenDecode(CProb *p, CRangeDecoder *rd, int posState)
++{
++ if(RangeDecoderBitDecode(p + LenChoice, rd) == 0)
++ return RangeDecoderBitTreeDecode(p + LenLow +
++ (posState << kLenNumLowBits), kLenNumLowBits, rd);
++ if(RangeDecoderBitDecode(p + LenChoice2, rd) == 0)
++ return kLenNumLowSymbols + RangeDecoderBitTreeDecode(p + LenMid +
++ (posState << kLenNumMidBits), kLenNumMidBits, rd);
++ return kLenNumLowSymbols + kLenNumMidSymbols +
++ RangeDecoderBitTreeDecode(p + LenHigh, kLenNumHighBits, rd);
++}
++
++#define kNumStates 12
++
++#define kStartPosModelIndex 4
++#define kEndPosModelIndex 14
++#define kNumFullDistances (1 << (kEndPosModelIndex >> 1))
++
++#define kNumPosSlotBits 6
++#define kNumLenToPosStates 4
++
++#define kNumAlignBits 4
++#define kAlignTableSize (1 << kNumAlignBits)
++
++#define kMatchMinLen 2
++
++#define IsMatch 0
++#define IsRep (IsMatch + (kNumStates << kNumPosBitsMax))
++#define IsRepG0 (IsRep + kNumStates)
++#define IsRepG1 (IsRepG0 + kNumStates)
++#define IsRepG2 (IsRepG1 + kNumStates)
++#define IsRep0Long (IsRepG2 + kNumStates)
++#define PosSlot (IsRep0Long + (kNumStates << kNumPosBitsMax))
++#define SpecPos (PosSlot + (kNumLenToPosStates << kNumPosSlotBits))
++#define Align (SpecPos + kNumFullDistances - kEndPosModelIndex)
++#define LenCoder (Align + kAlignTableSize)
++#define RepLenCoder (LenCoder + kNumLenProbs)
++#define Literal (RepLenCoder + kNumLenProbs)
++
++#if Literal != LZMA_BASE_SIZE
++StopCompilingDueBUG
++#endif
++
++#ifdef _LZMA_OUT_READ
++
++typedef struct _LzmaVarState
++{
++ CRangeDecoder RangeDecoder;
++ Byte *Dictionary;
++ UInt32 DictionarySize;
++ UInt32 DictionaryPos;
++ UInt32 GlobalPos;
++ UInt32 Reps[4];
++ int lc;
++ int lp;
++ int pb;
++ int State;
++ int PreviousIsMatch;
++ int RemainLen;
++} LzmaVarState;
++
++int LzmaDecoderInit(
++ unsigned char *buffer, UInt32 bufferSize,
++ int lc, int lp, int pb,
++ unsigned char *dictionary, UInt32 dictionarySize,
++ #ifdef _LZMA_IN_CB
++ ILzmaInCallback *inCallback
++ #else
++ unsigned char *inStream, UInt32 inSize
++ #endif
++ )
++{
++ LzmaVarState *vs = (LzmaVarState *)buffer;
++ CProb *p = (CProb *)(buffer + sizeof(LzmaVarState));
++ UInt32 numProbs = Literal + ((UInt32)LZMA_LIT_SIZE << (lc + lp));
++ UInt32 i;
++ if (bufferSize < numProbs * sizeof(CProb) + sizeof(LzmaVarState))
++ return LZMA_RESULT_NOT_ENOUGH_MEM;
++ vs->Dictionary = dictionary;
++ vs->DictionarySize = dictionarySize;
++ vs->DictionaryPos = 0;
++ vs->GlobalPos = 0;
++ vs->Reps[0] = vs->Reps[1] = vs->Reps[2] = vs->Reps[3] = 1;
++ vs->lc = lc;
++ vs->lp = lp;
++ vs->pb = pb;
++ vs->State = 0;
++ vs->PreviousIsMatch = 0;
++ vs->RemainLen = 0;
++ dictionary[dictionarySize - 1] = 0;
++ for (i = 0; i < numProbs; i++)
++ p[i] = kBitModelTotal >> 1;
++ RangeDecoderInit(&vs->RangeDecoder,
++ #ifdef _LZMA_IN_CB
++ inCallback
++ #else
++ inStream, inSize
++ #endif
++ );
++ return LZMA_RESULT_OK;
++}
++
++int LzmaDecode(unsigned char *buffer,
++ unsigned char *outStream, UInt32 outSize,
++ UInt32 *outSizeProcessed)
++{
++ LzmaVarState *vs = (LzmaVarState *)buffer;
++ CProb *p = (CProb *)(buffer + sizeof(LzmaVarState));
++ CRangeDecoder rd = vs->RangeDecoder;
++ int state = vs->State;
++ int previousIsMatch = vs->PreviousIsMatch;
++ Byte previousByte;
++ UInt32 rep0 = vs->Reps[0], rep1 = vs->Reps[1], rep2 = vs->Reps[2], rep3 = vs->Reps[3];
++ UInt32 nowPos = 0;
++ UInt32 posStateMask = (1 << (vs->pb)) - 1;
++ UInt32 literalPosMask = (1 << (vs->lp)) - 1;
++ int lc = vs->lc;
++ int len = vs->RemainLen;
++ UInt32 globalPos = vs->GlobalPos;
++
++ Byte *dictionary = vs->Dictionary;
++ UInt32 dictionarySize = vs->DictionarySize;
++ UInt32 dictionaryPos = vs->DictionaryPos;
++
++ if (len == -1)
++ {
++ *outSizeProcessed = 0;
++ return LZMA_RESULT_OK;
++ }
++
++ while(len > 0 && nowPos < outSize)
++ {
++ UInt32 pos = dictionaryPos - rep0;
++ if (pos >= dictionarySize)
++ pos += dictionarySize;
++ outStream[nowPos++] = dictionary[dictionaryPos] = dictionary[pos];
++ if (++dictionaryPos == dictionarySize)
++ dictionaryPos = 0;
++ len--;
++ }
++ if (dictionaryPos == 0)
++ previousByte = dictionary[dictionarySize - 1];
++ else
++ previousByte = dictionary[dictionaryPos - 1];
++#else
++
++int LzmaDecode(
++ Byte *buffer, UInt32 bufferSize,
++ int lc, int lp, int pb,
++ #ifdef _LZMA_IN_CB
++ ILzmaInCallback *inCallback,
++ #else
++ unsigned char *inStream, UInt32 inSize,
++ #endif
++ unsigned char *outStream, UInt32 outSize,
++ UInt32 *outSizeProcessed)
++{
++ UInt32 numProbs = Literal + ((UInt32)LZMA_LIT_SIZE << (lc + lp));
++ CProb *p = (CProb *)buffer;
++ CRangeDecoder rd;
++ UInt32 i;
++ int state = 0;
++ int previousIsMatch = 0;
++ Byte previousByte = 0;
++ UInt32 rep0 = 1, rep1 = 1, rep2 = 1, rep3 = 1;
++ UInt32 nowPos = 0;
++ UInt32 posStateMask = (1 << pb) - 1;
++ UInt32 literalPosMask = (1 << lp) - 1;
++ int len = 0;
++ if (bufferSize < numProbs * sizeof(CProb))
++ return LZMA_RESULT_NOT_ENOUGH_MEM;
++ for (i = 0; i < numProbs; i++)
++ p[i] = kBitModelTotal >> 1;
++ RangeDecoderInit(&rd,
++ #ifdef _LZMA_IN_CB
++ inCallback
++ #else
++ inStream, inSize
++ #endif
++ );
++#endif
++
++ *outSizeProcessed = 0;
++ while(nowPos < outSize)
++ {
++ int posState = (int)(
++ (nowPos
++ #ifdef _LZMA_OUT_READ
++ + globalPos
++ #endif
++ )
++ & posStateMask);
++ #ifdef _LZMA_IN_CB
++ if (rd.Result != LZMA_RESULT_OK)
++ return rd.Result;
++ #endif
++ if (rd.ExtraBytes != 0)
++ return LZMA_RESULT_DATA_ERROR;
++ if (RangeDecoderBitDecode(p + IsMatch + (state << kNumPosBitsMax) + posState, &rd) == 0)
++ {
++ CProb *probs = p + Literal + (LZMA_LIT_SIZE *
++ (((
++ (nowPos
++ #ifdef _LZMA_OUT_READ
++ + globalPos
++ #endif
++ )
++ & literalPosMask) << lc) + (previousByte >> (8 - lc))));
++
++ if (state < 4) state = 0;
++ else if (state < 10) state -= 3;
++ else state -= 6;
++ if (previousIsMatch)
++ {
++ Byte matchByte;
++ #ifdef _LZMA_OUT_READ
++ UInt32 pos = dictionaryPos - rep0;
++ if (pos >= dictionarySize)
++ pos += dictionarySize;
++ matchByte = dictionary[pos];
++ #else
++ matchByte = outStream[nowPos - rep0];
++ #endif
++ previousByte = LzmaLiteralDecodeMatch(probs, &rd, matchByte);
++ previousIsMatch = 0;
++ }
++ else
++ previousByte = LzmaLiteralDecode(probs, &rd);
++ outStream[nowPos++] = previousByte;
++ #ifdef _LZMA_OUT_READ
++ dictionary[dictionaryPos] = previousByte;
++ if (++dictionaryPos == dictionarySize)
++ dictionaryPos = 0;
++ #endif
++ }
++ else
++ {
++ previousIsMatch = 1;
++ if (RangeDecoderBitDecode(p + IsRep + state, &rd) == 1)
++ {
++ if (RangeDecoderBitDecode(p + IsRepG0 + state, &rd) == 0)
++ {
++ if (RangeDecoderBitDecode(p + IsRep0Long + (state << kNumPosBitsMax) + posState, &rd) == 0)
++ {
++ #ifdef _LZMA_OUT_READ
++ UInt32 pos;
++ #endif
++ if (
++ (nowPos
++ #ifdef _LZMA_OUT_READ
++ + globalPos
++ #endif
++ )
++ == 0)
++ return LZMA_RESULT_DATA_ERROR;
++ state = state < 7 ? 9 : 11;
++ #ifdef _LZMA_OUT_READ
++ pos = dictionaryPos - rep0;
++ if (pos >= dictionarySize)
++ pos += dictionarySize;
++ previousByte = dictionary[pos];
++ dictionary[dictionaryPos] = previousByte;
++ if (++dictionaryPos == dictionarySize)
++ dictionaryPos = 0;
++ #else
++ previousByte = outStream[nowPos - rep0];
++ #endif
++ outStream[nowPos++] = previousByte;
++ continue;
++ }
++ }
++ else
++ {
++ UInt32 distance;
++ if(RangeDecoderBitDecode(p + IsRepG1 + state, &rd) == 0)
++ distance = rep1;
++ else
++ {
++ if(RangeDecoderBitDecode(p + IsRepG2 + state, &rd) == 0)
++ distance = rep2;
++ else
++ {
++ distance = rep3;
++ rep3 = rep2;
++ }
++ rep2 = rep1;
++ }
++ rep1 = rep0;
++ rep0 = distance;
++ }
++ len = LzmaLenDecode(p + RepLenCoder, &rd, posState);
++ state = state < 7 ? 8 : 11;
++ }
++ else
++ {
++ int posSlot;
++ rep3 = rep2;
++ rep2 = rep1;
++ rep1 = rep0;
++ state = state < 7 ? 7 : 10;
++ len = LzmaLenDecode(p + LenCoder, &rd, posState);
++ posSlot = RangeDecoderBitTreeDecode(p + PosSlot +
++ ((len < kNumLenToPosStates ? len : kNumLenToPosStates - 1) <<
++ kNumPosSlotBits), kNumPosSlotBits, &rd);
++ if (posSlot >= kStartPosModelIndex)
++ {
++ int numDirectBits = ((posSlot >> 1) - 1);
++ rep0 = ((2 | ((UInt32)posSlot & 1)) << numDirectBits);
++ if (posSlot < kEndPosModelIndex)
++ {
++ rep0 += RangeDecoderReverseBitTreeDecode(
++ p + SpecPos + rep0 - posSlot - 1, numDirectBits, &rd);
++ }
++ else
++ {
++ rep0 += RangeDecoderDecodeDirectBits(&rd,
++ numDirectBits - kNumAlignBits) << kNumAlignBits;
++ rep0 += RangeDecoderReverseBitTreeDecode(p + Align, kNumAlignBits, &rd);
++ }
++ }
++ else
++ rep0 = posSlot;
++ rep0++;
++ }
++ if (rep0 == (UInt32)(0))
++ {
++ /* it's for stream version */
++ len = -1;
++ break;
++ }
++ if (rep0 > nowPos
++ #ifdef _LZMA_OUT_READ
++ + globalPos
++ #endif
++ )
++ {
++ return LZMA_RESULT_DATA_ERROR;
++ }
++ len += kMatchMinLen;
++ do
++ {
++ #ifdef _LZMA_OUT_READ
++ UInt32 pos = dictionaryPos - rep0;
++ if (pos >= dictionarySize)
++ pos += dictionarySize;
++ previousByte = dictionary[pos];
++ dictionary[dictionaryPos] = previousByte;
++ if (++dictionaryPos == dictionarySize)
++ dictionaryPos = 0;
++ #else
++ previousByte = outStream[nowPos - rep0];
++ #endif
++ outStream[nowPos++] = previousByte;
++ len--;
++ }
++ while(len > 0 && nowPos < outSize);
++ }
++ }
++
++ #ifdef _LZMA_OUT_READ
++ vs->RangeDecoder = rd;
++ vs->DictionaryPos = dictionaryPos;
++ vs->GlobalPos = globalPos + nowPos;
++ vs->Reps[0] = rep0;
++ vs->Reps[1] = rep1;
++ vs->Reps[2] = rep2;
++ vs->Reps[3] = rep3;
++ vs->State = state;
++ vs->PreviousIsMatch = previousIsMatch;
++ vs->RemainLen = len;
++ #endif
++
++ *outSizeProcessed = nowPos;
++ return LZMA_RESULT_OK;
++}
+diff -Naur linux-2.6.18.orig/fs/squashfs/LzmaDecode.h linux-2.6.18/fs/squashfs/LzmaDecode.h
+--- linux-2.6.18.orig/fs/squashfs/LzmaDecode.h 1969-12-31 16:00:00.000000000 -0800
++++ linux-2.6.18/fs/squashfs/LzmaDecode.h 2006-10-14 03:56:43.000000000 -0700
+@@ -0,0 +1,100 @@
++/*
++ LzmaDecode.h
++ LZMA Decoder interface
++
++ LZMA SDK 4.05 Copyright (c) 1999-2004 Igor Pavlov (2004-08-25)
++ http://www.7-zip.org/
++
++ LZMA SDK is licensed under two licenses:
++ 1) GNU Lesser General Public License (GNU LGPL)
++ 2) Common Public License (CPL)
++ It means that you can select one of these two licenses and
++ follow rules of that license.
++
++ SPECIAL EXCEPTION:
++ Igor Pavlov, as the author of this code, expressly permits you to
++ statically or dynamically link your code (or bind by name) to the
++ interfaces of this file without subjecting your linked code to the
++ terms of the CPL or GNU LGPL. Any modifications or additions
++ to this file, however, are subject to the LGPL or CPL terms.
++*/
++
++#ifndef __LZMADECODE_H
++#define __LZMADECODE_H
++
++/* #define _LZMA_IN_CB */
++/* Use callback for input data */
++
++/* #define _LZMA_OUT_READ */
++/* Use read function for output data */
++
++/* #define _LZMA_PROB32 */
++/* It can increase speed on some 32-bit CPUs,
++ but memory usage will be doubled in that case */
++
++/* #define _LZMA_LOC_OPT */
++/* Enable local speed optimizations inside code */
++
++#ifndef UInt32
++#ifdef _LZMA_UINT32_IS_ULONG
++#define UInt32 unsigned long
++#else
++#define UInt32 unsigned int
++#endif
++#endif
++
++#ifdef _LZMA_PROB32
++#define CProb UInt32
++#else
++#define CProb unsigned short
++#endif
++
++#define LZMA_RESULT_OK 0
++#define LZMA_RESULT_DATA_ERROR 1
++#define LZMA_RESULT_NOT_ENOUGH_MEM 2
++
++#ifdef _LZMA_IN_CB
++typedef struct _ILzmaInCallback
++{
++ int (*Read)(void *object, unsigned char **buffer, UInt32 *bufferSize);
++} ILzmaInCallback;
++#endif
++
++#define LZMA_BASE_SIZE 1846
++#define LZMA_LIT_SIZE 768
++
++/*
++bufferSize = (LZMA_BASE_SIZE + (LZMA_LIT_SIZE << (lc + lp)))* sizeof(CProb)
++bufferSize += 100 in case of _LZMA_OUT_READ
++by default CProb is unsigned short,
++but if specify _LZMA_PROB_32, CProb will be UInt32(unsigned int)
++*/
++
++#ifdef _LZMA_OUT_READ
++int LzmaDecoderInit(
++ unsigned char *buffer, UInt32 bufferSize,
++ int lc, int lp, int pb,
++ unsigned char *dictionary, UInt32 dictionarySize,
++ #ifdef _LZMA_IN_CB
++ ILzmaInCallback *inCallback
++ #else
++ unsigned char *inStream, UInt32 inSize
++ #endif
++);
++#endif
++
++int LzmaDecode(
++ unsigned char *buffer,
++ #ifndef _LZMA_OUT_READ
++ UInt32 bufferSize,
++ int lc, int lp, int pb,
++ #ifdef _LZMA_IN_CB
++ ILzmaInCallback *inCallback,
++ #else
++ unsigned char *inStream, UInt32 inSize,
++ #endif
++ #endif
++ unsigned char *outStream, UInt32 outSize,
++ UInt32 *outSizeProcessed);
++
++#endif
+diff -Naur linux-2.6.18.orig/fs/squashfs/inode.c linux-2.6.18/fs/squashfs/inode.c
+--- linux-2.6.18.orig/fs/squashfs/inode.c 2006-10-14 03:56:28.000000000 -0700
++++ linux-2.6.18/fs/squashfs/inode.c 2006-10-14 03:56:43.000000000 -0700
+@@ -4,6 +4,9 @@
+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
+ * Phillip Lougher <phillip@lougher.org.uk>
+ *
++ * LZMA decompressor support added by Oleg I. Vdovikin
++ * Copyright (c) 2005 Oleg I.Vdovikin <oleg@cs.msu.su>
++ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2,
+@@ -21,6 +24,7 @@
+ * inode.c
+ */
+
++#define SQUASHFS_LZMA
+ #include <linux/types.h>
+ #include <linux/squashfs_fs.h>
+ #include <linux/module.h>
+@@ -44,6 +48,19 @@
+
+ #include "squashfs.h"
+
++#ifdef SQUASHFS_LZMA
++#include "LzmaDecode.h"
++
++/* default LZMA settings, should be in sync with mksquashfs */
++#define LZMA_LC 3
++#define LZMA_LP 0
++#define LZMA_PB 2
++
++#define LZMA_WORKSPACE_SIZE ((LZMA_BASE_SIZE + \
++ (LZMA_LIT_SIZE << (LZMA_LC + LZMA_LP))) * sizeof(CProb))
++
++#endif
++
+ static void squashfs_put_super(struct super_block *);
+ static int squashfs_statfs(struct dentry *, struct kstatfs *);
+ static int squashfs_symlink_readpage(struct file *file, struct page *page);
+@@ -63,6 +80,10 @@
+ static int squashfs_get_sb(struct file_system_type *, int, const char *, void *,
+ struct vfsmount *);
+
++#ifdef SQUASHFS_LZMA
++static unsigned char lzma_workspace[LZMA_WORKSPACE_SIZE];
++#endif
++
+ static struct file_system_type squashfs_fs_type = {
+ .owner = THIS_MODULE,
+ .name = "squashfs",
+@@ -246,6 +267,15 @@
+ if (compressed) {
+ int zlib_err;
+
++#ifdef SQUASHFS_LZMA
++ if ((zlib_err = LzmaDecode(lzma_workspace,
++ LZMA_WORKSPACE_SIZE, LZMA_LC, LZMA_LP, LZMA_PB,
++ c_buffer, c_byte, buffer, msblk->read_size, &bytes)) != LZMA_RESULT_OK)
++ {
++ ERROR("lzma returned unexpected result 0x%x\n", zlib_err);
++ bytes = 0;
++ }
++#else
+ msblk->stream.next_in = c_buffer;
+ msblk->stream.avail_in = c_byte;
+ msblk->stream.next_out = buffer;
+@@ -260,7 +290,7 @@
+ bytes = 0;
+ } else
+ bytes = msblk->stream.total_out;
+-
++#endif
+ up(&msblk->read_data_mutex);
+ }
+
+@@ -964,10 +994,12 @@
+ }
+ memset(s->s_fs_info, 0, sizeof(struct squashfs_sb_info));
+ msblk = s->s_fs_info;
++#ifndef SQUASHFS_LZMA
+ if (!(msblk->stream.workspace = vmalloc(zlib_inflate_workspacesize()))) {
+ ERROR("Failed to allocate zlib workspace\n");
+ goto failure;
+ }
++#endif
+ sblk = &msblk->sblk;
+
+ msblk->devblksize = sb_min_blocksize(s, BLOCK_SIZE);
+@@ -1140,7 +1172,9 @@
+ kfree(msblk->read_data);
+ kfree(msblk->block_cache);
+ kfree(msblk->fragment_index_2);
++#ifndef SQUASHFS_LZMA
+ vfree(msblk->stream.workspace);
++#endif
+ kfree(s->s_fs_info);
+ s->s_fs_info = NULL;
+ return -EINVAL;
+@@ -2060,7 +2094,9 @@
+ kfree(sbi->fragment_index);
+ kfree(sbi->fragment_index_2);
+ kfree(sbi->meta_index);
++#ifndef SQUASHFS_LZMA
+ vfree(sbi->stream.workspace);
++#endif
+ kfree(s->s_fs_info);
+ s->s_fs_info = NULL;
+ }
+
+diff -Naur linux-2.6.18.orig/fs/squashfs/Makefile linux-2.6.18/fs/squashfs/Makefile
+--- linux-2.6.18.orig/fs/squashfs/Makefile 2006-10-14 03:56:28.000000000 -0700
++++ linux-2.6.18/fs/squashfs/Makefile 2006-10-14 03:56:43.000000000 -0700
+@@ -5,3 +5,4 @@
+ obj-$(CONFIG_SQUASHFS) += squashfs.o
+ squashfs-y += inode.o
+ squashfs-y += squashfs2_0.o
++squashfs-y += LzmaDecode.o
diff --git a/packages/linux/linux-magicbox_2.6.18.6.bb b/packages/linux/linux-magicbox_2.6.18.6.bb
index 5e4dca3077..e306c54e7b 100644
--- a/packages/linux/linux-magicbox_2.6.18.6.bb
+++ b/packages/linux/linux-magicbox_2.6.18.6.bb
@@ -1,8 +1,8 @@
SECTION = "kernel"
DESCRIPTION = "Linux kernel for Magicbox ver 1.1 and 2.0 router boards"
LICENSE = "GPL"
-PR = "r1"
-#DEPENDS = "u-boot"
+PR = "r2"
+DEPENDS = "u-boot"
KERNEL_CCSUFFIX = "-3.4.4"
@@ -13,6 +13,7 @@ SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
file://010-load-ramdisk-even-if-rootdev-equals-ramdisk.patch;patch=1 \
file://magicbox2-ide-cf_2.6.18.patch;patch=1 \
file://squashfs3.1-patch;patch=1 \
+ file://squashfs-lzma-support.patch;patch=1 \
file://kernel-2.6.18-layer7-2.6.patch;patch=1 \
file://config-2.6.18-magicbox2\
"
diff --git a/packages/net-snmp/net-snmp_5.1.2.bb b/packages/net-snmp/net-snmp_5.1.2.bb
index 302e7eed52..330e13e0ef 100644
--- a/packages/net-snmp/net-snmp_5.1.2.bb
+++ b/packages/net-snmp/net-snmp_5.1.2.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "Various tools relating to the Simple Network Management Protocol"
HOMEPAGE = "http://www.net-snmp.org/"
LICENSE = "BSD"
DEPENDS = "openssl"
-PR = "r2"
+PR = "r3"
SRC_URI = "${SOURCEFORGE_MIRROR}/net-snmp/net-snmp-${PV}.tar.gz \
file://uclibc-fix.patch;patch=1 \
@@ -13,7 +13,7 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/net-snmp/net-snmp-${PV}.tar.gz \
inherit autotools
PARALLEL_MAKE = ""
-EXTRA_OECONF = "--enable-shared --disable-manuals"
+EXTRA_OECONF = "--enable-shared --disable-manuals --with-defaults"
EXTRA_OEMAKE = "INSTALL_PREFIX=${D}"
do_configure() {
diff --git a/packages/perl/libalgorithm-diff-perl_1.1902.bb b/packages/perl/libalgorithm-diff-perl_1.1902.bb
index 1021b4c77c..bd5c12f08c 100644
--- a/packages/perl/libalgorithm-diff-perl_1.1902.bb
+++ b/packages/perl/libalgorithm-diff-perl_1.1902.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "Artistic|GPL"
RDEPENDS += "perl-module-exporter perl-module-strict perl-module-vars \
perl-module-strict perl-module-vars"
-PR = "r0"
+PR = "r1"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/T/TY/TYEMQ/Algorithm-Diff-${PV}.tar.gz"
diff --git a/packages/perl/libarchive-tar-perl_1.30.bb b/packages/perl/libarchive-tar-perl_1.30.bb
index b58506688b..978879be2c 100644
--- a/packages/perl/libarchive-tar-perl_1.30.bb
+++ b/packages/perl/libarchive-tar-perl_1.30.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "Artistic|GPL"
DEPENDS += "libio-zlib-perl-native"
RDEPENDS += "libio-zlib-perl"
-PR = "r1"
+PR = "r2"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/K/KA/KANE/Archive-Tar-${PV}.tar.gz"
diff --git a/packages/perl/libcache-cache-perl_1.05.bb b/packages/perl/libcache-cache-perl_1.05.bb
index c90e9fed53..d33edc595e 100644
--- a/packages/perl/libcache-cache-perl_1.05.bb
+++ b/packages/perl/libcache-cache-perl_1.05.bb
@@ -4,7 +4,7 @@ LICENSE = "Artistic|GPL"
DEPENDS = "libdigest-sha1-perl-native liberror-perl-native \
libipc-sharelite-perl-native"
RDEPENDS = "libdigest-sha1-perl liberror-perl libipc-sharelite-perl"
-PR = "r3"
+PR = "r4"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/D/DC/DCLINTON/Cache-Cache-${PV}.tar.gz"
diff --git a/packages/perl/libclass-container-perl_0.12.bb b/packages/perl/libclass-container-perl_0.12.bb
index 6395cfc890..5bb8968225 100644
--- a/packages/perl/libclass-container-perl_0.12.bb
+++ b/packages/perl/libclass-container-perl_0.12.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "Artistic|GPL"
DEPENDS = "libparams-validate-perl-native"
RDEPENDS = "libparams-validate-perl"
-PR = "r3"
+PR = "r4"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/K/KW/KWILLIAMS/Class-Container-${PV}.tar.gz"
diff --git a/packages/perl/libclass-data-inheritable-perl_0.06.bb b/packages/perl/libclass-data-inheritable-perl_0.06.bb
index 71a1f76526..a1f666ad7e 100644
--- a/packages/perl/libclass-data-inheritable-perl_0.06.bb
+++ b/packages/perl/libclass-data-inheritable-perl_0.06.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Class::Data::Inheritable - Inheritable, overridable class data"
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r3"
+PR = "r4"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/T/TM/TMTM/Class-Data-Inheritable-${PV}.tar.gz"
diff --git a/packages/perl/libcompress-zlib-perl_1.42.bb b/packages/perl/libcompress-zlib-perl_1.42.bb
index 19f60f801b..2fa12f9cd6 100644
--- a/packages/perl/libcompress-zlib-perl_1.42.bb
+++ b/packages/perl/libcompress-zlib-perl_1.42.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Compress::Zlib - Interface to zlib compression library"
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r4"
+PR = "r6"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/P/PM/PMQS/Compress-Zlib-${PV}.tar.gz"
@@ -10,6 +10,4 @@ S = "${WORKDIR}/Compress-Zlib-${PV}"
inherit cpan
FILES_${PN} = "${PERLLIBDIRS}/auto/Compress/Zlib/* \
- ${PERLLIBDIRS}/auto/Compress/Zlib/.packlist \
${PERLLIBDIRS}/Compress"
-FILES_${PN}-dbg += "${PERLLIBDIRS}/auto/Compress/Zlib/.debug"
diff --git a/packages/perl/libdata-optlist-perl_0.101.bb b/packages/perl/libdata-optlist-perl_0.101.bb
index 40a2da46a7..3b7652d165 100644
--- a/packages/perl/libdata-optlist-perl_0.101.bb
+++ b/packages/perl/libdata-optlist-perl_0.101.bb
@@ -4,7 +4,7 @@ LICENSE = "Artistic|GPL"
DEPENDS += "libsub-install-perl-native libparams-util-perl-native"
RDEPENDS += "perl-module-list-util libparams-util-perl perl-module-strict \
libsub-install-perl perl-module-warnings "
-PR = "r0"
+PR = "r1"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/R/RJ/RJBS/Data-OptList-${PV}.tar.gz"
diff --git a/packages/perl/libdevel-stacktrace-perl_1.13.bb b/packages/perl/libdevel-stacktrace-perl_1.13.bb
index e5414895b0..e4c5158d67 100644
--- a/packages/perl/libdevel-stacktrace-perl_1.13.bb
+++ b/packages/perl/libdevel-stacktrace-perl_1.13.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Devel::StackTrace - Stack trace and stack trace frame objects"
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r3"
+PR = "r4"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/D/DR/DROLSKY/Devel-StackTrace-${PV}.tar.gz"
diff --git a/packages/perl/libdigest-sha1-perl_2.11.bb b/packages/perl/libdigest-sha1-perl_2.11.bb
index 178b463d38..67bb6830fa 100644
--- a/packages/perl/libdigest-sha1-perl_2.11.bb
+++ b/packages/perl/libdigest-sha1-perl_2.11.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Digest::SHA1 - Perl interface to the SHA-1 algorithm"
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r8"
+PR = "r10"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/Digest-SHA1-${PV}.tar.gz"
@@ -9,7 +9,5 @@ S = "${WORKDIR}/Digest-SHA1-${PV}"
inherit cpan
-FILES_${PN} += "${PERLLIBDIRS}/auto/Digest/SHA1/* \
- ${PERLLIBDIRS}/auto/Digest/SHA1/.packlist \
- ${PERLLIBDIRS}/Digest"
-FILES_${PN}-dbg += "${PERLLIBDIRS}/auto/Digest/SHA1/.debug"
+FILES_${PN} = "${PERLLIBDIRS}/auto/Digest/SHA1/* \
+ ${PERLLIBDIRS}/Digest"
diff --git a/packages/perl/liberror-perl_0.17004.bb b/packages/perl/liberror-perl_0.17004.bb
index b41b4ce50e..7647c630ed 100644
--- a/packages/perl/liberror-perl_0.17004.bb
+++ b/packages/perl/liberror-perl_0.17004.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Error - Error/exception handling in an OO-ish way"
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r4"
+PR = "r5"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/P/PE/PEVANS/Error-${PV}.tar.gz"
diff --git a/packages/perl/libexception-class-perl_1.23.bb b/packages/perl/libexception-class-perl_1.23.bb
index 3255fc582d..8acfec6ee9 100644
--- a/packages/perl/libexception-class-perl_1.23.bb
+++ b/packages/perl/libexception-class-perl_1.23.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "Artistic|GPL"
DEPENDS = "libclass-data-inheritable-perl-native libdevel-stacktrace-perl-native"
RDEPENDS = "libclass-data-inheritable-perl libdevel-stacktrace-perl"
-PR = "r4"
+PR = "r5"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/D/DR/DROLSKY/Exception-Class-${PV}.tar.gz"
diff --git a/packages/perl/libextutils-cbuilder-perl_0.18.bb b/packages/perl/libextutils-cbuilder-perl_0.18.bb
index bf6df4cc16..7e92155177 100644
--- a/packages/perl/libextutils-cbuilder-perl_0.18.bb
+++ b/packages/perl/libextutils-cbuilder-perl_0.18.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "ExtUtils::CBuilder - Compile and link C code for Perl modules"
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r1"
+PR = "r2"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/K/KW/KWILLIAMS/ExtUtils-CBuilder-${PV}.tar.gz"
diff --git a/packages/perl/libextutils-parsexs-perl_2.16.bb b/packages/perl/libextutils-parsexs-perl_2.16.bb
index abd92a34ba..070ce931b2 100644
--- a/packages/perl/libextutils-parsexs-perl_2.16.bb
+++ b/packages/perl/libextutils-parsexs-perl_2.16.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "ExtUtils::ParseXS - converts Perl XS code into C code"
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r1"
+PR = "r2"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/K/KW/KWILLIAMS/ExtUtils-ParseXS-${PV}.tar.gz"
diff --git a/packages/perl/libintl-perl_1.16.bb b/packages/perl/libintl-perl_1.16.bb
index 723ef0abe1..3cb0a9d796 100644
--- a/packages/perl/libintl-perl_1.16.bb
+++ b/packages/perl/libintl-perl_1.16.bb
@@ -3,6 +3,7 @@ LICENSE = "Artistic|GPL"
RDEPENDS = "perl-module-vars perl-module-locale perl-module-io-handle \
perl-module-symbol perl-module-selectsaver perl-module-io \
perl-module-integer perl-module-exporter-heavy"
+PR = "r1"
SRC_URI = "http://www.cpan.org/authors/id/G/GU/GUIDO/libintl-perl-${PV}.tar.gz"
diff --git a/packages/perl/libio-zlib-perl_1.04.bb b/packages/perl/libio-zlib-perl_1.04.bb
index aa6680bc84..15a71edee8 100644
--- a/packages/perl/libio-zlib-perl_1.04.bb
+++ b/packages/perl/libio-zlib-perl_1.04.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "Artistic|GPL"
DEPENDS = "libcompress-zlib-perl-native"
RDEPENDS += "libcompress-zlib-perl"
-PR = "r1"
+PR = "r2"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/T/TO/TOMHUGHES/IO-Zlib-${PV}.tar.gz"
diff --git a/packages/perl/libipc-sharelite-perl_0.09.bb b/packages/perl/libipc-sharelite-perl_0.09.bb
index acb280b111..65657ee4ae 100644
--- a/packages/perl/libipc-sharelite-perl_0.09.bb
+++ b/packages/perl/libipc-sharelite-perl_0.09.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "IPC::ShareLite - Light-weight interface to shared memory"
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r8"
+PR = "r10"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/M/MA/MAURICE/IPC-ShareLite-${PV}.tar.gz"
@@ -10,6 +10,4 @@ S = "${WORKDIR}/IPC-ShareLite-${PV}"
inherit cpan
FILES_${PN} = "${PERLLIBDIRS}/auto/IPC/ShareLite/* \
- ${PERLLIBDIRS}/auto/IPC/ShareLite/.packlist \
${PERLLIBDIRS}/IPC"
-FILES_${PN}-dbg += "${PERLLIBDIRS}/auto/IPC/ShareLite/.debug"
diff --git a/packages/perl/liblocale-gettext-perl_1.05.bb b/packages/perl/liblocale-gettext-perl_1.05.bb
index 177ad02e85..1fb6ff5af3 100644
--- a/packages/perl/liblocale-gettext-perl_1.05.bb
+++ b/packages/perl/liblocale-gettext-perl_1.05.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "Locale::gettext - message handling functions"
SECTION = "libs"
LICENSE = "Artistic|GPL"
DEPENDS = "virtual/libintl"
-PR = "r4"
+PR = "r6"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/P/PV/PVANDRY/gettext-${PV}.tar.gz"
@@ -11,6 +11,4 @@ S = "${WORKDIR}/gettext-${PV}"
inherit cpan
FILES_${PN} = "${PERLLIBDIRS}/auto/Locale/gettext/* \
- ${PERLLIBDIRS}/auto/Locale/gettext/.packlist \
${PERLLIBDIRS}/Locale"
-FILES_${PN}-dbg += "${PERLLIBDIRS}/auto/Locale/gettext/.debug"
diff --git a/packages/perl/liblog-log4perl-perl_1.06.bb b/packages/perl/liblog-log4perl-perl_1.06.bb
index 75060cce6a..49cd33fcd7 100644
--- a/packages/perl/liblog-log4perl-perl_1.06.bb
+++ b/packages/perl/liblog-log4perl-perl_1.06.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Log::Log4perl - Log4j implementation for Perl"
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r1"
+PR = "r2"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/M/MS/MSCHILLI/Log-Log4perl-${PV}.tar.gz"
diff --git a/packages/perl/libmail-sendmail-perl_0.79.bb b/packages/perl/libmail-sendmail-perl_0.79.bb
index 73c157d613..2b933dd331 100644
--- a/packages/perl/libmail-sendmail-perl_0.79.bb
+++ b/packages/perl/libmail-sendmail-perl_0.79.bb
@@ -1,6 +1,6 @@
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r1"
+PR = "r2"
SRC_URI = "http://www.cpan.org/modules/by-module/Mail/Mail-Sendmail-${PV}.tar.gz"
diff --git a/packages/perl/libmath-bigint-gmp-perl_1.18.bb b/packages/perl/libmath-bigint-gmp-perl_1.18.bb
index 53a83da08b..eed99e1284 100644
--- a/packages/perl/libmath-bigint-gmp-perl_1.18.bb
+++ b/packages/perl/libmath-bigint-gmp-perl_1.18.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "Artistic|GPL"
DEPENDS += "gmp-native"
RDEPENDS += "gmp"
-PR = "r2"
+PR = "r4"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/T/TE/TELS/math/Math-BigInt-GMP-${PV}.tar.gz"
@@ -12,6 +12,4 @@ S = "${WORKDIR}/Math-BigInt-GMP-${PV}"
inherit cpan
FILES_${PN} = "${PERLLIBDIRS}/auto/Math/BigInt/GMP/* \
- ${PERLLIBDIRS}/auto/Math/BigInt/GMP/.packlist \
${PERLLIBDIRS}/Math"
-FILES_${PN}-dbg += "${PERLLIBDIRS}/auto/Math/BigInt/GMP/.debug"
diff --git a/packages/perl/libnet-ip-perl_1.25.bb b/packages/perl/libnet-ip-perl_1.25.bb
index 183acc8eef..e25aaad290 100644
--- a/packages/perl/libnet-ip-perl_1.25.bb
+++ b/packages/perl/libnet-ip-perl_1.25.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "Artistic|GPL"
DEPENDS += "libio-zlib-perl-native"
RDEPENDS += "libio-zlib-perl perl-module-math-bigint"
-PR = "r2"
+PR = "r3"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/M/MA/MANU/Net-IP-${PV}.tar.gz"
diff --git a/packages/perl/libnetserver-generic-perl_1.03.bb b/packages/perl/libnetserver-generic-perl_1.03.bb
index 95b7e55a32..1cd2e7634e 100644
--- a/packages/perl/libnetserver-generic-perl_1.03.bb
+++ b/packages/perl/libnetserver-generic-perl_1.03.bb
@@ -1,6 +1,6 @@
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r1"
+PR = "r2"
SRC_URI = "http://www.cpan.org/modules/by-module/NetServer/NetServer-Generic-${PV}.tar.gz"
diff --git a/packages/perl/libparams-util-perl_0.20.bb b/packages/perl/libparams-util-perl_0.20.bb
index deb3c58b31..cff204fd3a 100644
--- a/packages/perl/libparams-util-perl_0.20.bb
+++ b/packages/perl/libparams-util-perl_0.20.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "Artistic|GPL"
RDEPENDS += "perl-module-exporter perl-module-overload \
perl-module-scalar-util perl-module-strict perl-module-vars"
-PR = "r0"
+PR = "r1"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/A/AD/ADAMK/Params-Util-${PV}.tar.gz"
diff --git a/packages/perl/libparams-validate-perl_0.86.bb b/packages/perl/libparams-validate-perl_0.86.bb
index c102b6df1b..bc42b47a33 100644
--- a/packages/perl/libparams-validate-perl_0.86.bb
+++ b/packages/perl/libparams-validate-perl_0.86.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Params::Validate - Validate method/function parameters"
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r8"
+PR = "r10"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/D/DR/DROLSKY/Params-Validate-${PV}.tar.gz"
@@ -10,7 +10,5 @@ S = "${WORKDIR}/Params-Validate-${PV}"
inherit cpan
FILES_${PN} = "${PERLLIBDIRS}/auto/Params/Validate/* \
- ${PERLLIBDIRS}/auto/Params/Validate/.packlist \
${PERLLIBDIRS}/Params \
${PERLLIBDIRS}/Attribute"
-FILES_${PN}-dbg += "${PERLLIBDIRS}/auto/Params/Validate/.debug"
diff --git a/packages/perl/libperl6-junction-perl_1.10.bb b/packages/perl/libperl6-junction-perl_1.10.bb
index dda3cf4be3..fc953707f1 100644
--- a/packages/perl/libperl6-junction-perl_1.10.bb
+++ b/packages/perl/libperl6-junction-perl_1.10.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Perl6::Junction - Perl6 style Junction operators in Perl5."
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r0"
+PR = "r1"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/C/CF/CFRANKS/Perl6-Junction-${PV}.tar.gz"
diff --git a/packages/perl/libsub-exporter-perl_0.970.bb b/packages/perl/libsub-exporter-perl_0.970.bb
index 5d56090549..e44a4a4ef7 100644
--- a/packages/perl/libsub-exporter-perl_0.970.bb
+++ b/packages/perl/libsub-exporter-perl_0.970.bb
@@ -5,7 +5,7 @@ DEPENDS += "libdata-optlist-perl-native libsub-install-perl-native \
libparams-util-perl-native"
RDEPENDS += "perl-module-carp libdata-optlist-perl libparams-util-perl \
perl-module-strict libsub-install-perl perl-module-warnings"
-PR = "r0"
+PR = "r1"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/R/RJ/RJBS/Sub-Exporter-${PV}.tar.gz"
diff --git a/packages/perl/libsub-install-perl_0.922.bb b/packages/perl/libsub-install-perl_0.922.bb
index ef8607312f..b1ff7b1fa0 100644
--- a/packages/perl/libsub-install-perl_0.922.bb
+++ b/packages/perl/libsub-install-perl_0.922.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "Artistic|GPL"
RDEPENDS += "perl-module-carp perl-module-scalar-util perl-module-strict \
perl-module-warnings"
-PR = "r0"
+PR = "r1"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/R/RJ/RJBS/Sub-Install-${PV}.tar.gz"
diff --git a/packages/perl/libsub-uplevel-perl_0.13.bb b/packages/perl/libsub-uplevel-perl_0.13.bb
index 8c66f49031..9243fada20 100644
--- a/packages/perl/libsub-uplevel-perl_0.13.bb
+++ b/packages/perl/libsub-uplevel-perl_0.13.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "Sub::Uplevel - apparently run a function in a higher stack frame"
SECTION = "libs"
LICENSE = "Artistic|GPL"
RDEPENDS += "perl-module-exporter perl-module-strict perl-module-vars"
-PR = "r0"
+PR = "r1"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/D/DA/DAGOLDEN/Sub-Uplevel-${PV}.tar.gz"
diff --git a/packages/perl/libtest-builder-tester-perl_1.01.bb b/packages/perl/libtest-builder-tester-perl_1.01.bb
index 860194ebb8..b40da5b7b4 100644
--- a/packages/perl/libtest-builder-tester-perl_1.01.bb
+++ b/packages/perl/libtest-builder-tester-perl_1.01.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "Artistic|GPL"
RDEPENDS += "perl-module-strict perl-module-carp perl-module-exporter \
perl-module-symbol perl-module-vars"
-PR = "r0"
+PR = "r1"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/M/MA/MARKF/Test-Builder-Tester-${PV}.tar.gz"
diff --git a/packages/perl/libtest-differences-perl_0.47.bb b/packages/perl/libtest-differences-perl_0.47.bb
index baf0c4c6e3..c1457ab015 100644
--- a/packages/perl/libtest-differences-perl_0.47.bb
+++ b/packages/perl/libtest-differences-perl_0.47.bb
@@ -4,7 +4,7 @@ LICENSE = "Artistic|GPL"
DEPENDS += "libtext-diff-perl-native"
RDEPENDS += "perl-module-carp perl-module-constant perl-module-exporter \
perl-module-strict libtext-diff-perl"
-PR = "r0"
+PR = "r1"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/R/RB/RBS/Test-Differences-${PV}.tar.gz"
diff --git a/packages/perl/libtest-exception-perl_0.22.bb b/packages/perl/libtest-exception-perl_0.22.bb
index c87f6a803f..10298d689c 100644
--- a/packages/perl/libtest-exception-perl_0.22.bb
+++ b/packages/perl/libtest-exception-perl_0.22.bb
@@ -5,7 +5,7 @@ DEPENDS += "libsub-uplevel-perl-native"
RDEPENDS += "perl-module-base perl-module-carp perl-module-strict \
libsub-uplevel-perl perl-module-test-builder \
perl-module-warnings"
-PR = "r0"
+PR = "r1"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/A/AD/ADIE/Test-Exception-${PV}.tar.gz"
diff --git a/packages/perl/libtest-mockmodule-perl_0.05.bb b/packages/perl/libtest-mockmodule-perl_0.05.bb
index 41f35b7a82..15c1fcc787 100644
--- a/packages/perl/libtest-mockmodule-perl_0.05.bb
+++ b/packages/perl/libtest-mockmodule-perl_0.05.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "Artistic|GPL"
RDEPENDS += "perl-module-carp perl-module-scalar-util perl-module-strict \
perl-module-vars "
-PR = "r0"
+PR = "r1"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/S/SI/SIMONFLK/Test-MockModule-${PV}.tar.gz"
diff --git a/packages/perl/libtest-output-perl_0.10.bb b/packages/perl/libtest-output-perl_0.10.bb
index bce6b9e1b3..990dd51e3e 100644
--- a/packages/perl/libtest-output-perl_0.10.bb
+++ b/packages/perl/libtest-output-perl_0.10.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
LICENSE = "Artistic|GPL"
DEPENDS += "libsub-exporter-perl-native"
RDEPENDS += "libsub-exporter-perl"
-PR = "r0"
+PR = "r1"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/S/SS/SSORICHE/Test-Output-${PV}.tar.gz"
diff --git a/packages/perl/libtext-diff-perl_0.35.bb b/packages/perl/libtext-diff-perl_0.35.bb
index 40a6373a8f..69568c6fe4 100644
--- a/packages/perl/libtext-diff-perl_0.35.bb
+++ b/packages/perl/libtext-diff-perl_0.35.bb
@@ -5,7 +5,7 @@ DEPENDS += "libalgorithm-diff-perl-native"
RDEPENDS += "libalgorithm-diff-perl perl-module-carp perl-module-constant \
perl-module-exporter perl-module-strict perl-module-carp \
perl-module-strict "
-PR = "r0"
+PR = "r1"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/R/RB/RBS/Text-Diff-${PV}.tar.gz"
diff --git a/packages/perl/libversion-perl_0.6701.bb b/packages/perl/libversion-perl_0.6701.bb
index b4f398f040..a4de6715e8 100644
--- a/packages/perl/libversion-perl_0.6701.bb
+++ b/packages/perl/libversion-perl_0.6701.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "version - Perl extension for Version Objects"
SECTION = "libs"
LICENSE = "Artistic|GPL"
-PR = "r3"
+PR = "r5"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/J/JP/JPEACOCK/version-${PV}.tar.gz"
@@ -10,7 +10,5 @@ S = "${WORKDIR}/version-${PV}"
inherit cpan
FILES_${PN} = "${PERLLIBDIRS}/auto/version/vxs/* \
- ${PERLLIBDIRS}/auto/version/.packlist \
${PERLLIBDIRS}/version/* \
${PERLLIBDIRS}/version.pm"
-FILES_${PN}-dbg += "${PERLLIBDIRS}/auto/version/vxs/.debug"
diff --git a/packages/perl/libxml-parser-perl_2.34.bb b/packages/perl/libxml-parser-perl_2.34.bb
index 67ee0bd8de..f088c26784 100644
--- a/packages/perl/libxml-parser-perl_2.34.bb
+++ b/packages/perl/libxml-parser-perl_2.34.bb
@@ -1,7 +1,7 @@
SECTION = "libs"
LICENSE = "Artistic"
DEPENDS += "expat-native"
-PR = "r4"
+PR = "r6"
SRC_URI = "http://www.cpan.org/modules/by-module/XML/XML-Parser-${PV}.tar.gz"
@@ -12,6 +12,4 @@ EXTRA_CPANFLAGS = "EXPATLIBPATH=${STAGING_LIBDIR} EXPATINCPATH=${STAGING_INCDIR}
inherit cpan
FILES_${PN} = "${PERLLIBDIRS}/auto/XML/Parser/Expat/* \
- ${PERLLIBDIRS}/auto/XML/Parser/.packlist \
${PERLLIBDIRS}/XML"
-FILES_${PN}-dbg += "${PERLLIBDIRS}/auto/XML/Parser/Expat/.debug"
diff --git a/packages/perl/libyaml-perl_0.62.bb b/packages/perl/libyaml-perl_0.62.bb
index 31ebc53040..ab4d58e841 100644
--- a/packages/perl/libyaml-perl_0.62.bb
+++ b/packages/perl/libyaml-perl_0.62.bb
@@ -4,7 +4,7 @@ LICENSE = "Artistic|GPL"
DEPENDS = "libdigest-sha1-perl-native liberror-perl-native \
libipc-sharelite-perl-native"
RDEPENDS = "libdigest-sha1-perl liberror-perl libipc-sharelite-perl"
-PR = "r1"
+PR = "r2"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/I/IN/INGY/YAML-${PV}.tar.gz"
diff --git a/packages/perl/perl-5.8.8/native-nopacklist.patch b/packages/perl/perl-5.8.8/native-nopacklist.patch
new file mode 100644
index 0000000000..a0ba269e00
--- /dev/null
+++ b/packages/perl/perl-5.8.8/native-nopacklist.patch
@@ -0,0 +1,84 @@
+Part of 52_debian_extutils_hacks.patch just to exclude the installation of .packlist files
+
+diff -Naur --exclude=debian perl-5.8.8.orig/lib/ExtUtils/MM_Unix.pm perl-5.8.8/lib/ExtUtils/MM_Unix.pm
+--- perl-5.8.8.orig/lib/ExtUtils/MM_Unix.pm 2005-05-21 19:42:56.000000000 +1000
++++ perl-5.8.8/lib/ExtUtils/MM_Unix.pm 2006-02-05 17:40:19.000000000 +1100
+@@ -2054,9 +2054,7 @@
+ $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
+
+ pure_perl_install ::
+- $(NOECHO) $(MOD_INSTALL) \
+- read }.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \
+- write }.$self->catfile('$(DESTINSTALLARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \
++ $(NOECHO) $(MOD_INSTALL) \
+ $(INST_LIB) $(DESTINSTALLPRIVLIB) \
+ $(INST_ARCHLIB) $(DESTINSTALLARCHLIB) \
+ $(INST_BIN) $(DESTINSTALLBIN) \
+@@ -2081,9 +2079,7 @@
+ }.$self->catdir('$(PERL_ARCHLIB)','auto','$(FULLEXT)').q{
+
+ pure_vendor_install ::
+- $(NOECHO) $(MOD_INSTALL) \
+- read }.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{ \
+- write }.$self->catfile('$(DESTINSTALLVENDORARCH)','auto','$(FULLEXT)','.packlist').q{ \
++ $(NOECHO) $(MOD_INSTALL) \
+ $(INST_LIB) $(DESTINSTALLVENDORLIB) \
+ $(INST_ARCHLIB) $(DESTINSTALLVENDORARCH) \
+ $(INST_BIN) $(DESTINSTALLVENDORBIN) \
+@@ -2092,37 +2088,19 @@
+ $(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR)
+
+ doc_perl_install ::
+- $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+- -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+- -$(NOECHO) $(DOC_INSTALL) \
+- "Module" "$(NAME)" \
+- "installed into" "$(INSTALLPRIVLIB)" \
+- LINKTYPE "$(LINKTYPE)" \
+- VERSION "$(VERSION)" \
+- EXE_FILES "$(EXE_FILES)" \
+- >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{
+
+ doc_site_install ::
+- $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+- -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+- -$(NOECHO) $(DOC_INSTALL) \
++ $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLSITEARCH)/perllocal.pod
++ -$(NOECHO) $(MKPATH) $(DESTINSTALLSITEARCH)
++ -$(NOECHO) $(DOC_INSTALL) \
+ "Module" "$(NAME)" \
+ "installed into" "$(INSTALLSITELIB)" \
+ LINKTYPE "$(LINKTYPE)" \
+ VERSION "$(VERSION)" \
+ EXE_FILES "$(EXE_FILES)" \
+- >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{
++ >> }.$self->catfile('$(DESTINSTALLSITEARCH)','perllocal.pod').q{
+
+ doc_vendor_install ::
+- $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+- -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+- -$(NOECHO) $(DOC_INSTALL) \
+- "Module" "$(NAME)" \
+- "installed into" "$(INSTALLVENDORLIB)" \
+- LINKTYPE "$(LINKTYPE)" \
+- VERSION "$(VERSION)" \
+- EXE_FILES "$(EXE_FILES)" \
+- >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{
+
+ };
+
+@@ -2131,13 +2109,12 @@
+ $(NOECHO) $(NOOP)
+
+ uninstall_from_perldirs ::
+- $(NOECHO) $(UNINSTALL) }.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{
+
+ uninstall_from_sitedirs ::
+ $(NOECHO) $(UNINSTALL) }.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{
+
+ uninstall_from_vendordirs ::
+- $(NOECHO) $(UNINSTALL) }.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{
++
+ };
+
+ join("",@m);
diff --git a/packages/perl/perl-native_5.8.8.bb b/packages/perl/perl-native_5.8.8.bb
index a9333d79ee..d6a3dc619e 100644
--- a/packages/perl/perl-native_5.8.8.bb
+++ b/packages/perl/perl-native_5.8.8.bb
@@ -3,7 +3,7 @@ HOMEPAGE = "http://www.perl.org/"
SECTION = "libs"
LICENSE = "Artistic|GPL"
DEPENDS = "virtual/db-native gdbm-native"
-PR = "r2"
+PR = "r4"
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/perl-${PV}"
@@ -12,7 +12,8 @@ DEFAULT_PREFERENCE = "-1"
SRC_URI = "http://ftp.funet.fi/pub/CPAN/src/perl-${PV}.tar.gz \
file://perl-5.8.8-gcc-4.2.patch;patch=1 \
file://Configure-multilib.patch;patch=1 \
- file://perl-configpm-switch.patch;patch=1"
+ file://perl-configpm-switch.patch;patch=1 \
+ file://native-nopacklist.patch;patch=1"
S = "${WORKDIR}/perl-${PV}"
@@ -47,5 +48,9 @@ do_configure () {
s!${STAGING_DIR}/lib!${STAGING_LIBDIR}!' < config.sh > config.sh.new
mv config.sh.new config.sh
}
+do_stage_append() {
+ # We need a hostperl link for building perl
+ ln -sf ${STAGING_BINDIR_NATIVE}/perl${PV} ${STAGING_BINDIR_NATIVE}/hostperl
+}
PARALLEL_MAKE = ""
diff --git a/packages/perl/perl_5.8.8.bb b/packages/perl/perl_5.8.8.bb
index 1f7751851d..84763b342e 100644
--- a/packages/perl/perl_5.8.8.bb
+++ b/packages/perl/perl_5.8.8.bb
@@ -5,7 +5,7 @@ LICENSE = "Artistic|GPL"
PRIORITY = "optional"
# We need gnugrep (for -I)
DEPENDS = "virtual/db perl-native grep-native"
-PR = "r10"
+PR = "r11"
# Major part of version
PVM = "5.8"
@@ -42,9 +42,6 @@ HOSTPERL = "${STAGING_BINDIR_NATIVE}/perl${PV}"
export PERLHOSTLIB = "${STAGING_DIR}/${BUILD_SYS}/lib/perl5/${PV}/${BUILD_ARCH}-${BUILD_OS}-thread-multi/"
do_configure() {
- # Put a hostperl in staging - should probably be part of do_deploy for native
- ln -sf ${HOSTPERL} ${STAGING_BINDIR_NATIVE}/hostperl
-
# Make hostperl in build directory be the native perl
cp -f ${HOSTPERL} hostperl
diff --git a/packages/prismstumbler/prismstumbler-0.7.3/wireless.patch b/packages/prismstumbler/prismstumbler-0.7.3/wireless.patch
new file mode 100644
index 0000000000..729a88d0c3
--- /dev/null
+++ b/packages/prismstumbler/prismstumbler-0.7.3/wireless.patch
@@ -0,0 +1,21 @@
+--- prismstumbler-0.7.3/src/iface-wlan-14.c.orig 2007-04-30 22:22:11.000000000 +0200
++++ prismstumbler-0.7.3/src/iface-wlan-14.c 2007-04-30 22:22:40.000000000 +0200
+@@ -26,6 +26,7 @@
+ #include <string.h>
+ #include <errno.h>
+
++#include <net/if.h>
+ #include <sys/ioctl.h>
+ #include <sys/socket.h>
+ #include <linux/types.h> /* for "__kernel_caddr_t" et al */
+--- prismstumbler-0.7.3/src/cards.c.orig 2007-04-30 22:23:06.000000000 +0200
++++ prismstumbler-0.7.3/src/cards.c 2007-04-30 22:23:33.000000000 +0200
+@@ -9,6 +9,8 @@
+
+ #include <stdio.h>
+ #include <sys/socket.h>
++#include <linux/types.h>
++#include <net/if.h>
+ #include <linux/wireless.h>
+ #include <glib.h>
+ #include <string.h>
diff --git a/packages/prismstumbler/prismstumbler_0.7.3.bb b/packages/prismstumbler/prismstumbler_0.7.3.bb
index bf38d10ca1..c0bfdcc5be 100644
--- a/packages/prismstumbler/prismstumbler_0.7.3.bb
+++ b/packages/prismstumbler/prismstumbler_0.7.3.bb
@@ -10,7 +10,8 @@ RDEPENDS = "wireless-tools"
SRC_URI = "${SOURCEFORGE_MIRROR}/prismstumbler/${PN}-${PV}.tar.bz2 \
file://bogoconf.patch;patch=1 \
file://crosscompile.patch;patch=1 \
- file://libz.patch;patch=1;pnum=0"
+ file://libz.patch;patch=1;pnum=0 \
+ file://wireless.patch;patch=1"
inherit autotools pkgconfig
@@ -19,7 +20,8 @@ EXTRA_OECONF = "--x-includes=${STAGING_INCDIR}/X11 \
--with-libpcap=${STAGING_DIR}/${HOST_SYS} \
--with-sqlite-includes=${STAGING_INCDIR} \
--with-sqlite-libs=${STAGING_LIBDIR} \
- --without-athena"
+ --without-athena \
+ --without-motif"
CFLAGS =+ "-I${S}/include -D_GNU_SOURCE"
diff --git a/packages/settings-daemon/settings-daemon_svn.bb b/packages/settings-daemon/settings-daemon_svn.bb
index b81c6c3e16..b427176c79 100644
--- a/packages/settings-daemon/settings-daemon_svn.bb
+++ b/packages/settings-daemon/settings-daemon_svn.bb
@@ -1,16 +1,17 @@
-DESCRIPTION = "Settings-daemon is a bridge between xst/gpe-confd and gconf"
+DESCRIPTION = "Settings-daemon provides a bridge between gconf and xsettings"
LICENSE = "GPL"
-DEPENDS = "gconf xst glib-2.0"
+DEPENDS = "gconf glib-2.0"
+RDEPENDS = "xrdb"
SECTION = "x11"
-
-PR = "r1"
+PV = "0.0+svn${SRCDATE}"
+PR = "r2"
SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=${PN};proto=http \
file://70settings-daemon"
S = "${WORKDIR}/${PN}"
-inherit autotools pkgconfig gettext
+inherit autotools pkgconfig gettext gconf
FILES_${PN} = "${bindir}/* ${sysconfdir}"
@@ -18,3 +19,4 @@ do_install_append () {
install -d ${D}/${sysconfdir}/X11/Xsession.d
install -m 755 ${WORKDIR}/70settings-daemon ${D}/${sysconfdir}/X11/Xsession.d/
}
+
diff --git a/packages/syslinux/syslinux-native_3.36.bb b/packages/syslinux/syslinux-native_3.36.bb
new file mode 100644
index 0000000000..d9019a4ab4
--- /dev/null
+++ b/packages/syslinux/syslinux-native_3.36.bb
@@ -0,0 +1,3 @@
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/utils/boot/syslinux/syslinux-${PV}.tar.bz2 "
+
+require syslinux3.inc
diff --git a/packages/syslinux/syslinux3.inc b/packages/syslinux/syslinux3.inc
index 25942aab84..95124d6160 100644
--- a/packages/syslinux/syslinux3.inc
+++ b/packages/syslinux/syslinux3.inc
@@ -8,6 +8,7 @@ do_stage() {
install -d ${STAGING_BINDIR}
install -m 755 ${STAGE_TEMP}/usr/bin/syslinux ${STAGING_BINDIR}
+ install -m 755 ${STAGE_TEMP}/sbin/extlinux ${STAGING_BINDIR}
# When building media, the syslinux binary isn't nearly as useful
# as the DOS data files, so we copy those into a special location
diff --git a/packages/tracker/tracker_0.5.4.bb b/packages/tracker/tracker_0.5.4.bb
index eaf8c3f566..d10a2a646b 100644
--- a/packages/tracker/tracker_0.5.4.bb
+++ b/packages/tracker/tracker_0.5.4.bb
@@ -1,6 +1,6 @@
DESCRIPTION = "Tracker is a tool designed to extract information and metadata about your personal data so that it can be searched easily and quickly."
LICENSE = "GPLv2"
-DEPENDS = "gtk+ gstreamer gamin libgmime dbus poppler libexif libgsf"
+DEPENDS = "file gtk+ gstreamer gamin libgmime dbus poppler libexif libgsf"
SRC_URI = "http://www.gnome.org/~jamiemcc/tracker/tracker-${PV}.tar.gz \
file://no-ioprio.patch;patch=1"
diff --git a/packages/uclibc/uclibc-cvs/magicbox/.mtn2git_empty b/packages/uclibc/uclibc-cvs/magicbox/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/uclibc/uclibc-cvs/magicbox/.mtn2git_empty
diff --git a/packages/uclibc/uclibc-cvs/magicbox/uClibc.config b/packages/uclibc/uclibc-cvs/magicbox/uClibc.config
new file mode 100644
index 0000000000..780df21b68
--- /dev/null
+++ b/packages/uclibc/uclibc-cvs/magicbox/uClibc.config
@@ -0,0 +1,181 @@
+#
+# Automatically generated make config: don't edit
+# Tue May 1 12:03:26 2007
+#
+# TARGET_alpha is not set
+# TARGET_arm is not set
+# TARGET_bfin is not set
+# TARGET_cris is not set
+# TARGET_e1 is not set
+# TARGET_frv is not set
+# TARGET_h8300 is not set
+# TARGET_hppa is not set
+# TARGET_i386 is not set
+# TARGET_i960 is not set
+# TARGET_ia64 is not set
+# TARGET_m68k is not set
+# TARGET_microblaze is not set
+# TARGET_mips is not set
+# TARGET_nios is not set
+# TARGET_nios2 is not set
+TARGET_powerpc=y
+# TARGET_sh is not set
+# TARGET_sh64 is not set
+# TARGET_sparc is not set
+# TARGET_v850 is not set
+# TARGET_vax is not set
+# TARGET_x86_64 is not set
+
+#
+# Target Architecture Features and Options
+#
+TARGET_ARCH="powerpc"
+FORCE_OPTIONS_FOR_ARCH=y
+ARCH_BIG_ENDIAN=y
+
+#
+# Using Big Endian
+#
+ARCH_HAS_MMU=y
+ARCH_USE_MMU=y
+UCLIBC_HAS_FLOATS=y
+# UCLIBC_HAS_FPU is not set
+UCLIBC_HAS_SOFT_FLOAT=y
+# DO_C99_MATH is not set
+KERNEL_SOURCE="/proj/oplinux-0.2/tmp/uclibc/cross/powerpc-linux-uclibc"
+HAVE_DOT_CONFIG=y
+
+#
+# General Library Settings
+#
+# HAVE_NO_PIC is not set
+DOPIC=y
+# HAVE_NO_SHARED is not set
+# ARCH_HAS_NO_LDSO is not set
+HAVE_SHARED=y
+# FORCE_SHAREABLE_TEXT_SEGMENTS is not set
+LDSO_LDD_SUPPORT=y
+LDSO_CACHE_SUPPORT=y
+# LDSO_PRELOAD_FILE_SUPPORT is not set
+LDSO_BASE_FILENAME="ld.so"
+# UCLIBC_STATIC_LDCONFIG is not set
+LDSO_RUNPATH=y
+UCLIBC_CTOR_DTOR=y
+# HAS_NO_THREADS is not set
+UCLIBC_HAS_THREADS=y
+PTHREADS_DEBUG_SUPPORT=y
+LINUXTHREADS_OLD=y
+UCLIBC_HAS_LFS=y
+# MALLOC is not set
+# MALLOC_SIMPLE is not set
+MALLOC_STANDARD=y
+MALLOC_GLIBC_COMPAT=y
+UCLIBC_DYNAMIC_ATEXIT=y
+COMPAT_ATEXIT=y
+UCLIBC_SUSV3_LEGACY=y
+UCLIBC_HAS_SHADOW=y
+UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y
+UCLIBC_HAS___PROGNAME=y
+UNIX98PTY_ONLY=y
+ASSUME_DEVPTS=y
+UCLIBC_HAS_TM_EXTENSIONS=y
+UCLIBC_HAS_TZ_CACHING=y
+UCLIBC_HAS_TZ_FILE=y
+UCLIBC_HAS_TZ_FILE_READ_MANY=y
+UCLIBC_TZ_FILE_PATH="/etc/TZ"
+
+#
+# Networking Support
+#
+UCLIBC_HAS_IPV6=y
+UCLIBC_HAS_RPC=y
+UCLIBC_HAS_FULL_RPC=y
+UCLIBC_HAS_REENTRANT_RPC=y
+UCLIBC_USE_NETLINK=y
+
+#
+# String and Stdio Support
+#
+UCLIBC_HAS_STRING_GENERIC_OPT=y
+UCLIBC_HAS_STRING_ARCH_OPT=y
+UCLIBC_HAS_CTYPE_TABLES=y
+UCLIBC_HAS_CTYPE_SIGNED=y
+# UCLIBC_HAS_CTYPE_UNSAFE is not set
+UCLIBC_HAS_CTYPE_CHECKED=y
+# UCLIBC_HAS_CTYPE_ENFORCED is not set
+UCLIBC_HAS_WCHAR=y
+# UCLIBC_HAS_LOCALE is not set
+UCLIBC_HAS_HEXADECIMAL_FLOATS=y
+UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y
+UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9
+UCLIBC_HAS_SCANF_GLIBC_A_FLAG=y
+# UCLIBC_HAS_STDIO_BUFSIZ_NONE is not set
+UCLIBC_HAS_STDIO_BUFSIZ_256=y
+# UCLIBC_HAS_STDIO_BUFSIZ_512 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_4096 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set
+UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set
+# UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set
+UCLIBC_HAS_STDIO_GETC_MACRO=y
+UCLIBC_HAS_STDIO_PUTC_MACRO=y
+UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y
+# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set
+UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y
+UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y
+UCLIBC_HAS_PRINTF_M_SPEC=y
+UCLIBC_HAS_ERRNO_MESSAGES=y
+# UCLIBC_HAS_SYS_ERRLIST is not set
+UCLIBC_HAS_SIGNUM_MESSAGES=y
+# UCLIBC_HAS_SYS_SIGLIST is not set
+UCLIBC_HAS_GNU_GETOPT=y
+UCLIBC_HAS_GNU_GETSUBOPT=y
+
+#
+# Big and Tall
+#
+UCLIBC_HAS_REGEX=y
+UCLIBC_HAS_REGEX_OLD=y
+UCLIBC_HAS_FNMATCH=y
+UCLIBC_HAS_FNMATCH_OLD=y
+UCLIBC_HAS_WORDEXP=y
+UCLIBC_HAS_FTW=y
+UCLIBC_HAS_GLOB=y
+# UCLIBC_HAS_GNU_GLOB is not set
+
+#
+# Library Installation Options
+#
+SHARED_LIB_LOADER_PREFIX="/lib"
+RUNTIME_PREFIX="/"
+DEVEL_PREFIX="//usr"
+
+#
+# Security options
+#
+# UCLIBC_BUILD_PIE is not set
+# UCLIBC_HAS_ARC4RANDOM is not set
+# HAVE_NO_SSP is not set
+# UCLIBC_HAS_SSP is not set
+UCLIBC_BUILD_RELRO=y
+# UCLIBC_BUILD_NOW is not set
+UCLIBC_BUILD_NOEXECSTACK=y
+
+#
+# uClibc development/debugging options
+#
+CROSS_COMPILER_PREFIX=""
+# DODEBUG is not set
+# DODEBUG_PT is not set
+DOSTRIP=y
+# DOASSERTS is not set
+# SUPPORT_LD_DEBUG is not set
+# SUPPORT_LD_DEBUG_EARLY is not set
+# UCLIBC_MALLOC_DEBUGGING is not set
+WARNINGS="-Wall"
+# EXTRA_WARNINGS is not set
+# DOMULTI is not set
+# UCLIBC_MJN3_ONLY is not set
diff --git a/packages/valgrind/valgrind_3.2.3.bb b/packages/valgrind/valgrind_3.2.3.bb
new file mode 100644
index 0000000000..6cc835a9f4
--- /dev/null
+++ b/packages/valgrind/valgrind_3.2.3.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "Valgrind memory debugger"
+HOMEPAGE = "http://www.valgrind.org/"
+SECTION = "devel"
+LICENSE = "GPL"
+DEPENDS = "virtual/libx11"
+PR = "r0"
+
+SRC_URI = "http://www.valgrind.org/downloads/valgrind-${PV}.tar.bz2"
+
+inherit autotools
+
+EXTRA_OECONF = "--enable-tls"
+
+COMPATIBLE_HOST = "^i.86.*-linux"
+
+FILES_${PN}-dbg += "/usr/lib/valgrind/x86-linux/.debug"