summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGregory Nutt <gnutt@linux-qpx1.site>2013-12-08 08:51:19 -0600
committerGregory Nutt <gnutt@linux-qpx1.site>2013-12-08 08:51:19 -0600
commit6461b78aaf24ba74ca7658e501eebe18a334b591 (patch)
treea5ce061aa1deab3c75a39954851ae7c3ba18945d
parentb55b8aa1fa19eea6b3684b76cf9c35f45de43f2b (diff)
downloadnuttx-6461b78aaf24ba74ca7658e501eebe18a334b591.tar.gz
nuttx-6461b78aaf24ba74ca7658e501eebe18a334b591.tar.bz2
nuttx-6461b78aaf24ba74ca7658e501eebe18a334b591.zip
A10: Correct handling of the serial busy interrupt
-rw-r--r--nuttx/ChangeLog2
-rw-r--r--nuttx/arch/arm/src/a1x/a1x_serial.c13
2 files changed, 14 insertions, 1 deletions
diff --git a/nuttx/ChangeLog b/nuttx/ChangeLog
index cbf96864e..182d3d287 100644
--- a/nuttx/ChangeLog
+++ b/nuttx/ChangeLog
@@ -6381,4 +6381,6 @@
* arch/arm/src/armv7-a/arm_head.S and arm_pghead.S: Add more nop's
after enabling the MMU. The cortex-a8 seems to need these
(2014-1-7).
+ * arch/arm/src/a1x/a1x_serial.c: Correct handling of the BUSY
+ interrupt (2014-1-7).
diff --git a/nuttx/arch/arm/src/a1x/a1x_serial.c b/nuttx/arch/arm/src/a1x/a1x_serial.c
index 0864fb551..fd73ad34b 100644
--- a/nuttx/arch/arm/src/a1x/a1x_serial.c
+++ b/nuttx/arch/arm/src/a1x/a1x_serial.c
@@ -1176,11 +1176,22 @@ static int uart_interrupt(struct uart_dev_s *dev)
/* Busy detect. Just ignore. Cleared by reading the status register */
case UART_IIR_IID_BUSY:
+ {
+ /* Read from the UART status register to clear the BUSY condition */
+
+ status = up_serialin(priv, A1X_UART_USR_OFFSET);
break;
+ }
- /* Otherwise, there is no (handled) interrupt pending */
+ /* No further interrupts pending... return now */
case UART_IIR_IID_NONE:
+ {
+ return OK;
+ }
+
+ /* Otherwise we have received an interrupt that we cannot handle */
+
default:
{
lldbg("Unexpected IIR: %02x\n", status);