diff options
| author | Robert Schuster <thebohemian@gmx.net> | 2008-08-01 00:37:05 +0000 |
|---|---|---|
| committer | Robert Schuster <thebohemian@gmx.net> | 2008-08-01 00:37:05 +0000 |
| commit | 923282dc0cd12ba539c648535c12d96f3476c2a9 (patch) | |
| tree | 7d6ec8d4f00cc60a8f146c720935bf3cea03d10d /packages/linux | |
| parent | 40e88ecdd50759429df7f3cab05731558368664b (diff) | |
| parent | 9f8e3f99fa335bd4ee9ecaa8823b7dc0f299c9b9 (diff) | |
merge of '13530e1cbba5e3db86e8ea9713ffcf460f77b92c'
and 'b70c18ddb17c1721c0c521628f96624b1a6bef2b'
Diffstat (limited to 'packages/linux')
| -rw-r--r-- | packages/linux/linux-kaiser_2.6.24+git.bb | 5 | ||||
| -rw-r--r-- | packages/linux/linux-kexecboot.inc | 1 | ||||
| -rw-r--r-- | packages/linux/linux-omap2-git/beagleboard/01-gptimer_maintain_tldr_lt_0xffffffff | 6 | ||||
| -rw-r--r-- | packages/linux/linux-omap2-git/beagleboard/02-gptimer_clear_tocr | 35 | ||||
| -rw-r--r-- | packages/linux/linux-omap2-git/beagleboard/03-gptimer_double_write_tocr | 25 | ||||
| -rw-r--r-- | packages/linux/linux-omap2-git/beagleboard/04-gptimer_add_debug | 105 | ||||
| -rw-r--r-- | packages/linux/linux-omap2_git.bb | 4 | ||||
| -rw-r--r-- | packages/linux/linux-rp-2.6.26/zaurus-i2c-init.patch | 73 | ||||
| -rw-r--r-- | packages/linux/linux-rp.inc | 18 | ||||
| -rw-r--r-- | packages/linux/linux-rp_2.6.26.bb | 2 |
10 files changed, 230 insertions, 44 deletions
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 \ diff --git a/packages/linux/linux-rp-2.6.26/zaurus-i2c-init.patch b/packages/linux/linux-rp-2.6.26/zaurus-i2c-init.patch index 40214e42b0..e0db0746cd 100644 --- a/packages/linux/linux-rp-2.6.26/zaurus-i2c-init.patch +++ b/packages/linux/linux-rp-2.6.26/zaurus-i2c-init.patch @@ -14,15 +14,42 @@ Stanislav. Reported-by: Stanislav Brabec <utx@penguin.cz> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> --- + arch/arm/mach-pxa/corgi.c | 2 ++ arch/arm/mach-pxa/poodle.c | 2 ++ arch/arm/mach-pxa/spitz.c | 2 ++ - 2 files changed, 4 insertions(+), 0 deletions(-) + 3 files changed, 6 insertions(+) -diff --git a/arch/arm/mach-pxa/poodle.c b/arch/arm/mach-pxa/poodle.c -index 39612cf..510018b 100644 ---- a/arch/arm/mach-pxa/poodle.c -+++ b/arch/arm/mach-pxa/poodle.c -@@ -36,6 +36,7 @@ +--- linux-2.6.26.orig/arch/arm/mach-pxa/corgi.c ++++ linux-2.6.26/arch/arm/mach-pxa/corgi.c +@@ -38,10 +38,11 @@ + #include <asm/arch/pxa-regs.h> + #include <asm/arch/pxa2xx-gpio.h> + #include <asm/arch/irda.h> + #include <asm/arch/mmc.h> + #include <asm/arch/udc.h> ++#include <asm/arch/i2c.h> + #include <asm/arch/corgi.h> + #include <asm/arch/sharpsl.h> + + #include <asm/mach/sharpsl_param.h> + #include <asm/hardware/scoop.h> +@@ -529,10 +530,11 @@ static void __init corgi_init(void) + pxa_gpio_mode(CORGI_GPIO_HSYNC | GPIO_IN); + + pxa_set_udc_info(&udc_info); + pxa_set_mci_info(&corgi_mci_platform_data); + pxa_set_ficp_info(&corgi_ficp_platform_data); ++ pxa_set_i2c_info(NULL); + + platform_scoop_config = &corgi_pcmcia_config; + + platform_add_devices(devices, ARRAY_SIZE(devices)); + } +--- linux-2.6.26.orig/arch/arm/mach-pxa/poodle.c ++++ linux-2.6.26/arch/arm/mach-pxa/poodle.c +@@ -33,10 +33,11 @@ + + #include <asm/arch/pxa-regs.h> #include <asm/arch/pxa2xx-gpio.h> #include <asm/arch/mmc.h> #include <asm/arch/udc.h> @@ -30,7 +57,11 @@ index 39612cf..510018b 100644 #include <asm/arch/irda.h> #include <asm/arch/poodle.h> #include <asm/arch/pxafb.h> -@@ -387,6 +388,7 @@ static void __init poodle_init(void) + #include <asm/arch/sharpsl.h> + #include <asm/arch/ssp.h> +@@ -386,10 +387,11 @@ static void __init poodle_init(void) + pxa_gpio_mode(POODLE_GPIO_USB_PULLUP | GPIO_OUT); + pxa_gpio_mode(POODLE_GPIO_IR_ON | GPIO_OUT); pxa_set_udc_info(&udc_info); pxa_set_mci_info(&poodle_mci_platform_data); pxa_set_ficp_info(&poodle_ficp_platform_data); @@ -38,11 +69,13 @@ index 39612cf..510018b 100644 platform_scoop_config = &poodle_pcmcia_config; -diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c -index 35616a5..e2bde09 100644 ---- a/arch/arm/mach-pxa/spitz.c -+++ b/arch/arm/mach-pxa/spitz.c -@@ -38,6 +38,7 @@ + ret = platform_add_devices(devices, ARRAY_SIZE(devices)); + if (ret) { +--- linux-2.6.26.orig/arch/arm/mach-pxa/spitz.c ++++ linux-2.6.26/arch/arm/mach-pxa/spitz.c +@@ -36,10 +36,11 @@ + #include <asm/mach/irq.h> + #include <asm/arch/pxa-regs.h> #include <asm/arch/pxa2xx-regs.h> #include <asm/arch/pxa2xx-gpio.h> @@ -50,7 +83,11 @@ index 35616a5..e2bde09 100644 #include <asm/arch/irda.h> #include <asm/arch/mmc.h> #include <asm/arch/ohci.h> -@@ -572,6 +573,7 @@ static void __init common_init(void) + #include <asm/arch/udc.h> + #include <asm/arch/pxafb.h> +@@ -579,10 +580,11 @@ static void __init common_init(void) + pxa_set_mci_info(&spitz_mci_platform_data); + pxa_set_ohci_info(&spitz_ohci_platform_data); pxa_set_ficp_info(&spitz_ficp_platform_data); set_pxa_fb_parent(&spitzssp_device.dev); set_pxa_fb_info(&spitz_pxafb_info); @@ -58,11 +95,5 @@ index 35616a5..e2bde09 100644 } #if defined(CONFIG_MACH_SPITZ) || defined(CONFIG_MACH_BORZOI) --- -1.5.6.2 - - -------------------------------------------------------------------- -List admin: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm-kernel -FAQ: http://www.arm.linux.org.uk/mailinglists/faq.php -Etiquette: http://www.arm.linux.org.uk/mailinglists/etiquette.php + static void spitz_bl_set_intensity(int intensity) + { diff --git a/packages/linux/linux-rp.inc b/packages/linux/linux-rp.inc index e6dee572f6..5d32113848 100644 --- a/packages/linux/linux-rp.inc +++ b/packages/linux/linux-rp.inc @@ -65,6 +65,24 @@ module_autoload_collie-ts_collie = "collie-ts" module_autoload_leds-locomo_collie = "leds-locomo" module_autoload_power_collie = "power" + +#package kernel cmdline +PACKAGES_append += "kernel-cmdline" +FILES_kernel-cmdline = "/boot/kernel-cmdline*" +PKG_kernel-cmdline = "kernel-cmdline-${KERNEL_VERSION}" +RRECOMMENDS_kernel-base += "kernel-cmdline" + +pkg_postinst_kernel-cmdline () { + cd /boot; update-alternatives --install /boot/kernel-cmdline kernel-cmdline kernel-cmdline-${KERNEL_VERSION} ${KERNEL_PRIORITY} || true +} + +pkg_postrm_kernel-cmdline () { + cd /boot; update-alternatives --remove kernel-cmdline kernel-cmdline-${KERNEL_VERSION} || true +} +do_install_append () { + echo "${CMDLINE_CON} ${CMDLINE_MEM} ${CMDLINE_ROTATE} ${CMDLINE_OTHER} ${CMDLINE_DEBUG}"> "${D}/boot/kernel-cmdline-${KERNEL_VERSION}" +} + do_configure() { rm -f ${S}/.config diff --git a/packages/linux/linux-rp_2.6.26.bb b/packages/linux/linux-rp_2.6.26.bb index 012721fd5c..f871bedfee 100644 --- a/packages/linux/linux-rp_2.6.26.bb +++ b/packages/linux/linux-rp_2.6.26.bb @@ -1,6 +1,6 @@ require linux-rp.inc -PR = "r1" +PR = "r2" DEFAULT_PREFERENCE = "-1" DEFAULT_PREFERENCE_qemuarm = "-1" |
