diff options
82 files changed, 3135 insertions, 152 deletions
diff --git a/classes/cpan.bbclass b/classes/cpan.bbclass index 687dbcd1cb..be08c84379 100644 --- a/classes/cpan.bbclass +++ b/classes/cpan.bbclass @@ -4,7 +4,7 @@ FILES_${PN} += '${libdir}/perl5 ${datadir}/perl5' EXTRA_CPANFLAGS ?= "" -DEPENDS += "perl-native" +DEPENDS += "perl perl-native" RDEPENDS += "perl" # Determine the staged version of perl from the perl configuration file @@ -54,7 +54,7 @@ PERLLIBDIRS = "${@perl_get_libdirs(d)}" 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/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/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/ixp4xxbe.conf b/conf/machine/ixp4xxbe.conf index f208852d3a..9b3a4f693f 100644 --- a/conf/machine/ixp4xxbe.conf +++ b/conf/machine/ixp4xxbe.conf @@ -8,4 +8,6 @@ PACKAGE_EXTRA_ARCHS = "armv4b armv4tb armv5eb armv5teb" require conf/machine/include/ixp4xx.conf +TARGET_CC_ARCH += " -D__ARMEB__ " + EXTRA_IMAGECMD_jffs2 += "--big-endian" diff --git a/conf/machine/magicbox.conf b/conf/machine/magicbox.conf index 4ed28337d6..22e30542f9 100644 --- a/conf/machine/magicbox.conf +++ b/conf/machine/magicbox.conf @@ -7,17 +7,18 @@ 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 = "--big-endian" +EXTRA_IMAGECMD_squashfs = " -be -all-root " +EXTRA_IMAGECMD_squashfs-lzma = " -be -all-root " #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/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/glibc/glibc-2.4/armeb-strlen.patch b/packages/glibc/glibc-2.4/armeb-strlen.patch new file mode 100644 index 0000000000..69a2e59d30 --- /dev/null +++ b/packages/glibc/glibc-2.4/armeb-strlen.patch @@ -0,0 +1,11 @@ +--- /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/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/linux/linux-ezx-2.6.21/ezx-core.patch b/packages/linux/linux-ezx-2.6.21/ezx-core.patch index 81be0ef159..f62d89a408 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-01 14:00:25.000000000 -0300 ++++ linux-2.6.21/arch/arm/boot/compressed/head-xscale.S 2007-05-01 14:00:48.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-01 14:00:25.000000000 -0300 ++++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-05-01 23:02:56.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-01 14:00:25.000000000 -0300 ++++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-05-01 23:03:58.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-01 23:03:58.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-01 14:00:48.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-01 14:00:24.000000000 -0300 ++++ linux-2.6.21/include/asm-arm/arch-pxa/pxa-regs.h 2007-05-01 23:02:53.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-01 14:00:25.000000000 -0300 ++++ linux-2.6.21/arch/arm/boot/compressed/head.S 2007-05-01 14:00:48.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-01 14:00:24.000000000 -0300 ++++ linux-2.6.21/include/asm-arm/arch-pxa/uncompress.h 2007-05-01 14:00:48.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-01 14:00:48.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-01 14:00:48.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-01 22:53:54.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,8 +1101,8 @@ 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-01 14:00:25.000000000 -0300 ++++ linux-2.6.21/arch/arm/mm/init.c 2007-05-01 14:00:48.000000000 -0300 @@ -241,6 +241,10 @@ */ reserve_bootmem_node(pgdat, boot_pfn << PAGE_SHIFT, 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..95fdd96fc1 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-01 03:58:42.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) ++{ ++ 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-01 01:39:12.000000000 -0300 ++++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-05-01 02:07:23.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-01 02:07:23.000000000 -0300 ++++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-05-01 04:10:48.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-01 02:07:23.000000000 -0300 ++++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-05-01 02:07:23.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..de64d722e9 100644 --- a/packages/linux/linux-ezx-2.6.21/ezx-pcap.patch +++ b/packages/linux/linux-ezx-2.6.21/ezx-pcap.patch @@ -1,7 +1,7 @@ -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 ++++ linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c 2007-05-01 14:00:50.000000000 -0300 @@ -0,0 +1,411 @@ +/* Driver for Motorola PCAP2 as present in EZX phones + * @@ -414,10 +414,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-01 14:00:50.000000000 -0300 @@ -0,0 +1,665 @@ +/* (c) Copyright Motorola Beijing 2002 all rights reserved. + @@ -1084,10 +1084,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-01 14:00:24.000000000 -0300 ++++ linux-2.6.21/include/asm-arm/arch-pxa/irqs.h 2007-05-01 14:00:50.000000000 -0300 @@ -176,7 +176,8 @@ #define NR_IRQS (IRQ_LOCOMO_SPI_TEND + 1) #elif defined(CONFIG_ARCH_LUBBOCK) || \ @@ -1115,10 +1115,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-01 14:00:48.000000000 -0300 ++++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-05-01 14:00:50.000000000 -0300 @@ -18,7 +18,7 @@ obj-$(CONFIG_MACH_AKITA) += akita-ioexp.o obj-$(CONFIG_MACH_POODLE) += poodle.o corgi_ssp.o @@ -1128,11 +1128,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-01 14:00:48.000000000 -0300 ++++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-05-01 14:00:50.000000000 -0300 +@@ -72,6 +72,24 @@ .clk_pcap = 1, }; @@ -1157,7 +1157,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 +1166,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 +1185,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..2b498c8b8c --- /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-04-26 00:08:32.000000000 -0300 ++++ linux-2.6.21/arch/arm/mach-pxa/pxa27x.c 2007-04-30 18:29:49.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-04-26 00:08:32.000000000 -0300 ++++ linux-2.6.21/arch/arm/mach-pxa/pm.c 2007-04-30 18:29:49.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.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..28be2b8d17 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}-r3" inherit kernel @@ -18,8 +15,8 @@ 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-pcap.patch;patch=1 \ file://ezx-mci.patch;patch=1 \ @@ -27,6 +24,9 @@ SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \ 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://ezx-pm.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 +38,13 @@ 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://ezx-ts.patch;patch=1 \ + file://pcap_ts.c.patch;patch=1 \ + file://touchscreen-fix-r0.patch;patch=1 \ + file://logo_linux_clut224.ppm \ + file://defconfig-a780 \ + file://defconfig-e680 \ + " S = "${WORKDIR}/linux-${PV}" @@ -126,4 +126,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..8afb0141f6 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 = "r5" SRC_URI = "http://search.cpan.org/CPAN/authors/id/P/PM/PMQS/Compress-Zlib-${PV}.tar.gz" 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..3b139299fe 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 = "r9" SRC_URI = "http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/Digest-SHA1-${PV}.tar.gz" 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..2ee30ddd8f 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 = "r9" SRC_URI = "http://search.cpan.org/CPAN/authors/id/M/MA/MAURICE/IPC-ShareLite-${PV}.tar.gz" diff --git a/packages/perl/liblocale-gettext-perl_1.05.bb b/packages/perl/liblocale-gettext-perl_1.05.bb index 177ad02e85..c2aa649a42 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 = "r5" SRC_URI = "http://search.cpan.org/CPAN/authors/id/P/PV/PVANDRY/gettext-${PV}.tar.gz" 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..c9efad46aa 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 = "r3" SRC_URI = "http://search.cpan.org/CPAN/authors/id/T/TE/TELS/math/Math-BigInt-GMP-${PV}.tar.gz" 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..006d9602e7 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 = "r9" SRC_URI = "http://search.cpan.org/CPAN/authors/id/D/DR/DROLSKY/Params-Validate-${PV}.tar.gz" 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..453e3c357f 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 = "r4" SRC_URI = "http://search.cpan.org/CPAN/authors/id/J/JP/JPEACOCK/version-${PV}.tar.gz" diff --git a/packages/perl/libxml-parser-perl_2.34.bb b/packages/perl/libxml-parser-perl_2.34.bb index 67ee0bd8de..28bf16deee 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 = "r5" SRC_URI = "http://www.cpan.org/modules/by-module/XML/XML-Parser-${PV}.tar.gz" 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/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/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" |