diff options
author | Olof Johansson <olof@lixom.net> | 2013-04-14 23:53:45 -0400 |
---|---|---|
committer | Olof Johansson <olof@lixom.net> | 2013-04-14 23:53:53 -0400 |
commit | 6e527d000f7e49a66618dd98c30e6b8711e91de5 (patch) | |
tree | 8ea938c7d99de4bd3bcba1a8b13297f953acfe37 | |
parent | af073c34f3877c6a1e1bc6e820688f6c0084b3d3 (diff) | |
parent | 73a8c28f167c9e7bc42eafc0bcbd298031709430 (diff) |
Merge tag 'msm-fix-3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/davidb/linux-msm into next/fixes-non-critical
From David Brown:
Some minor fixes for MSM for 3.10
- Fix a timer problem that causes missed ticks and hangs.
- Fix a problem with the decompressor UART dropping characters.
* tag 'msm-fix-3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/davidb/linux-msm:
ARM: msm: Fix uncompess.h tx underrun check
ARM: msm: Stop counting before reprogramming clockevent
Signed-off-by: Olof Johansson <olof@lixom.net>
-rw-r--r-- | arch/arm/mach-msm/include/mach/uncompress.h | 2 | ||||
-rw-r--r-- | arch/arm/mach-msm/timer.c | 5 |
2 files changed, 5 insertions, 2 deletions
diff --git a/arch/arm/mach-msm/include/mach/uncompress.h b/arch/arm/mach-msm/include/mach/uncompress.h index fa97a10d8695..94324870fb04 100644 --- a/arch/arm/mach-msm/include/mach/uncompress.h +++ b/arch/arm/mach-msm/include/mach/uncompress.h | |||
@@ -37,7 +37,7 @@ static void putc(int c) | |||
37 | * Wait for TX_READY to be set; but skip it if we have a | 37 | * Wait for TX_READY to be set; but skip it if we have a |
38 | * TX underrun. | 38 | * TX underrun. |
39 | */ | 39 | */ |
40 | if (UART_DM_SR & 0x08) | 40 | if (!(UART_DM_SR & 0x08)) |
41 | while (!(UART_DM_ISR & 0x80)) | 41 | while (!(UART_DM_ISR & 0x80)) |
42 | cpu_relax(); | 42 | cpu_relax(); |
43 | 43 | ||
diff --git a/arch/arm/mach-msm/timer.c b/arch/arm/mach-msm/timer.c index 2969027f02fa..f9fd77e8f1f5 100644 --- a/arch/arm/mach-msm/timer.c +++ b/arch/arm/mach-msm/timer.c | |||
@@ -62,7 +62,10 @@ static int msm_timer_set_next_event(unsigned long cycles, | |||
62 | { | 62 | { |
63 | u32 ctrl = readl_relaxed(event_base + TIMER_ENABLE); | 63 | u32 ctrl = readl_relaxed(event_base + TIMER_ENABLE); |
64 | 64 | ||
65 | writel_relaxed(0, event_base + TIMER_CLEAR); | 65 | ctrl &= ~TIMER_ENABLE_EN; |
66 | writel_relaxed(ctrl, event_base + TIMER_ENABLE); | ||
67 | |||
68 | writel_relaxed(ctrl, event_base + TIMER_CLEAR); | ||
66 | writel_relaxed(cycles, event_base + TIMER_MATCH_VAL); | 69 | writel_relaxed(cycles, event_base + TIMER_MATCH_VAL); |
67 | writel_relaxed(ctrl | TIMER_ENABLE_EN, event_base + TIMER_ENABLE); | 70 | writel_relaxed(ctrl | TIMER_ENABLE_EN, event_base + TIMER_ENABLE); |
68 | return 0; | 71 | return 0; |