summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--conf/machine/htcpolaris.conf23
-rw-r--r--packages/dsplink/codec-engine_2.10.bb5
-rw-r--r--packages/dsplink/files/ticel-config53
-rw-r--r--packages/ffmpeg/ffmpeg_git.bb2
-rw-r--r--packages/linux/linux-kaiser_2.6.24+git.bb5
-rw-r--r--packages/linux/linux-kexecboot.inc1
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/01-gptimer_maintain_tldr_lt_0xffffffff6
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/02-gptimer_clear_tocr35
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/03-gptimer_double_write_tocr25
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/04-gptimer_add_debug105
-rw-r--r--packages/linux/linux-omap2_git.bb4
11 files changed, 184 insertions, 80 deletions
diff --git a/conf/machine/htcpolaris.conf b/conf/machine/htcpolaris.conf
new file mode 100644
index 0000000000..e2fc46889e
--- /dev/null
+++ b/conf/machine/htcpolaris.conf
@@ -0,0 +1,23 @@
+#@TYPE: Machine
+#@NAME: HTC Polaris phone
+#@DESCRIPTION: Machine configuration for HTC Polaris phone
+TARGET_ARCH = "arm"
+PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te armv6"
+
+PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive"
+XSERVER = "xserver-kdrive-fbdev"
+
+GUI_MACHINE_CLASS = "smallscreen"
+MACHINE_DISPLAY_WIDTH_PIXELS = "240"
+MACHINE_DISPLAY_HEIGHT_PIXELS = "320"
+
+TARGET_CC_ARCH = "-march=armv6j -mtune=arm1136jf-s"
+FEED_ARCH = "armv6"
+BASE_PACKAGE_ARCH = "armv6"
+
+
+IMAGE_FSTYPES ?= "tar.gz cpio.gz"
+
+PREFERRED_PROVIDER_virtual/kernel = "linux-kaiser"
+
+MACHINE_FEATURES = "kernel26 touchscreen screen keyboard bluetooth"
diff --git a/packages/dsplink/codec-engine_2.10.bb b/packages/dsplink/codec-engine_2.10.bb
index 83102a0afe..0e85d38a82 100644
--- a/packages/dsplink/codec-engine_2.10.bb
+++ b/packages/dsplink/codec-engine_2.10.bb
@@ -14,7 +14,6 @@ PV = "2.10"
SRC_URI = "http://install.tarball.in.source.dir/codec_engine_2_10_01.tar.gz \
file://xdcpaths.mak \
- file://ticel-config \
"
S = "${WORKDIR}/codec_engine_2_10_01"
@@ -137,10 +136,6 @@ do_stage() {
cp -pPr $header ${STAGING_INCDIR}/codec-engine/$(echo $header | sed s:${S}::g)
done
- sed -i -e s:SEDME_CFLAGS:"-I${TITOOLSDIR}/${TIBIOSDIR}/xdctools/packages -I${STAGING_INCDIR}/codec-engine/packages -I${STAGING_INCDIR}/codec-engine/cetools/packages/":g \
- -e s:SEDME_STAGINGLIBDIR:${STAGING_LIBDIR}:g \
- ${WORKDIR}/ticel-config
- install -m 0755 ${WORKDIR}/ticel-config ${STAGING_BINDIR_CROSS}
}
pkg_postinst_${PN}-module () {
diff --git a/packages/dsplink/files/ticel-config b/packages/dsplink/files/ticel-config
deleted file mode 100644
index 75ebddae75..0000000000
--- a/packages/dsplink/files/ticel-config
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/bin/sh
-
-LIBS=""
-for lib in \
- TraceUtil.a \
- bioslog.a \
- video.a \
- audio.a \
- speech.a \
- ce.a \
- Algorithm_noOS.a \
- alg.a \
- osal_linux_470.a \
- dman3Cfg.a \
- acpy3.a \
- cmem.a \
- dsplink.lib \
- XdmUtils.a \
- gt.a
-do
- LIBS="${LIBS} SEDME_STAGINGLIBDIR/${lib}"
-done
-
-CFLAGS="SEDME_CFLAGS"
-
-usage()
-{
- echo "Usage : $0 [--cflags] [--libs]"
- exit 1
-}
-
-test "$#" = 0 && usage
-
-OUT=""
-while test "$#" -gt 0;
-do
- case "$1" in
- "--cflags")
- OUT="${OUT} ${CFLAGS}"
- ;;
- "--libs")
- OUT="${OUT} ${LIBDIRS} ${LIBS}"
- ;;
- *)
- usage
- ;;
- esac
-
- shift
-done
-
-echo "${OUT}"
-exit 0
diff --git a/packages/ffmpeg/ffmpeg_git.bb b/packages/ffmpeg/ffmpeg_git.bb
index f8cf7015be..e94f8698f7 100644
--- a/packages/ffmpeg/ffmpeg_git.bb
+++ b/packages/ffmpeg/ffmpeg_git.bb
@@ -6,6 +6,8 @@ PV = "0.4.9+${PR}+gitr${SRCREV}"
PR = "r19"
DEFAULT_PREFERENCE = "-1"
+DEFAULT_PREFERENCE_armv5te = "1"
+DEFAULT_PREFERENCE_armv6 = "1"
DEFAULT_PREFERENCE_armv7a = "1"
FFBRANCH_arm = "arm-neon"
diff --git a/packages/linux/linux-kaiser_2.6.24+git.bb b/packages/linux/linux-kaiser_2.6.24+git.bb
index 758cbdcc0b..879c6e23be 100644
--- a/packages/linux/linux-kaiser_2.6.24+git.bb
+++ b/packages/linux/linux-kaiser_2.6.24+git.bb
@@ -4,13 +4,14 @@ PV = "2.6.24+git${SRCREV}"
PR = "r1"
COMPATIBLE_MACHINE = "htckaiser"
+COMPATIBLE_MACHINE = "htcpolaris"
+
SRC_URI = "git://git.linuxtogo.org/home/groups/mobile-linux/kernel.git;branch=htc-msm;protocol=git"
S = "${WORKDIR}/git"
do_configure_prepend() {
- cp arch/arm/configs/htckaiser_defconfig ../defconfig
+ cp arch/arm/configs/${MACHINE}_defconfig ../defconfig
}
-
diff --git a/packages/linux/linux-kexecboot.inc b/packages/linux/linux-kexecboot.inc
index e527f92c57..1d9595d013 100644
--- a/packages/linux/linux-kexecboot.inc
+++ b/packages/linux/linux-kexecboot.inc
@@ -2,6 +2,7 @@ DESCRIPTION = "2.6 Linux kexec bootloader for Zaurus devices and iPAQ hx2750."
SECTION = "kernel"
LICENSE = "GPL"
+DONT_CHECK_KERNELSIZE = ""
INITRAMFS_IMAGE = "initramfs-kexec-image"
inherit kernel
PACKAGES = ""
diff --git a/packages/linux/linux-omap2-git/beagleboard/01-gptimer_maintain_tldr_lt_0xffffffff b/packages/linux/linux-omap2-git/beagleboard/01-gptimer_maintain_tldr_lt_0xffffffff
index ed62a6fb4b..f80f899dee 100644
--- a/packages/linux/linux-omap2-git/beagleboard/01-gptimer_maintain_tldr_lt_0xffffffff
+++ b/packages/linux/linux-omap2-git/beagleboard/01-gptimer_maintain_tldr_lt_0xffffffff
@@ -1,8 +1,10 @@
-3430 TRM 16.2.4.2 states:
+OMAP2/3 GPTIMER: don't load GPTIMER with 0xffffffff
From: Paul Walmsley <paul@pwsan.com>
-Do not put the overflow value (0xFFFFFFFF) in the GPTi.TLDR register
+3430 TRM 16.2.4.2 states:
+
+ Do not put the overflow value (0xFFFFFFFF) in the GPTi.TLDR register
because it can lead to undesired results.
3430 TRM 16.2.4.7 states:
diff --git a/packages/linux/linux-omap2-git/beagleboard/02-gptimer_clear_tocr b/packages/linux/linux-omap2-git/beagleboard/02-gptimer_clear_tocr
index b92c5dd126..433608132e 100644
--- a/packages/linux/linux-omap2-git/beagleboard/02-gptimer_clear_tocr
+++ b/packages/linux/linux-omap2-git/beagleboard/02-gptimer_clear_tocr
@@ -23,19 +23,19 @@ OMAP3530ES2.2 lots.
This patch fixes the "serial hangs" reported by some BeagleBoard
users. During these hangs, characters are still received from the
serial port, so magic SysRq will still work; but characters are never
-delivered on to the underlying line discipline. This since
-tty_flip_buffer_push() uses schedule_delayed_work() to defer passing
-the input buffer to the line discipline, but the delayed work function
-is never called since no timer tick ever arrives.
+delivered on to the underlying line discipline. The 8250 serial code
+calls tty_flip_buffer_push(), which calls schedule_delayed_work() to
+defer passing the input buffer to the line discipline, but since no
+timer tick ever arrives, the delayed work function is never called .
The patch should also fix some other sporadic boot hangs reported by
BeagleBoard users that are due to timer interrupt non-delivery.
---
arch/arm/mach-omap2/timer-gp.c | 1 +
- arch/arm/plat-omap/dmtimer.c | 8 ++++++++
+ arch/arm/plat-omap/dmtimer.c | 9 ++++++++-
include/asm-arm/arch-omap/dmtimer.h | 2 ++
- 3 files changed, 11 insertions(+), 0 deletions(-)
+ 3 files changed, 11 insertions(+), 1 deletions(-)
diff --git a/arch/arm/mach-omap2/timer-gp.c b/arch/arm/mach-omap2/timer-gp.c
index edc0c9e..869fe14 100644
@@ -50,14 +50,14 @@ index edc0c9e..869fe14 100644
evt->event_handler(evt);
diff --git a/arch/arm/plat-omap/dmtimer.c b/arch/arm/plat-omap/dmtimer.c
-index f22506a..2cbb4cc 100644
+index f22506a..18a1e68 100644
--- a/arch/arm/plat-omap/dmtimer.c
+++ b/arch/arm/plat-omap/dmtimer.c
@@ -543,6 +543,8 @@ void omap_dm_timer_set_load(struct omap_dm_timer *timer, int autoreload,
while (readl(timer->io_base + (OMAP_TIMER_WRITE_PEND_REG & 0xff)))
cpu_relax();
-+ omap_dm_timer_write_reg(timer, OMAP_TIMER_TICK_INT_MASK_SET_REG, 0);
++ omap_dm_timer_clear_ovf_cnt(timer);
+
omap_dm_timer_write_reg(timer, OMAP_TIMER_TRIGGER_REG, 0);
}
@@ -66,22 +66,23 @@ index f22506a..2cbb4cc 100644
omap_dm_timer_write_reg(timer, OMAP_TIMER_COUNTER_REG, load);
omap_dm_timer_write_reg(timer, OMAP_TIMER_LOAD_REG, load);
-+ omap_dm_timer_write_reg(timer, OMAP_TIMER_TICK_INT_MASK_SET_REG, 0);
++ omap_dm_timer_clear_ovf_cnt(timer);
omap_dm_timer_write_reg(timer, OMAP_TIMER_CTRL_REG, l);
}
-@@ -614,6 +617,11 @@ void omap_dm_timer_set_int_enable(struct omap_dm_timer *timer,
- omap_dm_timer_write_reg(timer, OMAP_TIMER_WAKEUP_EN_REG, value);
- }
-
+@@ -611,7 +614,11 @@ void omap_dm_timer_set_int_enable(struct omap_dm_timer *timer,
+ unsigned int value)
+ {
+ omap_dm_timer_write_reg(timer, OMAP_TIMER_INT_EN_REG, value);
+- omap_dm_timer_write_reg(timer, OMAP_TIMER_WAKEUP_EN_REG, value);
++}
++
+void omap_dm_timer_clear_ovf_cnt(struct omap_dm_timer *timer)
+{
+ omap_dm_timer_write_reg(timer, OMAP_TIMER_TICK_INT_MASK_SET_REG, 0);
-+}
-+
+ }
+
unsigned int omap_dm_timer_read_status(struct omap_dm_timer *timer)
- {
- unsigned int l;
diff --git a/include/asm-arm/arch-omap/dmtimer.h b/include/asm-arm/arch-omap/dmtimer.h
index 02b29e8..7b1138b 100644
--- a/include/asm-arm/arch-omap/dmtimer.h
diff --git a/packages/linux/linux-omap2-git/beagleboard/03-gptimer_double_write_tocr b/packages/linux/linux-omap2-git/beagleboard/03-gptimer_double_write_tocr
new file mode 100644
index 0000000000..4b3d757bdc
--- /dev/null
+++ b/packages/linux/linux-omap2-git/beagleboard/03-gptimer_double_write_tocr
@@ -0,0 +1,25 @@
+OMAP3 GPTIMER: TOCR clears sometimes require two writes
+
+From: Paul Walmsley <paul@pwsan.com>
+
+Some GPTIMER register changes do not take effect with a single write;
+they require two writes for some reason. Could be related to the
+existing 3430 errata "GPTimer 1,2, and 10: first write access to TCRR
+register discarded"
+---
+
+ arch/arm/plat-omap/dmtimer.c | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/arch/arm/plat-omap/dmtimer.c b/arch/arm/plat-omap/dmtimer.c
+index 18a1e68..4a5ada7 100644
+--- a/arch/arm/plat-omap/dmtimer.c
++++ b/arch/arm/plat-omap/dmtimer.c
+@@ -619,6 +619,7 @@ void omap_dm_timer_set_int_enable(struct omap_dm_timer *timer,
+ void omap_dm_timer_clear_ovf_cnt(struct omap_dm_timer *timer)
+ {
+ omap_dm_timer_write_reg(timer, OMAP_TIMER_TICK_INT_MASK_SET_REG, 0);
++ omap_dm_timer_write_reg(timer, OMAP_TIMER_TICK_INT_MASK_SET_REG, 0);
+ }
+
+ unsigned int omap_dm_timer_read_status(struct omap_dm_timer *timer)
diff --git a/packages/linux/linux-omap2-git/beagleboard/04-gptimer_add_debug b/packages/linux/linux-omap2-git/beagleboard/04-gptimer_add_debug
new file mode 100644
index 0000000000..8ae6a6f22e
--- /dev/null
+++ b/packages/linux/linux-omap2-git/beagleboard/04-gptimer_add_debug
@@ -0,0 +1,105 @@
+Add extra debug for the q_d_w_o() when work fn is already active.
+
+From: Paul Walmsley <paul@pwsan.com>
+
+
+---
+
+ arch/arm/mach-omap2/timer-gp.c | 3 ++-
+ arch/arm/plat-omap/dmtimer.c | 18 ++++++++++++++++++
+ include/asm-arm/arch-omap/dmtimer.h | 1 +
+ kernel/workqueue.c | 12 ++++++++++++
+ 4 files changed, 33 insertions(+), 1 deletions(-)
+
+diff --git a/arch/arm/mach-omap2/timer-gp.c b/arch/arm/mach-omap2/timer-gp.c
+index 869fe14..4db3252 100644
+--- a/arch/arm/mach-omap2/timer-gp.c
++++ b/arch/arm/mach-omap2/timer-gp.c
+@@ -37,6 +37,7 @@
+ #include <asm/arch/dmtimer.h>
+
+ static struct omap_dm_timer *gptimer;
++struct omap_dm_timer *gptimer_pub;
+ static struct clock_event_device clockevent_gpt;
+
+ static irqreturn_t omap2_gp_timer_interrupt(int irq, void *dev_id)
+@@ -114,7 +115,7 @@ static void __init omap2_gp_clockevent_init(void)
+ {
+ u32 tick_rate;
+
+- gptimer = omap_dm_timer_request_specific(1);
++ gptimer = gptimer_pub = omap_dm_timer_request_specific(1);
+ BUG_ON(gptimer == NULL);
+
+ #if defined(CONFIG_OMAP_32K_TIMER)
+diff --git a/arch/arm/plat-omap/dmtimer.c b/arch/arm/plat-omap/dmtimer.c
+index 4a5ada7..3242495 100644
+--- a/arch/arm/plat-omap/dmtimer.c
++++ b/arch/arm/plat-omap/dmtimer.c
+@@ -622,6 +622,24 @@ void omap_dm_timer_clear_ovf_cnt(struct omap_dm_timer *timer)
+ omap_dm_timer_write_reg(timer, OMAP_TIMER_TICK_INT_MASK_SET_REG, 0);
+ }
+
++void omap_dm_timer_dump_int_enable(struct omap_dm_timer *timer)
++{
++ u32 l;
++ l = omap_dm_timer_read_reg(timer, OMAP_TIMER_COUNTER_REG);
++ pr_err("GPT TCRR: %08x\n", l);
++ l = omap_dm_timer_read_reg(timer, OMAP_TIMER_STAT_REG);
++ pr_err("GPT TISR: %08x\n", l);
++ l = omap_dm_timer_read_reg(timer, OMAP_TIMER_TICK_INT_MASK_SET_REG);
++ pr_err("GPT TOCR: %08x\n", l);
++ l = omap_dm_timer_read_reg(timer, OMAP_TIMER_TICK_INT_MASK_COUNT_REG);
++ pr_err("GPT TOWR: %08x\n", l);
++ l = omap_dm_timer_read_reg(timer, OMAP_TIMER_TICK_POS_REG);
++ pr_err("GPT TPIR: %08x\n", l);
++ l = omap_dm_timer_read_reg(timer, OMAP_TIMER_TICK_NEG_REG);
++ pr_err("GPT TNIR: %08x\n", l);
++}
++
++
+ unsigned int omap_dm_timer_read_status(struct omap_dm_timer *timer)
+ {
+ unsigned int l;
+diff --git a/include/asm-arm/arch-omap/dmtimer.h b/include/asm-arm/arch-omap/dmtimer.h
+index 7b1138b..db57015 100644
+--- a/include/asm-arm/arch-omap/dmtimer.h
++++ b/include/asm-arm/arch-omap/dmtimer.h
+@@ -73,6 +73,7 @@ void omap_dm_timer_set_prescaler(struct omap_dm_timer *timer, int prescaler);
+
+ void omap_dm_timer_set_int_enable(struct omap_dm_timer *timer, unsigned int value);
+
++void omap_dm_timer_dump_int_enable(struct omap_dm_timer *timer);
+ void omap_dm_timer_clear_ovf_cnt(struct omap_dm_timer *timer);
+
+ unsigned int omap_dm_timer_read_status(struct omap_dm_timer *timer);
+diff --git a/kernel/workqueue.c b/kernel/workqueue.c
+index ce77995..65b3b9a 100644
+--- a/kernel/workqueue.c
++++ b/kernel/workqueue.c
+@@ -33,6 +33,9 @@
+ #include <linux/kallsyms.h>
+ #include <linux/debug_locks.h>
+ #include <linux/lockdep.h>
++#include <asm/arch/dmtimer.h>
++
++extern struct omap_dm_timer *gptimer_pub;
+
+ /*
+ * The per-CPU workqueue (if single thread, we always use the first
+@@ -235,6 +238,15 @@ int queue_delayed_work_on(int cpu, struct workqueue_struct *wq,
+ else
+ add_timer(timer);
+ ret = 1;
++ } else {
++ s64 texp;
++ u64 now = ktime_to_ns(ktime_get());
++ u64 ens = jiffies_to_usecs(dwork->timer.expires) * 1000;
++ texp = ens - now;
++ if (texp < 0) {
++ pr_err("** Timer workaround\n");
++ omap_dm_timer_dump_int_enable(gptimer_pub);
++ }
+ }
+ return ret;
+ }
diff --git a/packages/linux/linux-omap2_git.bb b/packages/linux/linux-omap2_git.bb
index c744cb1d6d..22643987b4 100644
--- a/packages/linux/linux-omap2_git.bb
+++ b/packages/linux/linux-omap2_git.bb
@@ -6,7 +6,7 @@ SRCREV = "d3b3ae0fe6c71641da19c8de466ec366d39847e3"
PV = "2.6.26"
#PV = "2.6.26+2.6.27-rc1+${PR}+git${SRCREV}"
-PR = "r51"
+PR = "r52"
SRC_URI = "git://source.mvista.com/git/linux-omap-2.6.git;protocol=git \
file://defconfig"
@@ -47,6 +47,8 @@ SRC_URI_append_beagleboard = " file://no-harry-potter.diff;patch=1 \
file://no-cortex-deadlock.patch;patch=1 \
file://01-gptimer_maintain_tldr_lt_0xffffffff;patch=1 \
file://02-gptimer_clear_tocr;patch=1 \
+ file://03-gptimer_double_write_tocr;patch=1 \
+ file://04-gptimer_add_debug;patch=1 \
"
SRC_URI_append_omap3evm = " file://no-harry-potter.diff;patch=1 \