sim: bfin: fix UART LSR read-only bit saturation
authorMike Frysinger <vapier@gentoo.org>
Mon, 9 May 2011 18:14:01 +0000 (18:14 +0000)
committerMike Frysinger <vapier@gentoo.org>
Mon, 9 May 2011 18:14:01 +0000 (18:14 +0000)
A few bits in the newer UART LSR register are not sticky, so make sure
we clear them when returning updated status rather than leaving them
always set.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
sim/bfin/ChangeLog
sim/bfin/dv-bfin_uart2.c

index 347014352895ca3a03db0dd71bce558c04bd7372..6785044b99b4e6a1e3c42ae3514ebc886f586320 100644 (file)
@@ -1,3 +1,8 @@
+2011-05-09  Mike Frysinger  <vapier@gentoo.org>
+
+       * dv-bfin_uart2.c (bfin_uart_io_read_buffer): Clear DR/THRE/TEMT bits
+       from uart->lsr before setting them.
+
 2011-04-27  Mike Frysinger  <vapier@gentoo.org>
 
        * dv-bfin_dmac.c (bfin_dmac): Constify pmap array.
index facde1c6cd24a3c6aaf3a650f7089e39b814eadb..179574d30df53cab07913c83464b726f901f373d 100644 (file)
@@ -151,6 +151,7 @@ bfin_uart_io_read_buffer (struct hw *me, void *dest,
       bfin_uart_reschedule (me);
       break;
     case mmr_offset(lsr):
+      uart->lsr &= ~(DR | THRE | TEMT);
       uart->lsr |= bfin_uart_get_status (me);
     case mmr_offset(thr):
     case mmr_offset(msr):