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.
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2.0.19 (GNU/Linux)
 
 iQIcBAABAgAGBQJRaIk3AAoJEOa6n1xeVN+C50wP/3G+sbUV1r+64OwUMWoyu0t0
 YeVebBN4QQzMq1/NkhWjwNeM5yzQsz5MZO2AiN88yEh6vQa7uXQz/RwR4GYzX8le
 Mt5dSnbAEk5pNVSooLw9aNpaRPcxuW3m4XHxPUYjc4wChMzNTVc4YJcZrXxIlfNh
 qzQaPNa8ZstOgeEoo3sC6P5XWHzpumhW6THMJldYHuHSCnb5hIwFzxO3g3q/59Mq
 X0sBM103U6QG+rfK2FzFMPwRNJ8kqILmNaOOwNaFxt3MYXbNJvlHi864R4i9iqjk
 QmPS8XB2OsFwb+Knash3jO8GYWjXD2ZLVbVP1rnBL2IretYZF3Vd/rRStvv9DNRj
 DP0N29ASCvBT/C2yE+Pv7FkQsW5tbydyhqpDLRkDPNMo51fkynpfNAnhxVwyzELV
 7w1doMZt5a38j0k025hPiFrmar/RjRP1PPlxRyzETqTIkwG4HeitZ/ECSPCCidj7
 xTAFtGquK4B5A5tnbuVyAAODfzwLrWZBUfG9hiv2rrFV9rdLEX0qTMSEiR9pcD1g
 3zIbakJckbpIf6quE8dhHBWSYrZv8DGCvQnn1Aw3VgJFU6cgZNqfLVv8zl6/V/c/
 l7nh0PJx5xMD7Td2mOkCnczCWFDMNpDaHje+vEie0gpTPFoqcnBpMMCXI4wI8+w+
 9Zu4chBfSrpxZCVf1Rsz
 =hLJp
 -----END PGP SIGNATURE-----

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>
This commit is contained in:
Olof Johansson 2013-04-14 20:53:45 -07:00
commit 6e527d000f
2 changed files with 5 additions and 2 deletions

View File

@ -37,7 +37,7 @@ static void putc(int c)
* Wait for TX_READY to be set; but skip it if we have a
* TX underrun.
*/
if (UART_DM_SR & 0x08)
if (!(UART_DM_SR & 0x08))
while (!(UART_DM_ISR & 0x80))
cpu_relax();

View File

@ -62,7 +62,10 @@ static int msm_timer_set_next_event(unsigned long cycles,
{
u32 ctrl = readl_relaxed(event_base + TIMER_ENABLE);
writel_relaxed(0, event_base + TIMER_CLEAR);
ctrl &= ~TIMER_ENABLE_EN;
writel_relaxed(ctrl, event_base + TIMER_ENABLE);
writel_relaxed(ctrl, event_base + TIMER_CLEAR);
writel_relaxed(cycles, event_base + TIMER_MATCH_VAL);
writel_relaxed(ctrl | TIMER_ENABLE_EN, event_base + TIMER_ENABLE);
return 0;