summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOpenEmbedded Project <openembedded-devel@lists.openembedded.org>2008-10-01 17:23:42 +0000
committerOpenEmbedded Project <openembedded-devel@lists.openembedded.org>2008-10-01 17:23:42 +0000
commit6f1aee10e349b087f8b3651222263fbff19c4876 (patch)
tree69d528dada0190e72015c50525f3213156226aa2
parentf661ce424b1de1c942cf85769eb04c246a80c013 (diff)
parent1b6ef61c219763169e638eeaa266f4e3572798bc (diff)
merge of '7e947a0c90014aa35b2d54a97a35dac21ecd4545'
and 'ede2922a2a1c1c3eb84491c1cb019edc21f2729e'
-rw-r--r--classes/cross.bbclass11
-rw-r--r--classes/packaged-staging.bbclass2
-rw-r--r--classes/qmake2.bbclass1
-rw-r--r--packages/cacao/cacao_0.99.3.bb5
-rw-r--r--packages/cacao/files/cacao-arm-race.patch241
-rw-r--r--packages/cacao/files/vfp-compat.patch37
-rw-r--r--packages/dbus/dbus-1.0.3/sanitize-reply-timeout.patch16
-rw-r--r--packages/gcc/gcc-common.inc2
-rw-r--r--packages/gcc/gcc-package-sdk.inc1
-rw-r--r--packages/gcc/gcc-package-target.inc3
-rw-r--r--packages/git/git.inc4
-rw-r--r--packages/gnash/gnash-minimal.inc4
-rw-r--r--packages/imagemagick/imagemagick-6.4.4-1/.mtn2git_empty0
-rw-r--r--packages/imagemagick/imagemagick-6.4.4-1/PerlMagic_MakePatch11
-rw-r--r--packages/imagemagick/imagemagick_6.4.4-1.bb39
-rw-r--r--packages/libsdl/libsdl-native_1.2.11.bb2
-rw-r--r--packages/linux/linux-omap/010-mru-fix-video-mode-param.diff35
-rw-r--r--packages/linux/linux-omap/04-use-pcd.diff28
-rw-r--r--packages/linux/linux-omap/16bpp.patch137
-rw-r--r--packages/linux/linux-omap/4bitmmc.diff38
-rw-r--r--packages/linux/linux-omap/musb-dmafix.patch275
-rw-r--r--packages/linux/linux-omap/musb-fix-multiple-bulk-transfers.diff194
-rw-r--r--packages/linux/linux-omap/omap3evm/OMAP3EVM_TWL4030-Keypad-irq-error-fix.patch32
-rw-r--r--packages/linux/linux-omap_git.bb6
-rw-r--r--packages/linux/linux_2.6.25.bb1
-rw-r--r--packages/mtd/mtd-utils_1.1.0.bb2
-rw-r--r--packages/perl/perl-native_5.8.8.bb4
-rw-r--r--packages/perl/perl.inc4
-rw-r--r--packages/perl/perl_5.8.8.bb4
-rw-r--r--packages/samba/samba.inc1
-rw-r--r--packages/uclibc/uclibc-0.9.29/uClibc.distro6
-rw-r--r--packages/uclibc/uclibc_0.9.29.bb2
32 files changed, 577 insertions, 571 deletions
diff --git a/classes/cross.bbclass b/classes/cross.bbclass
index a35f4dfb79..9dddca127a 100644
--- a/classes/cross.bbclass
+++ b/classes/cross.bbclass
@@ -3,8 +3,11 @@
EXCLUDE_FROM_WORLD = "1"
# Save PACKAGE_ARCH before changing HOST_ARCH
-OLD_PACKAGE_ARCH := ${PACKAGE_ARCH}
-PACKAGE_ARCH = ${OLD_PACKAGE_ARCH}
+OLD_PACKAGE_ARCH := "${PACKAGE_ARCH}"
+PACKAGE_ARCH = "${OLD_PACKAGE_ARCH}"
+# Also save BASE_PACKAGE_ARCH since HOST_ARCH can influence it
+OLD_BASE_PACKAGE_ARCH := "${BASE_PACKAGE_ARCH}"
+BASE_PACKAGE_ARCH = "${OLD_BASE_PACKAGE_ARCH}"
PACKAGES = ""
@@ -49,8 +52,8 @@ bindir = "${exec_prefix}/bin"
sbindir = "${exec_prefix}/bin"
libexecdir = "${exec_prefix}/libexec"
libdir = "${exec_prefix}/lib"
-includedir = "${STAGING_DIR_TARGET}/${layout_includedir}"
-oldincludedir = "${STAGING_DIR_TARGET}/${layout_includedir}"
+includedir = "${exec_prefix}/include"
+oldincludedir = "${exec_prefix}/include"
do_stage () {
oe_runmake install
diff --git a/classes/packaged-staging.bbclass b/classes/packaged-staging.bbclass
index 70550c1a7d..ed94790b1d 100644
--- a/classes/packaged-staging.bbclass
+++ b/classes/packaged-staging.bbclass
@@ -157,7 +157,7 @@ staging_helper () {
fi
if [ ! -e ${TMPDIR}${layout_libdir}/ipkg/ ]; then
cd ${TMPDIR}${layout_libdir}/
- ln -s opkg/ ipkg
+ ln -sf opkg/ ipkg
fi
}
diff --git a/classes/qmake2.bbclass b/classes/qmake2.bbclass
index 9ac4945ab4..8a443d062a 100644
--- a/classes/qmake2.bbclass
+++ b/classes/qmake2.bbclass
@@ -10,6 +10,7 @@ export OE_QMAKE_UIC = "${STAGING_BINDIR_NATIVE}/uic4"
export OE_QMAKE_UIC3 = "${STAGING_BINDIR_NATIVE}/uic34"
export OE_QMAKE_MOC = "${STAGING_BINDIR_NATIVE}/moc4"
export OE_QMAKE_RCC = "${STAGING_BINDIR_NATIVE}/rcc4"
+export QMAKE_RCC = "${STAGING_BINDIR_NATIVE}/rcc4"
export OE_QMAKE_QMAKE = "${STAGING_BINDIR_NATIVE}/qmake2"
export OE_QMAKE_LINK = "${CXX}"
export OE_QMAKE_CXXFLAGS = "${CXXFLAGS}"
diff --git a/packages/cacao/cacao_0.99.3.bb b/packages/cacao/cacao_0.99.3.bb
index 9817a7ceed..61dfd49e92 100644
--- a/packages/cacao/cacao_0.99.3.bb
+++ b/packages/cacao/cacao_0.99.3.bb
@@ -1,9 +1,12 @@
require cacao.inc
-PR = "r0"
+PR = "r2"
SRC_URI = "http://www.complang.tuwien.ac.at/cacaojvm/download/cacao-${PV}/cacao-${PV}.tar.bz2 \
file://cacao-codegen-arm1.patch;patch=1 \
file://cacao-codegen-arm2.patch;patch=1 \
+ file://cacao-arm-race.patch;patch=1 \
+ file://vfp-compat.patch;patch=1 \
"
+EXTRA_OECONF += "--enable-disassembler"
diff --git a/packages/cacao/files/cacao-arm-race.patch b/packages/cacao/files/cacao-arm-race.patch
new file mode 100644
index 0000000000..a4b730df18
--- /dev/null
+++ b/packages/cacao/files/cacao-arm-race.patch
@@ -0,0 +1,241 @@
+Index: cacao-0.99.3/src/vm/jit/arm/linux/md-os.c
+===================================================================
+--- cacao-0.99.3.orig/src/vm/jit/arm/linux/md-os.c 2008-07-07 13:36:19.000000000 +0200
++++ cacao-0.99.3/src/vm/jit/arm/linux/md-os.c 2008-09-24 17:15:23.191805889 +0200
+@@ -2,6 +2,7 @@
+
+ Copyright (C) 1996-2005, 2006, 2007, 2008
+ CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO
++ Copyright (C) 2008 Theobroma Systems Ltd.
+
+ This file is part of CACAO.
+
+@@ -60,7 +61,7 @@
+ #include "vm/jit/executionstate.h"
+ #include "vm/jit/stacktrace.h"
+ #include "vm/jit/trap.h"
+-
++#include "vm/jit/patcher-common.h"
+
+ /* md_signal_handler_sigsegv ***************************************************
+
+@@ -126,56 +127,52 @@
+
+ void md_signal_handler_sigill(int sig, siginfo_t *siginfo, void *_p)
+ {
+- ucontext_t *_uc;
+- scontext_t *_sc;
+- u1 *pv;
+- u1 *sp;
+- u1 *ra;
+- u1 *xpc;
+- u4 mcode;
+- int type;
+- intptr_t val;
+- void *p;
+-
+- _uc = (ucontext_t*) _p;
+- _sc = &_uc->uc_mcontext;
+-
+- /* ATTENTION: glibc included messed up kernel headers we needed a
+- workaround for the ucontext structure. */
+-
+- pv = (u1 *) _sc->arm_ip;
+- sp = (u1 *) _sc->arm_sp;
+- ra = (u1 *) _sc->arm_lr; /* this is correct for leafs */
+- xpc = (u1 *) _sc->arm_pc;
+-
+- /* get exception-throwing instruction */
+-
+- mcode = *((u4 *) xpc);
+-
+- /* check for undefined instruction we use */
+-
+- if ((mcode & 0x0ff000f0) != 0x07f000f0) {
+- log_println("md_signal_handler_sigill: unknown illegal instruction: inst=%x", mcode);
+-#if defined(ENABLE_DISASSEMBLER)
+- DISASSINSTR(xpc);
+-#endif
+- vm_abort("Aborting...");
+- }
+-
+- type = (mcode >> 8) & 0x0fff;
+- val = *((s4 *) _sc + OFFSET(scontext_t, arm_r0)/4 + (mcode & 0x0f));
+-
+- /* Handle the trap. */
+-
+- p = trap_handle(type, val, pv, sp, ra, xpc, _p);
+-
+- /* set registers if we have an exception, continue execution
+- otherwise (this is needed for patchers to work) */
+-
+- if (p != NULL) {
+- _sc->arm_r10 = (uintptr_t) p;
+- _sc->arm_fp = (uintptr_t) xpc;
+- _sc->arm_pc = (uintptr_t) asm_handle_exception;
++ int type;
++ intptr_t val;
++ void *p;
++ ucontext_t* _uc = (ucontext_t*) _p;
++ scontext_t* _sc = &_uc->uc_mcontext;
++
++ /* ATTENTION: glibc included messed up kernel headers we needed a
++ workaround for the ucontext structure. */
++
++ void* pv = (void*) _sc->arm_ip;
++ void* sp = (void*) _sc->arm_sp;
++ void* ra = (void*) _sc->arm_lr; // The RA is correct for leaf methods.
++ void* xpc = (void*) _sc->arm_pc;
++
++ // Get the exception-throwing instruction.
++ uint32_t mcode = *((uint32_t*) xpc);
++
++ // Check if the trap instruction is valid.
++ // TODO Move this into patcher_handler.
++ if (patcher_is_valid_trap_instruction_at(xpc) == false) {
++ // Check if the PC has been patched during our way to this
++ // signal handler (see PR85).
++ // NOTE: ARM uses SIGILL for other traps too, but it's OK to
++ // do this check anyway because it will fail.
++ if (patcher_is_patched_at(xpc) == true)
++ return;
++
++ // We have a problem...
++ log_println("md_signal_handler_sigill: Unknown illegal instruction 0x%x at 0x%x", mcode, xpc);
++ #if defined(ENABLE_DISASSEMBLER)
++ (void) disassinstr(xpc);
++ #endif
++ vm_abort("Aborting...");
++ }
++
++ type = (mcode >> 8) & 0x0fff;
++ val = *((int32_t*) _sc + OFFSET(scontext_t, arm_r0)/4 + (mcode & 0x0f));
++
++ // Handle the trap.
++ p = trap_handle(type, val, pv, sp, ra, xpc, _p);
++
++ // Set registers if we have an exception, continue execution
++ // otherwise.
++ if (p != NULL) {
++ _sc->arm_r10 = (uintptr_t) p;
++ _sc->arm_fp = (uintptr_t) xpc;
+ }
+ }
+
+Index: cacao-0.99.3/src/vm/jit/arm/patcher.c
+===================================================================
+--- cacao-0.99.3.orig/src/vm/jit/arm/patcher.c 2008-04-27 23:44:08.000000000 +0200
++++ cacao-0.99.3/src/vm/jit/arm/patcher.c 2008-09-24 17:05:17.003795314 +0200
+@@ -2,6 +2,7 @@
+
+ Copyright (C) 1996-2005, 2006, 2007, 2008
+ CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO
++ Copyright (C) 2008 Theobroma Systems Ltd.
+
+ This file is part of CACAO.
+
+@@ -76,6 +77,25 @@
+ PATCH_BACK_ORIGINAL_MCODE;
+ }
+
++
++/**
++ * Check if the trap instruction at the given PC is valid.
++ *
++ * @param pc Program counter.
++ *
++ * @return true if valid, false otherwise.
++ */
++bool patcher_is_valid_trap_instruction_at(void* pc)
++{
++ uint32_t mcode = *((uint32_t*) pc);
++
++ // Check for the undefined instruction we use.
++ if ((mcode & 0x0ff000f0) != 0x07f000f0) {
++ return false;
++ }
++
++ return true;
++}
+
+ /* patcher_get_putstatic *******************************************************
+
+Index: cacao-0.99.3/src/vm/jit/patcher-common.c
+===================================================================
+--- cacao-0.99.3.orig/src/vm/jit/patcher-common.c 2008-04-28 21:52:41.000000000 +0200
++++ cacao-0.99.3/src/vm/jit/patcher-common.c 2008-09-24 17:05:17.047796037 +0200
+@@ -2,6 +2,7 @@
+
+ Copyright (C) 2007, 2008
+ CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO
++ Copyright (C) 2008 Theobroma Systems Ltd.
+
+ This file is part of CACAO.
+
+@@ -254,6 +255,49 @@
+ }
+
+
++/**
++ * Check if the patcher is already patched. This is done by comparing
++ * the machine instruction.
++ *
++ * @param pr Patcher structure.
++ *
++ * @return true if patched, false otherwise.
++ */
++bool patcher_is_patched(patchref_t* pr)
++{
++ // Validate the instruction at the patching position is the same
++ // instruction as the patcher structure contains.
++ uint32_t mcode = *((uint32_t*) pr->mpc);
++
++ if (mcode != pr->mcode) {
++ // The code differs.
++ return false;
++ }
++
++ return true;
++}
++
++
++/**
++ *
++ */
++bool patcher_is_patched_at(void* pc)
++{
++ codeinfo* code = code_find_codeinfo_for_pc(pc);
++
++ // Get the patcher for the given PC.
++ patchref_t* pr = patcher_list_find(code, pc);
++
++ if (pr == NULL) {
++ // The given PC is not a patcher position.
++ return false;
++ }
++
++ // Validate the instruction.
++ return patcher_is_patched(pr);
++}
++
++
+ /* patcher_handler *************************************************************
+
+ Handles the request to patch JIT code at the given patching
+Index: cacao-0.99.3/src/vm/jit/patcher-common.h
+===================================================================
+--- cacao-0.99.3.orig/src/vm/jit/patcher-common.h 2008-04-27 23:44:08.000000000 +0200
++++ cacao-0.99.3/src/vm/jit/patcher-common.h 2008-09-24 17:05:17.115800331 +0200
+@@ -73,6 +73,12 @@
+
+ void patcher_resolve(jitdata* jd);
+
++bool patcher_is_patched(patchref_t* pr);
++bool patcher_is_patched_at(void* pc);
++
++// MD function.
++bool patcher_is_valid_trap_instruction_at(void* pc);
++
+ java_handle_t *patcher_handler(u1 *pc);
+
+
diff --git a/packages/cacao/files/vfp-compat.patch b/packages/cacao/files/vfp-compat.patch
new file mode 100644
index 0000000000..9feba6344e
--- /dev/null
+++ b/packages/cacao/files/vfp-compat.patch
@@ -0,0 +1,37 @@
+Index: cacao-0.99.3/src/vm/jit/arm/codegen.c
+===================================================================
+--- cacao-0.99.3.orig/src/vm/jit/arm/codegen.c 2008-10-01 16:23:21.439856241 +0200
++++ cacao-0.99.3/src/vm/jit/arm/codegen.c 2008-10-01 16:41:24.278841537 +0200
+@@ -2353,10 +2353,12 @@
+
+ d = md->returntype.type;
+
+-#if !defined(__SOFTFP__)
++#if !defined(__SOFTFP__) && !defined(__VFP_FP__)
+ /* TODO: this is only a hack, since we use R0/R1 for float
+ return! this depends on gcc; it is independent from
+- our ENABLE_SOFTFLOAT define */
++ our ENABLE_SOFTFLOAT define
++ It is only needed for -mfpu=fpa -mfloat-abi=hard!
++ */
+ if (iptr->opc == ICMD_BUILTIN && d != TYPE_VOID && IS_FLT_DBL_TYPE(d)) {
+ #if 0 && !defined(NDEBUG)
+ dolog("BUILTIN that returns float or double (%s.%s)", m->clazz->name->text, m->name->text);
+@@ -3019,7 +3021,7 @@
+ s1 = (s4) (cd->mcodeptr - cd->mcodebase);
+ M_RECOMPUTE_PV(s1);
+
+-#if !defined(__SOFTFP__)
++#if !defined(__SOFTFP__) && !defined(__VFP_FP__)
+ /* TODO: this is only a hack, since we use R0/R1 for float return! */
+ /* this depends on gcc; it is independent from our ENABLE_SOFTFLOAT define */
+ if (md->returntype.type != TYPE_VOID && IS_FLT_DBL_TYPE(md->returntype.type)) {
+@@ -3030,7 +3032,7 @@
+ /* M_CAST_FLT_TO_INT_TYPED(md->returntype.type, REG_FRESULT, REG_RESULT_TYPED(md->returntype.type)); */
+ if (IS_2_WORD_TYPE(md->returntype.type)) {
+ DCD(0xed2d8102); /* stfd f0, [sp, #-8]! */
+- M_LDRD_UPDATE(REG_RESULT_PACKED, REG_SP, 8);
++ M_LDRD_UPDATE(REG_RESULT_PACKED, REG_SP, 8);
+ } else {
+ DCD(0xed2d0101); /* stfs f0, [sp, #-4]!*/
+ M_LDR_UPDATE(REG_RESULT, REG_SP, 4);
diff --git a/packages/dbus/dbus-1.0.3/sanitize-reply-timeout.patch b/packages/dbus/dbus-1.0.3/sanitize-reply-timeout.patch
new file mode 100644
index 0000000000..75ee6bdd6a
--- /dev/null
+++ b/packages/dbus/dbus-1.0.3/sanitize-reply-timeout.patch
@@ -0,0 +1,16 @@
+# DBus is from the desktop world, systems are _FAST_ there
+# On Embedded, some things might take a bit longer
+# Default session bus timeout is 300 seconds(!), whereas default
+# system bus timeout is only 25 seconds. This increases it to 60.
+# Signed off: Michael 'Mickey' Lauer <mlauer@vanille-media.de>
+Index: dbus-1.2.1/bus/system.conf
+===================================================================
+--- dbus-1.2.1.orig/bus/system.conf.in
++++ dbus-1.2.1/bus/system.conf.in
+@@ -65,4 +65,6 @@
+
+ <include if_selinux_enabled="yes" selinux_root_relative="yes">contexts/dbus_contexts</include>
+
++ <limit name="reply_timeout">60000</limit>
++
+ </busconfig>
diff --git a/packages/gcc/gcc-common.inc b/packages/gcc/gcc-common.inc
index 1097614969..73bc327507 100644
--- a/packages/gcc/gcc-common.inc
+++ b/packages/gcc/gcc-common.inc
@@ -14,7 +14,7 @@ def get_gcc_fpu_setting(bb, d):
# We really need HOST_SYS here for some packages and TARGET_SYS for others.
# For now, libgcc is most important so we fix for that - RP.
-SHLIBSDIR = "${STAGING_DIR}/${TARGET_SYS}/shlibs"
+SHLIBSDIR = "${STAGING_DIR_TARGET}/shlibs"
DEBIANNAME_libgcc = "libgcc1"
diff --git a/packages/gcc/gcc-package-sdk.inc b/packages/gcc/gcc-package-sdk.inc
index a36e632c9f..41f47aec1d 100644
--- a/packages/gcc/gcc-package-sdk.inc
+++ b/packages/gcc/gcc-package-sdk.inc
@@ -20,6 +20,7 @@ FILES_${PN} = "\
${includedir}/c++/${BINV} \
${prefix}/${TARGET_SYS}/bin/* \
${prefix}/${TARGET_SYS}/lib/* \
+ ${prefix}/${TARGET_SYS}/usr/include/* \
"
FILES_${PN}-doc = "\
${infodir} \
diff --git a/packages/gcc/gcc-package-target.inc b/packages/gcc/gcc-package-target.inc
index 9076c013e1..68c84abd5a 100644
--- a/packages/gcc/gcc-package-target.inc
+++ b/packages/gcc/gcc-package-target.inc
@@ -154,4 +154,7 @@ do_install () {
ln -sf gcc cc
ln -sf ${bindir}/${TARGET_SYS}-cpp ${D}${base_libdir}/cpp
ln -sf ${bindir}/${TARGET_SYS}-cpp ${D}${bindir}/cpp
+
+ # Remove precompiled c++ headers as they are really big
+ rm -rf ${D}${includedir}/c++/${BINV}/${TARGET_SYS}/bits/*.gch
}
diff --git a/packages/git/git.inc b/packages/git/git.inc
index 879dc84cbe..de63c545da 100644
--- a/packages/git/git.inc
+++ b/packages/git/git.inc
@@ -8,10 +8,10 @@ SRC_URI = "http://www.kernel.org/pub/software/scm/git/git-${PV}.tar.bz2 \
"
S = "${WORKDIR}/git-${PV}"
-EXTRA_OEMAKE = "NO_TCLTK=1"
-
inherit autotools
+EXTRA_OEMAKE = "NO_TCLTK=1"
+
do_install () {
oe_runmake install DESTDIR="${D}" bindir=${bindir} \
template_dir=${datadir}/git-core/templates \
diff --git a/packages/gnash/gnash-minimal.inc b/packages/gnash/gnash-minimal.inc
index fddf030e29..1f3c486e53 100644
--- a/packages/gnash/gnash-minimal.inc
+++ b/packages/gnash/gnash-minimal.inc
@@ -19,7 +19,6 @@ inherit autotools pkgconfig
EXTRA_OECONF="--enable-gui=gtk \
--enable-renderer=agg \
- --enable-media=none \
--enable-agg \
--enable-gui=fb \
--enable-z \
@@ -37,6 +36,7 @@ EXTRA_OECONF="--enable-gui=gtk \
--enable-maintainer-mode \
--enable-fps-debug \
--enable-allstatic \
+ --enable-static \
--with-top-level=${STAGING_DIR_HOST}/usr \
--disable-ltdl-install \
--without-included-ltdl \
@@ -46,7 +46,7 @@ EXTRA_OECONF="--enable-gui=gtk \
# the test for error_t is wrong for uclibc, needs _GNU_SOURCE for correct
# detection because uclibc does not have argz.h which enables error_t
-CFLAGS += " -D_GNU_SOURCE -I${S}/libltdl -I${STAGING_INCDIR}/libltdl"
+CFLAGS += " -D_GNU_SOURCE -I${S}/libltdl -I${STAGING_INCDIR}/libltdl $(pkgconfig --cflags gstreamer)"
PACKAGES =+ "libgnashnet libgnashamf libgnashbase libgnashserver libgnashmedia"
diff --git a/packages/imagemagick/imagemagick-6.4.4-1/.mtn2git_empty b/packages/imagemagick/imagemagick-6.4.4-1/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/imagemagick/imagemagick-6.4.4-1/.mtn2git_empty
diff --git a/packages/imagemagick/imagemagick-6.4.4-1/PerlMagic_MakePatch b/packages/imagemagick/imagemagick-6.4.4-1/PerlMagic_MakePatch
new file mode 100644
index 0000000000..f8ad0afc5f
--- /dev/null
+++ b/packages/imagemagick/imagemagick-6.4.4-1/PerlMagic_MakePatch
@@ -0,0 +1,11 @@
+--- /tmp/Makefile.PL.in 2008-10-01 10:39:38.000000000 +0200
++++ ImageMagick-6.4.4/PerlMagick/Makefile.PL.in 2008-10-01 10:40:25.000000000 +0200
+@@ -87,6 +87,8 @@
+
+ # Use same compiler as ImageMagick
+ 'PERLMAINCC' => '@PERLMAINCC@ @OPENMP_CFLAGS@',
++ 'AR' => '@AR@',
++ 'LD' => '@PERLMAINCC@',
+
+ # Set Perl installation prefix to ImageMagick installation prefix
+ # 'PREFIX' => '@prefix@',
diff --git a/packages/imagemagick/imagemagick_6.4.4-1.bb b/packages/imagemagick/imagemagick_6.4.4-1.bb
new file mode 100644
index 0000000000..42bf1b8bb6
--- /dev/null
+++ b/packages/imagemagick/imagemagick_6.4.4-1.bb
@@ -0,0 +1,39 @@
+DESCRIPTION = "ImageMagick is an image convertion tools"
+SECTION = "console/utils"
+LICENSE = "GPL"
+DEPENDS = "tiff"
+
+SRC_URI = "ftp://ftp.nluug.nl/pub/ImageMagick/ImageMagick-${PV}.tar.bz2 \
+ file://PerlMagic_MakePatch;patch=1 \
+ "
+
+IMVER = "6.4.4"
+
+S = "${WORKDIR}/ImageMagick-${IMVER}"
+
+inherit autotools binconfig pkgconfig
+
+EXTRA_AUTORECONF += "--exclude=libtoolize"
+EXTRA_OECONF = "--without-x --without-freetype --without-perl --disable-openmp"
+
+do_configure() {
+ gnu-configize
+ cp config.{sub,guess} config/
+ oe_runconf
+}
+
+do_stage() {
+ autotools_stage_all
+}
+
+FILES_${PN} += "${libdir}/ImageMagick-${IMVER}/modules-Q16/*/*.so \
+ ${libdir}/ImageMagick-${IMVER}/modules-Q16/*/*.la \
+ ${libdir}/ImageMagick-${IMVER}/config/ \
+ ${datadir}/ImageMagick-${IMVER}"
+
+FILES_${PN}-dev += "${libdir}/ImageMagick-${IMVER}/modules-Q16/*/*.a"
+
+FILES_${PN}-dbg += "${libdir}/ImageMagick-${IMVER}/modules-Q16/*/.debug/*"
+
+LEAD_SONAME = "libMagickCore.so.*"
+
diff --git a/packages/libsdl/libsdl-native_1.2.11.bb b/packages/libsdl/libsdl-native_1.2.11.bb
index d75eec53e8..fb8e12a4c9 100644
--- a/packages/libsdl/libsdl-native_1.2.11.bb
+++ b/packages/libsdl/libsdl-native_1.2.11.bb
@@ -11,6 +11,8 @@ S = "${WORKDIR}/SDL-${PV}"
inherit autotools binconfig pkgconfig native
+PARALLEL_MAKE = ""
+
EXTRA_OECONF = "--disable-debug --disable-cdrom --enable-threads --enable-timers --enable-endian \
--enable-file --disable-oss --disable-alsa --disable-esd --disable-arts \
--disable-diskaudio --disable-nas --disable-esd-shared --disable-esdtest \
diff --git a/packages/linux/linux-omap/010-mru-fix-video-mode-param.diff b/packages/linux/linux-omap/010-mru-fix-video-mode-param.diff
deleted file mode 100644
index 50d69b8b75..0000000000
--- a/packages/linux/linux-omap/010-mru-fix-video-mode-param.diff
+++ /dev/null
@@ -1,35 +0,0 @@
-From: Mans Rullgard <mans@mansr.com>
-Date: Wed, 3 Sep 2008 23:19:04 +0000 (+0100)
-Subject: OMAP: Fix omapfb video mode selection when built as module
-X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=9bafff77f3028cd170c605c8d883963522c8546c
-
-OMAP: Fix omapfb video mode selection when built as module
-
-This fixes the video_mode parameter when omapfb is built as a module.
-
-Signed-off-by: Mans Rullgard <mans@mansr.com>
----
-
-diff --git a/drivers/video/omap/omapfb_main.c b/drivers/video/omap/omapfb_main.c
-index 19a1a83..e0b3642 100644
---- a/drivers/video/omap/omapfb_main.c
-+++ b/drivers/video/omap/omapfb_main.c
-@@ -54,7 +54,7 @@ static unsigned long def_vxres;
- static unsigned long def_vyres;
- static unsigned int def_rotate;
- static unsigned int def_mirror;
--static char def_mode[16] = CONFIG_FB_OMAP_VIDEO_MODE;
-+static char def_mode[16];
-
- #ifdef CONFIG_FB_OMAP_MANUAL_UPDATE
- static int manual_update = 1;
-@@ -2143,7 +2143,8 @@ static int __init omapfb_init(void)
- omapfb_setup(option);
- #endif
-
-- omapfb_find_mode(def_mode, &video_mode);
-+ omapfb_find_mode(def_mode[0]? def_mode : CONFIG_FB_OMAP_VIDEO_MODE,
-+ &video_mode);
-
- /* Register the driver with LDM */
- if (platform_driver_register(&omapfb_driver)) {
diff --git a/packages/linux/linux-omap/04-use-pcd.diff b/packages/linux/linux-omap/04-use-pcd.diff
deleted file mode 100644
index bdf8ab5f0b..0000000000
--- a/packages/linux/linux-omap/04-use-pcd.diff
+++ /dev/null
@@ -1,28 +0,0 @@
-From: Mans Rullgard <mans@mansr.com>
-Date: Sun, 6 Jul 2008 13:22:54 +0000 (+0100)
-Subject: omapfb: use PCD if set in panel config
-X-Git-Tag: beagle-5
-X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=c8060d36ae156771f00a7a27cabf1b4435c378bd
-
-omapfb: use PCD if set in panel config
----
-
-diff --git a/drivers/video/omap/dispc.c b/drivers/video/omap/dispc.c
-index 3b36227..4e1a8e3 100644
---- a/drivers/video/omap/dispc.c
-+++ b/drivers/video/omap/dispc.c
-@@ -798,7 +798,13 @@ static void set_lcd_timings(void)
- l |= panel->acb & 0xff;
- dispc_write_reg(DISPC_POL_FREQ, l);
-
-- calc_ck_div(is_tft, panel->pixel_clock * 1000, &lck_div, &pck_div);
-+ if (panel->pcd) {
-+ pck_div = panel->pcd;
-+ lck_div = 1;
-+ } else {
-+ calc_ck_div(is_tft, panel->pixel_clock * 1000,
-+ &lck_div, &pck_div);
-+ }
-
- l = dispc_read_reg(DISPC_DIVISOR);
- l &= ~(FLD_MASK(16, 8) | FLD_MASK(0, 8));
diff --git a/packages/linux/linux-omap/16bpp.patch b/packages/linux/linux-omap/16bpp.patch
deleted file mode 100644
index d2bff4b018..0000000000
--- a/packages/linux/linux-omap/16bpp.patch
+++ /dev/null
@@ -1,137 +0,0 @@
-diff --git a/drivers/video/omap/Kconfig b/drivers/video/omap/Kconfig
-index bdeb8fb..bf256f3 100644
---- a/drivers/video/omap/Kconfig
-+++ b/drivers/video/omap/Kconfig
-@@ -7,6 +7,27 @@ config FB_OMAP
- help
- Frame buffer driver for OMAP based boards.
-
-+choice
-+ depends on FB_OMAP && MACH_OMAP3_BEAGLE
-+ prompt "Screen resolution"
-+ default FB_OMAP_079M3R
-+ help
-+ Selected desired screen resolution
-+
-+config FB_OMAP_031M3R
-+ boolean "640 x 480 @ 60 Hz Reduced blanking"
-+
-+config FB_OMAP_048M3R
-+ boolean "800 x 600 @ 60 Hz Reduced blanking"
-+
-+config FB_OMAP_079M3R
-+ boolean "1024 x 768 @ 60 Hz Reduced blanking"
-+
-+config FB_OMAP_092M9R
-+ boolean "1280 x 720 @ 60 Hz Reduced blanking"
-+
-+endchoice
-+
- config FB_OMAP_LCDC_EXTERNAL
- bool "External LCD controller support"
- depends on FB_OMAP
-diff --git a/drivers/video/omap/lcd_omap3beagle.c b/drivers/video/omap/lcd_omap3beagle.c
-index 69d4e06..5e098c2 100644
---- a/drivers/video/omap/lcd_omap3beagle.c
-+++ b/drivers/video/omap/lcd_omap3beagle.c
-@@ -31,10 +31,6 @@
-
- #define LCD_PANEL_ENABLE_GPIO 170
-
--#define LCD_XRES 1024
--#define LCD_YRES 768
--#define LCD_PIXCLOCK 64000 /* in kHz */
--
- static int omap3beagle_panel_init(struct lcd_panel *panel,
- struct omapfb_device *fbdev)
- {
-@@ -65,19 +61,76 @@ static unsigned long omap3beagle_panel_get_caps(struct lcd_panel *panel)
- struct lcd_panel omap3beagle_panel = {
- .name = "omap3beagle",
- .config = OMAP_LCDC_PANEL_TFT,
--
-- .bpp = 24,
-+ .bpp = 16,
- .data_lines = 24,
-- .x_res = LCD_XRES,
-- .y_res = LCD_YRES,
-- .hsw = 3, /* hsync_len (4) - 1 */
-- .hfp = 3, /* right_margin (4) - 1 */
-- .hbp = 39, /* left_margin (40) - 1 */
-- .vsw = 1, /* vsync_len (2) - 1 */
-- .vfp = 2, /* lower_margin */
-- .vbp = 7, /* upper_margin (8) - 1 */
--
-- .pixel_clock = LCD_PIXCLOCK,
-+
-+#if defined CONFIG_FB_OMAP_031M3R
-+
-+ /* 640 x 480 @ 60 Hz Reduced blanking VESA CVT 0.31M3-R */
-+ .x_res = 640,
-+ .y_res = 480,
-+ .hfp = 48,
-+ .hsw = 32,
-+ .hbp = 80,
-+ .vfp = 3,
-+ .vsw = 4,
-+ .vbp = 7,
-+ .pixel_clock = 23500,
-+
-+#elif defined CONFIG_FB_OMAP_048M3R
-+
-+ /* 800 x 600 @ 60 Hz Reduced blanking VESA CVT 0.48M3-R */
-+ .x_res = 800,
-+ .y_res = 600,
-+ .hfp = 48,
-+ .hsw = 32,
-+ .hbp = 80,
-+ .vfp = 3,
-+ .vsw = 4,
-+ .vbp = 11,
-+ .pixel_clock = 35500,
-+
-+#elif defined CONFIG_FB_OMAP_079M3R
-+
-+ /* 1024 x 768 @ 60 Hz Reduced blanking VESA CVT 0.79M3-R */
-+ .x_res = 1024,
-+ .y_res = 768,
-+ .hfp = 48,
-+ .hsw = 32,
-+ .hbp = 80,
-+ .vfp = 3,
-+ .vsw = 4,
-+ .vbp = 15,
-+ .pixel_clock = 56000,
-+
-+#elif defined CONFIG_FB_OMAP_092M9R
-+
-+ /* 1280 x 720 @ 60 Hz Reduced blanking VESA CVT 0.92M9-R */
-+ .x_res = 1280,
-+ .y_res = 720,
-+ .hfp = 48,
-+ .hsw = 32,
-+ .hbp = 80,
-+ .vfp = 3,
-+ .vsw = 5,
-+ .vbp = 13,
-+ .pixel_clock = 64000,
-+
-+#else
-+
-+ /* use 640 x 480 if no config option */
-+ /* 640 x 480 @ 60 Hz Reduced blanking VESA CVT 0.31M3-R */
-+ .x_res = 640,
-+ .y_res = 480,
-+ .hfp = 48,
-+ .hsw = 32,
-+ .hbp = 80,
-+ .vfp = 3,
-+ .vsw = 4,
-+ .vbp = 7,
-+ .pixel_clock = 23500,
-+
-+#endif
-
- .init = omap3beagle_panel_init,
- .cleanup = omap3beagle_panel_cleanup,
-
diff --git a/packages/linux/linux-omap/4bitmmc.diff b/packages/linux/linux-omap/4bitmmc.diff
deleted file mode 100644
index 5cd120c544..0000000000
--- a/packages/linux/linux-omap/4bitmmc.diff
+++ /dev/null
@@ -1,38 +0,0 @@
-From: Purushotam Kumar <purushotam@ti.com>
-Date: Fri, 18 Jul 2008 23:28:57 +0000 (-0700)
-Subject: OMAP3:devices.c:Enabling 4-bit for SD card
-X-Git-Url: http://www.sakoman.net/cgi-bin/gitweb.cgi?p=linux-omap-2.6.git;a=commitdiff_plain;h=6c4d34031c80ca4b50ffe73a4ef7fe197a760a60
-
-OMAP3:devices.c:Enabling 4-bit for SD card
-
-SD card was working in 1-bit mode.This patch will configure SD card in
-4-bit mode and hence performance will increase.
-
-Signed-off-by: Purushotam Kumar <purushotam@ti.com>
-Acked-by: Madhusudhan Chikkature Rajashekar <madhu.cr@ti.com>
----
-
-diff --git a/arch/arm/plat-omap/devices.c b/arch/arm/plat-omap/devices.c
-index b83f9a6..d0cfceb 100644
---- a/arch/arm/plat-omap/devices.c
-+++ b/arch/arm/plat-omap/devices.c
-@@ -296,13 +296,17 @@ static void __init omap_init_mmc(void)
- mmc = &mmc_conf->mmc[0];
-
- if (cpu_is_omap2430() || cpu_is_omap34xx()) {
-- if (mmc->enabled)
-+ if (mmc->enabled) {
-+ mmc1_data.conf = *mmc;
- (void) platform_device_register(&mmc_omap_device1);
-+ }
-
- #if defined(CONFIG_ARCH_OMAP2430) || defined(CONFIG_ARCH_OMAP34XX)
- mmc = &mmc_conf->mmc[1];
-- if (mmc->enabled)
-+ if (mmc->enabled) {
-+ mmc2_data.conf = *mmc;
- (void) platform_device_register(&mmc_omap_device2);
-+ }
- #endif
-
- return;
diff --git a/packages/linux/linux-omap/musb-dmafix.patch b/packages/linux/linux-omap/musb-dmafix.patch
deleted file mode 100644
index 259b79be59..0000000000
--- a/packages/linux/linux-omap/musb-dmafix.patch
+++ /dev/null
@@ -1,275 +0,0 @@
-From: Gadiyar, Anand <gadiyar@ti.com>
-Date: Wed, 13 Aug 2008 07:05:29 +0000 (+0530)
-Subject: MUSB: Workaround for simultaneous TX and RX usage
-X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=2e6aa4efb0e14c51ff0427927b1b38136911fa93
-
-MUSB: Workaround for simultaneous TX and RX usage
-
-MUSB: Workaround for simultaneous TX and RX usage
-
-MUSB RTL V1.4 has a hardware issue which results in a DMA controller
-hang when TX and RX DMA channels are simultaneously enabled. This
-affects at least OMAP2430 and OMAP34XX.
-
-Since RX transfers are in Mode 0 and anyway result in one DMA interrupt
-per packet, we can use System DMA to unload the RX fifos. MUSB DMA can
-be used for all TX channels as before.
-
-Tested with full-duplex TX and RX transfers using g_ether. Runs for 24
-hours without a hang. Without this patch, the hang occurs within minutes.
-
-This issue was first reported by Jon Hunter on [1]
-
-[1] http://marc.info/?l=linux-omap&m=119634480534453&w=2
-
-Signed-off-by: Anand Gadiyar <gadiyar@ti.com>
----
-
-diff --git a/drivers/usb/musb/Kconfig b/drivers/usb/musb/Kconfig
-index a485a86..8583e54 100644
---- a/drivers/usb/musb/Kconfig
-+++ b/drivers/usb/musb/Kconfig
-@@ -150,6 +150,14 @@ config USB_INVENTRA_DMA
- help
- Enable DMA transfers using Mentor's engine.
-
-+config MUSB_USE_SYSTEM_DMA_RX
-+ bool 'Use System DMA for RX endpoints'
-+ depends on USB_MUSB_HDRC && USB_INVENTRA_DMA
-+ help
-+ MUSB RTL version 1.4 has a hardware issue when TX and RX DMA
-+ channels are simultaneously enabled. To work around this issue,
-+ you can choose to use System DMA for RX channels.
-+
- config USB_TI_CPPI_DMA
- bool
- depends on USB_MUSB_HDRC && !MUSB_PIO_ONLY
-diff --git a/drivers/usb/musb/musbhsdma.c b/drivers/usb/musb/musbhsdma.c
-index 32bb1e2..d1c1ea0 100644
---- a/drivers/usb/musb/musbhsdma.c
-+++ b/drivers/usb/musb/musbhsdma.c
-@@ -34,6 +34,7 @@
- #include <linux/interrupt.h>
- #include <linux/platform_device.h>
- #include "musb_core.h"
-+#include <asm/dma.h>
-
- #if defined(CONFIG_ARCH_OMAP2430) || defined(CONFIG_ARCH_OMAP3430)
- #include "omap2430.h"
-@@ -64,6 +65,9 @@
-
- #define MUSB_HSDMA_CHANNELS 8
-
-+#define MUSB_FIFO_ADDRESS(epnum) \
-+ ((unsigned long) (OMAP_HSOTG_BASE + MUSB_FIFO_OFFSET(epnum)))
-+
- struct musb_dma_controller;
-
- struct musb_dma_channel {
-@@ -75,6 +79,8 @@ struct musb_dma_channel {
- u8 bIndex;
- u8 epnum;
- u8 transmit;
-+
-+ int sysdma_channel;
- };
-
- struct musb_dma_controller {
-@@ -93,6 +99,42 @@ static int dma_controller_start(struct dma_controller *c)
- return 0;
- }
-
-+#ifdef CONFIG_MUSB_USE_SYSTEM_DMA_RX
-+static void musb_sysdma_completion(int lch, u16 ch_status, void *data)
-+{
-+ u32 dwAddress;
-+ unsigned long flags;
-+
-+ struct dma_channel *pChannel;
-+
-+ struct musb_dma_channel *pImplChannel =
-+ (struct musb_dma_channel *) data;
-+ struct musb_dma_controller *controller = pImplChannel->controller;
-+ struct musb *musb = controller->pDmaPrivate;
-+ pChannel = &pImplChannel->Channel;
-+
-+ DBG(2, "lch = 0x%d, ch_status = 0x%x\n", lch, ch_status);
-+ spin_lock_irqsave(&musb->lock, flags);
-+
-+ dwAddress = (u32) omap_get_dma_dst_pos(pImplChannel->sysdma_channel);
-+ pChannel->actual_len = dwAddress - pImplChannel->dwStartAddress;
-+
-+ DBG(2, "ch %p, 0x%x -> 0x%x (%d / %d) %s\n",
-+ pChannel, pImplChannel->dwStartAddress, dwAddress,
-+ pChannel->actual_len, pImplChannel->len,
-+ (pChannel->actual_len < pImplChannel->len) ?
-+ "=> reconfig 0": "=> complete");
-+
-+ pChannel->status = MUSB_DMA_STATUS_FREE;
-+ musb_dma_completion(musb, pImplChannel->epnum, pImplChannel->transmit);
-+
-+ spin_unlock_irqrestore(&musb->lock, flags);
-+ return;
-+}
-+#else
-+#define musb_sysdma_completion NULL
-+#endif
-+
- static void dma_channel_release(struct dma_channel *pChannel);
-
- static int dma_controller_stop(struct dma_controller *c)
-@@ -144,6 +186,29 @@ static struct dma_channel *dma_channel_allocate(struct dma_controller *c,
- /* Tx => mode 1; Rx => mode 0 */
- pChannel->desired_mode = transmit;
- pChannel->actual_len = 0;
-+ pImplChannel->sysdma_channel = -1;
-+
-+#ifdef CONFIG_MUSB_USE_SYSTEM_DMA_RX
-+ if (!transmit) {
-+ int ret;
-+ ret = omap_request_dma(OMAP24XX_DMA_NO_DEVICE,
-+ "MUSB SysDMA", musb_sysdma_completion,
-+ (void *) pImplChannel,
-+ &(pImplChannel->sysdma_channel));
-+
-+ if (ret) {
-+ printk(KERN_ERR "request_dma failed:"
-+ " %d\n", ret);
-+ controller->bmUsedChannels &=
-+ ~(1 << bBit);
-+ pChannel->status =
-+ MUSB_DMA_STATUS_UNKNOWN;
-+ pImplChannel->sysdma_channel = -1;
-+ pChannel = NULL;
-+ }
-+ }
-+#endif
-+
- break;
- }
- }
-@@ -163,6 +228,12 @@ static void dma_channel_release(struct dma_channel *pChannel)
- ~(1 << pImplChannel->bIndex);
-
- pChannel->status = MUSB_DMA_STATUS_UNKNOWN;
-+
-+ if (pImplChannel->sysdma_channel != -1) {
-+ omap_stop_dma(pImplChannel->sysdma_channel);
-+ omap_free_dma(pImplChannel->sysdma_channel);
-+ pImplChannel->sysdma_channel = -1;
-+ }
- }
-
- static void configure_channel(struct dma_channel *pChannel,
-@@ -179,41 +250,69 @@ static void configure_channel(struct dma_channel *pChannel,
- DBG(4, "%p, pkt_sz %d, addr 0x%x, len %d, mode %d\n",
- pChannel, packet_sz, dma_addr, len, mode);
-
-- if (mode) {
-- csr |= 1 << MUSB_HSDMA_MODE1_SHIFT;
-- BUG_ON(len < packet_sz);
-+ if (pImplChannel->sysdma_channel != -1) {
-+ /* System DMA */
-+ /* RX: set src = FIFO */
-+
-+ omap_set_dma_transfer_params(pImplChannel->sysdma_channel,
-+ OMAP_DMA_DATA_TYPE_S8,
-+ len, 1, /* One frame */
-+ OMAP_DMA_SYNC_ELEMENT,
-+ OMAP24XX_DMA_NO_DEVICE,
-+ 0); /* Src Sync */
-+
-+ omap_set_dma_src_params(pImplChannel->sysdma_channel, 0,
-+ OMAP_DMA_AMODE_CONSTANT,
-+ MUSB_FIFO_ADDRESS(pImplChannel->epnum),
-+ 0, 0);
-
-- if (packet_sz >= 64) {
-- csr |= MUSB_HSDMA_BURSTMODE_INCR16
-+ omap_set_dma_dest_params(pImplChannel->sysdma_channel, 0,
-+ OMAP_DMA_AMODE_POST_INC, dma_addr,
-+ 0, 0);
-+
-+ omap_set_dma_dest_data_pack(pImplChannel->sysdma_channel, 1);
-+ omap_set_dma_dest_burst_mode(pImplChannel->sysdma_channel,
-+ OMAP_DMA_DATA_BURST_16);
-+
-+ omap_start_dma(pImplChannel->sysdma_channel);
-+
-+ } else { /* Mentor DMA */
-+ if (mode) {
-+ csr |= 1 << MUSB_HSDMA_MODE1_SHIFT;
-+ BUG_ON(len < packet_sz);
-+
-+ if (packet_sz >= 64) {
-+ csr |= MUSB_HSDMA_BURSTMODE_INCR16
- << MUSB_HSDMA_BURSTMODE_SHIFT;
-- } else if (packet_sz >= 32) {
-- csr |= MUSB_HSDMA_BURSTMODE_INCR8
-+ } else if (packet_sz >= 32) {
-+ csr |= MUSB_HSDMA_BURSTMODE_INCR8
- << MUSB_HSDMA_BURSTMODE_SHIFT;
-- } else if (packet_sz >= 16) {
-- csr |= MUSB_HSDMA_BURSTMODE_INCR4
-+ } else if (packet_sz >= 16) {
-+ csr |= MUSB_HSDMA_BURSTMODE_INCR4
- << MUSB_HSDMA_BURSTMODE_SHIFT;
-+ }
- }
-- }
-
-- csr |= (pImplChannel->epnum << MUSB_HSDMA_ENDPOINT_SHIFT)
-- | (1 << MUSB_HSDMA_ENABLE_SHIFT)
-- | (1 << MUSB_HSDMA_IRQENABLE_SHIFT)
-- | (pImplChannel->transmit
-- ? (1 << MUSB_HSDMA_TRANSMIT_SHIFT)
-- : 0);
--
-- /* address/count */
-- musb_writel(mbase,
-- MUSB_HSDMA_CHANNEL_OFFSET(bChannel, MUSB_HSDMA_ADDRESS),
-- dma_addr);
-- musb_writel(mbase,
-- MUSB_HSDMA_CHANNEL_OFFSET(bChannel, MUSB_HSDMA_COUNT),
-- len);
--
-- /* control (this should start things) */
-- musb_writew(mbase,
-- MUSB_HSDMA_CHANNEL_OFFSET(bChannel, MUSB_HSDMA_CONTROL),
-- csr);
-+ csr |= (pImplChannel->epnum << MUSB_HSDMA_ENDPOINT_SHIFT)
-+ | (1 << MUSB_HSDMA_ENABLE_SHIFT)
-+ | (1 << MUSB_HSDMA_IRQENABLE_SHIFT)
-+ | (pImplChannel->transmit
-+ ? (1 << MUSB_HSDMA_TRANSMIT_SHIFT)
-+ : 0);
-+
-+ /* address/count */
-+ musb_writel(mbase,
-+ MUSB_HSDMA_CHANNEL_OFFSET(bChannel, MUSB_HSDMA_ADDRESS),
-+ dma_addr);
-+ musb_writel(mbase,
-+ MUSB_HSDMA_CHANNEL_OFFSET(bChannel, MUSB_HSDMA_COUNT),
-+ len);
-+
-+ /* control (this should start things) */
-+ musb_writew(mbase,
-+ MUSB_HSDMA_CHANNEL_OFFSET(bChannel, MUSB_HSDMA_CONTROL),
-+ csr);
-+ } /* Mentor DMA */
- }
-
- static int dma_channel_program(struct dma_channel *pChannel,
-@@ -265,6 +364,12 @@ static int dma_channel_abort(struct dma_channel *pChannel)
- MUSB_EP_OFFSET(pImplChannel->epnum, MUSB_TXCSR),
- csr);
- } else {
-+ if (pImplChannel->sysdma_channel != -1) {
-+ omap_stop_dma(pImplChannel->sysdma_channel);
-+ omap_free_dma(pImplChannel->sysdma_channel);
-+ pImplChannel->sysdma_channel = -1;
-+ }
-+
- csr = musb_readw(mbase,
- MUSB_EP_OFFSET(pImplChannel->epnum, MUSB_RXCSR));
- csr &= ~(MUSB_RXCSR_AUTOCLEAR |
diff --git a/packages/linux/linux-omap/musb-fix-multiple-bulk-transfers.diff b/packages/linux/linux-omap/musb-fix-multiple-bulk-transfers.diff
new file mode 100644
index 0000000000..7435a2e413
--- /dev/null
+++ b/packages/linux/linux-omap/musb-fix-multiple-bulk-transfers.diff
@@ -0,0 +1,194 @@
+From: Ajay Kumar Gupta <ajay.gupta@ti.com>
+To: linux-usb@vger.kernel.org
+Cc: linux-omap@vger.kernel.org, felipe.balbi@nokia.com,
+Subject: [PATCH] MUSB: Fix for kernel panic with multiple bulk transfer
+Date: Wed, 1 Oct 2008 13:08:56 +0530
+
+Fixes kernel panic when multiple copy is performed among more than two mass
+storage media and transfer is aborted.musb_advance_schedule(),
+musb_urb_dequeue(),musb_cleanup_urb() and musb_h_disable() functions have
+been modified to correct urb handling associated with bulk and control
+endpoints which are multiplexed on one hardware endpoint.
+
+musb_advance_schedule() has been removed from musb_cleanup_urb() and added
+to musb_urb_dequeue(). musb_h_disable() has been modified to take care of
+multiple qh on same hw_ep scenario.
+
+Signed-off-by: Ajay Kumar Gupta <ajay.gupta@ti.com>
+CC: Romit Dasgupta <romit@ti.com>
+---
+Suggestions welcome to move while loop doing kfree(qh) from
+musb_advance_schedule() and musb_h_disable() to musb_giveback().
+
+ drivers/usb/musb/musb_host.c | 105 ++++++++++++++++++++++++++++++-----------
+ 1 files changed, 77 insertions(+), 28 deletions(-)
+
+diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c
+index 8b4be01..c2474de 100644
+--- a/drivers/usb/musb/musb_host.c
++++ b/drivers/usb/musb/musb_host.c
+@@ -427,8 +427,17 @@ musb_advance_schedule(struct musb *musb, struct urb *urb,
+ qh = musb_giveback(qh, urb, 0);
+ else
+ qh = musb_giveback(qh, urb, urb->status);
++ while (qh && qh->is_ready && list_empty(&qh->hep->urb_list)) {
++ struct list_head *head;
++ head = qh->ring.prev;
++ list_del(&qh->ring);
++ qh->hep->hcpriv = NULL;
++ kfree(qh);
++ qh = first_qh(head);
++ }
+
+- if (qh && qh->is_ready && !list_empty(&qh->hep->urb_list)) {
++
++ if (qh && qh->is_ready) {
+ DBG(4, "... next ep%d %cX urb %p\n",
+ hw_ep->epnum, is_in ? 'R' : 'T',
+ next_urb(qh));
+@@ -1964,8 +1973,6 @@ static int musb_cleanup_urb(struct urb *urb, struct musb_qh *qh, int is_in)
+ /* flush cpu writebuffer */
+ csr = musb_readw(epio, MUSB_TXCSR);
+ }
+- if (status == 0)
+- musb_advance_schedule(ep->musb, urb, ep, is_in);
+ return status;
+ }
+
+@@ -2026,13 +2033,24 @@ static int musb_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status)
+ /* NOTE: qh is invalid unless !list_empty(&hep->urb_list) */
+ if (ret < 0 || (sched && qh != first_qh(sched))) {
+ int ready = qh->is_ready;
+-
++ int type = urb->pipe;
+ ret = 0;
+ qh->is_ready = 0;
+ __musb_giveback(musb, urb, 0);
+- qh->is_ready = ready;
+- } else
++
++ if (list_empty(&qh->hep->urb_list) && list_empty(&qh->ring))
++ list_del(&qh->ring);
++ else
++ qh->is_ready = ready;
++ if (usb_pipeisoc(type))
++ musb->periodic[qh->hw_ep->epnum] = NULL;
++ } else {
+ ret = musb_cleanup_urb(urb, qh, urb->pipe & USB_DIR_IN);
++ if (!ret) {
++ musb_advance_schedule(qh->hw_ep->musb, urb, qh->hw_ep,
++ urb->pipe & USB_DIR_IN);
++ }
++ }
+ done:
+ spin_unlock_irqrestore(&musb->lock, flags);
+ return ret;
+@@ -2046,14 +2064,17 @@ musb_h_disable(struct usb_hcd *hcd, struct usb_host_endpoint *hep)
+ unsigned long flags;
+ struct musb *musb = hcd_to_musb(hcd);
+ u8 is_in = epnum & USB_DIR_IN;
+- struct musb_qh *qh = hep->hcpriv;
++ struct musb_qh *qh, *qh_for_curr_urb;
+ struct urb *urb, *tmp;
+ struct list_head *sched;
+-
+- if (!qh)
+- return;
++ int i;
+
+ spin_lock_irqsave(&musb->lock, flags);
++ qh = hep->hcpriv;
++ if (!qh) {
++ spin_unlock_irqrestore(&musb->lock, flags);
++ return;
++ }
+
+ switch (qh->type) {
+ case USB_ENDPOINT_XFER_CONTROL:
+@@ -2065,6 +2086,13 @@ musb_h_disable(struct usb_hcd *hcd, struct usb_host_endpoint *hep)
+ else
+ sched = &musb->out_bulk;
+ break;
++ case USB_ENDPOINT_XFER_ISOC:
++ case USB_ENDPOINT_XFER_INT:
++ for (i = 0; i < musb->nr_endpoints; i++) {
++ if (musb->periodic[i] == qh)
++ sched = &qh->ring;
++ break;
++ }
+ default:
+ /* REVISIT when we get a schedule tree, periodic transfers
+ * won't always be at the head of a singleton queue...
+@@ -2073,26 +2101,47 @@ musb_h_disable(struct usb_hcd *hcd, struct usb_host_endpoint *hep)
+ break;
+ }
+
+- /* NOTE: qh is invalid unless !list_empty(&hep->urb_list) */
+-
+ /* kick first urb off the hardware, if needed */
+- qh->is_ready = 0;
+- if (!sched || qh == first_qh(sched)) {
++ if (sched) {
++ qh_for_curr_urb = qh;
+ urb = next_urb(qh);
+-
+- /* make software (then hardware) stop ASAP */
+- if (!urb->unlinked)
+- urb->status = -ESHUTDOWN;
+-
+- /* cleanup */
+- musb_cleanup_urb(urb, qh, urb->pipe & USB_DIR_IN);
+- } else
+- urb = NULL;
+-
+- /* then just nuke all the others */
+- list_for_each_entry_safe_from(urb, tmp, &hep->urb_list, urb_list)
+- musb_giveback(qh, urb, -ESHUTDOWN);
+-
++ if (urb) {
++ /* make software (then hardware) stop ASAP */
++ if (!urb->unlinked)
++ urb->status = -ESHUTDOWN;
++ /* cleanup first urb of first qh; */
++ if (qh == first_qh(sched)) {
++ musb_cleanup_urb(urb, qh,
++ urb->pipe & USB_DIR_IN);
++ }
++ qh = musb_giveback(qh, urb, -ESHUTDOWN);
++ if (qh == qh_for_curr_urb) {
++ list_for_each_entry_safe_from(urb, tmp,
++ &hep->urb_list, urb_list) {
++ qh = musb_giveback(qh, tmp, -ESHUTDOWN);
++ if (qh != qh_for_curr_urb)
++ break;
++ }
++ }
++ }
++ /* pick the next candidate and go */
++ if (qh && qh->is_ready) {
++ while (qh && qh->is_ready &&
++ list_empty(&qh->hep->urb_list)) {
++ struct list_head *head;
++ head = qh->ring.prev;
++ list_del(&qh->ring);
++ qh->hep->hcpriv = NULL;
++ kfree(qh);
++ qh = first_qh(head);
++ }
++ if (qh && qh->is_ready) {
++ epnum = qh->hep->desc.bEndpointAddress;
++ is_in = epnum & USB_DIR_IN;
++ musb_start_urb(musb, is_in, qh);
++ }
++ }
++ }
+ spin_unlock_irqrestore(&musb->lock, flags);
+ }
+
+--
+1.5.6
+
+--
+To unsubscribe from this list: send the line "unsubscribe linux-omap" in
+the body of a message to majordomo@vger.kernel.org
+More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/packages/linux/linux-omap/omap3evm/OMAP3EVM_TWL4030-Keypad-irq-error-fix.patch b/packages/linux/linux-omap/omap3evm/OMAP3EVM_TWL4030-Keypad-irq-error-fix.patch
deleted file mode 100644
index aac1151b78..0000000000
--- a/packages/linux/linux-omap/omap3evm/OMAP3EVM_TWL4030-Keypad-irq-error-fix.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-without this the below error messages were coming continuously
-
-TWL4030 module irq 369 is disabled but can't be masked!
-<2>TWL4030 module irq 369 is disabled but can't be masked!
-
-Signed-off-by: Arun C <arunedarath@mistralsolutions.com>
----
- arch/arm/mach-omap2/board-omap3evm.c | 2 ++
- 1 files changed, 2 insertions(+), 0 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/board-omap3evm.c
-b/arch/arm/mach-omap2/board-omap3evm.c
-index 92f70ce..f9fd06b 100644
---- a/arch/arm/mach-omap2/board-omap3evm.c
-+++ b/arch/arm/mach-omap2/board-omap3evm.c
-@@ -22,6 +22,7 @@
- #include <linux/input.h>
- #include <linux/spi/spi.h>
- #include <linux/spi/ads7846.h>
-+#include <linux/i2c/twl4030.h>
-
- #include <mach/hardware.h>
- #include <asm/mach-types.h>
-@@ -176,6 +177,7 @@ static struct omap_kp_platform_data omap3evm_kp_data = {
- .keymap = omap3evm_keymap,
- .keymapsize = ARRAY_SIZE(omap3evm_keymap),
- .rep = 1,
-+ .irq = TWL4030_MODIRQ_KEYPAD,
- };
-
- static struct platform_device omap3evm_kp_device = {
-
diff --git a/packages/linux/linux-omap_git.bb b/packages/linux/linux-omap_git.bb
index 54a73b308c..3adc9366ba 100644
--- a/packages/linux/linux-omap_git.bb
+++ b/packages/linux/linux-omap_git.bb
@@ -9,7 +9,7 @@ COMPATIBLE_MACHINE = "omap5912osk|omap1710h3|omap2430sdp|omap2420h4|beagleboard|
SRCREV = "e1c49d7d22af768188e2a54c167ed79919361e55"
PV = "2.6.26+2.6.27-rc7+${PR}+git${SRCREV}"
-PR = "r9"
+PR = "r10"
SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git;protocol=git \
file://defconfig"
@@ -31,11 +31,9 @@ SRC_URI_append = " \
file://mru-make-video-timings-selectable.diff;patch=1 \
file://mru-enable-overlay-optimalization.diff;patch=1 \
file://musb-fix-ISO-in-unlink.diff;patch=1 \
+ file://musb-fix-multiple-bulk-transfers.diff;patch=1 \
"
-temporarely-disabled = " \
- file://musb-dmafix.patch;patch=1 \
-"
SRC_URI_append_beagleboard = " file://logo_linux_clut224.ppm \
file://beagle-asoc.diff;patch=1 \
diff --git a/packages/linux/linux_2.6.25.bb b/packages/linux/linux_2.6.25.bb
index 6992747e7b..c095e5c3a2 100644
--- a/packages/linux/linux_2.6.25.bb
+++ b/packages/linux/linux_2.6.25.bb
@@ -33,6 +33,7 @@ SRC_URI_append_cm-x270 = " \
SRC_URI_append_at32stk1000 = " \
http://avr32linux.org/twiki/pub/Main/LinuxPatches/linux-2.6.25.6.atmel.1.patch.bz2;patch=1 \
file://virtualmouse.patch;patch=1 \
+# file://pll1.diff;patch=1 \
"
SRC_URI_append_at91-l9260 = " \
diff --git a/packages/mtd/mtd-utils_1.1.0.bb b/packages/mtd/mtd-utils_1.1.0.bb
index dcab927437..e585cf5ab8 100644
--- a/packages/mtd/mtd-utils_1.1.0.bb
+++ b/packages/mtd/mtd-utils_1.1.0.bb
@@ -5,7 +5,7 @@ HOMEPAGE = "http://www.linux-mtd.infradead.org/"
LICENSE = "GPLv2"
PR = "r3"
-SRC_URI = "ftp://ftp.infradead.org/pub/mtd-utils/mtd-utils-1.1.0.tar.bz2 \
+SRC_URI = "ftp://ftp.infradead.org/pub/mtd-utils/mtd-utils-${PV}.tar.bz2 \
file://add-exclusion-to-mkfs-jffs2-git.patch;patch=1 \
file://fix-ignoreerrors-git.patch;patch=1 \
file://lzo_1x.patch;patch=1"
diff --git a/packages/perl/perl-native_5.8.8.bb b/packages/perl/perl-native_5.8.8.bb
index 0e89f11050..c1f2585658 100644
--- a/packages/perl/perl-native_5.8.8.bb
+++ b/packages/perl/perl-native_5.8.8.bb
@@ -63,8 +63,8 @@ do_stage_append() {
# We need a hostperl link for building perl
ln -sf ${STAGING_BINDIR_NATIVE}/perl${PV} ${STAGING_BINDIR_NATIVE}/hostperl
# Store native config in non-versioned directory
- install -d ${STAGING_DIR}/${HOST_SYS}/perl
- install config.sh ${STAGING_DIR}/${HOST_SYS}/perl
+ install -d ${STAGING_DIR_HOST}/perl
+ install config.sh ${STAGING_DIR_HOST}/perl
}
PARALLEL_MAKE = ""
diff --git a/packages/perl/perl.inc b/packages/perl/perl.inc
index 9e20ae63e6..00184a9dac 100644
--- a/packages/perl/perl.inc
+++ b/packages/perl/perl.inc
@@ -36,8 +36,8 @@ do_install() {
}
do_stage() {
- install -d ${STAGING_DIR}/${HOST_SYS}/perl/
- install config.sh ${STAGING_DIR}/${HOST_SYS}/perl/
+ install -d ${STAGING_DIR_HOST}/perl/
+ install config.sh ${STAGING_DIR_HOST}/perl/
}
PACKAGES_DYNAMIC = "perl-module-*"
diff --git a/packages/perl/perl_5.8.8.bb b/packages/perl/perl_5.8.8.bb
index c04485e886..8c00a61536 100644
--- a/packages/perl/perl_5.8.8.bb
+++ b/packages/perl/perl_5.8.8.bb
@@ -137,11 +137,11 @@ do_install() {
fi
}
do_stage() {
- install -d ${STAGING_DIR}/${HOST_SYS}/perl \
+ install -d ${STAGING_DIR_HOST}/perl \
${STAGING_LIBDIR_NATIVE}/perl/${PV} \
${STAGING_LIBDIR}/perl/${PV}/CORE
# target config, used by cpan.bbclass to extract version information
- install config.sh ${STAGING_DIR}/${HOST_SYS}/perl/
+ install config.sh ${STAGING_DIR_HOST}/perl/
# target configuration, used by native perl when cross-compiling
install lib/Config_heavy.pl ${STAGING_LIBDIR_NATIVE}/perl/${PV}/Config_heavy-target.pl
# perl shared library headers
diff --git a/packages/samba/samba.inc b/packages/samba/samba.inc
index e7b92127a8..a429307d46 100644
--- a/packages/samba/samba.inc
+++ b/packages/samba/samba.inc
@@ -24,6 +24,7 @@ FILES_libsmbclient-dev = "${libdir}/libsmbclient.so ${includedir}"
do_configure_prepend () {
./script/mkversion.sh
if [ ! -e acinclude.m4 ]; then
+ touch aclocal.m4
cat aclocal.m4 > acinclude.m4
fi
}
diff --git a/packages/uclibc/uclibc-0.9.29/uClibc.distro b/packages/uclibc/uclibc-0.9.29/uClibc.distro
index af02b0683c..6a43c28304 100644
--- a/packages/uclibc/uclibc-0.9.29/uClibc.distro
+++ b/packages/uclibc/uclibc-0.9.29/uClibc.distro
@@ -130,11 +130,11 @@ UCLIBC_BUILD_NOEXECSTACK=y
#
CROSS_COMPILER_PREFIX=""
UCLIBC_EXTRA_CFLAGS=""
-# DODEBUG is not set
-# DODEBUG_PT is not set
+DODEBUG=y
+DODEBUG_PT=y
DOSTRIP=n
# DOASSERTS is not set
-# SUPPORT_LD_DEBUG is not set
+SUPPORT_LD_DEBUG=y
# SUPPORT_LD_DEBUG_EARLY is not set
# UCLIBC_MALLOC_DEBUGGING is not set
WARNINGS="-Wall"
diff --git a/packages/uclibc/uclibc_0.9.29.bb b/packages/uclibc/uclibc_0.9.29.bb
index 6431e3e2bd..065f4f5a0c 100644
--- a/packages/uclibc/uclibc_0.9.29.bb
+++ b/packages/uclibc/uclibc_0.9.29.bb
@@ -7,7 +7,7 @@
# on whether the base patches apply to the selected (SRCDATE) svn release.
#
UCLIBC_BASE ?= "0.9.29"
-PR = "r27"
+PR = "r28"
DEFAULT_PREFERENCE = "1"
require uclibc.inc