Commit 73a8c28f authored by Stephen Boyd's avatar Stephen Boyd Committed by David Brown

ARM: msm: Fix uncompess.h tx underrun check

Bit 3 of the SR register is set if there is a tx underrun. If
this bit isn't set, we should loop on the tx ready bit until we
can transmit again. Otherwise we should skip the loop and
transmit immediately. The code is doing the opposite though,
checking for an underrun and then looping on the tx ready bit
causing us to never loop on the tx read bit when the tx buffer
may not be ready.

This doesn't seem to affect my 8960 device too often, but in some
cases I see a lost character or two from the decompressor prints.
This also matches what we do in the assembly in debug-macro.S.
Signed-off-by: default avatarStephen Boyd <sboyd@codeaurora.org>
Signed-off-by: default avatarDavid Brown <davidb@codeaurora.org>
parent 4080d2d1
...@@ -37,7 +37,7 @@ static void putc(int c) ...@@ -37,7 +37,7 @@ static void putc(int c)
* Wait for TX_READY to be set; but skip it if we have a * Wait for TX_READY to be set; but skip it if we have a
* TX underrun. * TX underrun.
*/ */
if (UART_DM_SR & 0x08) if (!(UART_DM_SR & 0x08))
while (!(UART_DM_ISR & 0x80)) while (!(UART_DM_ISR & 0x80))
cpu_relax(); cpu_relax();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment