From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Kfkn8-0006FU-Pa for qemu-devel@nongnu.org; Tue, 16 Sep 2008 20:21:10 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Kfkn8-0006FI-As for qemu-devel@nongnu.org; Tue, 16 Sep 2008 20:21:10 -0400 Received: from [199.232.76.173] (port=55373 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Kfkn8-0006FF-3U for qemu-devel@nongnu.org; Tue, 16 Sep 2008 20:21:10 -0400 Received: from savannah.gnu.org ([199.232.41.3]:36629 helo=sv.gnu.org) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1Kfkn7-0004XT-VR for qemu-devel@nongnu.org; Tue, 16 Sep 2008 20:21:10 -0400 Received: from cvs.savannah.gnu.org ([199.232.41.69]) by sv.gnu.org with esmtp (Exim 4.63) (envelope-from ) id 1Kfkn5-0001R5-Rm for qemu-devel@nongnu.org; Wed, 17 Sep 2008 00:21:08 +0000 Received: from balrog by cvs.savannah.gnu.org with local (Exim 4.63) (envelope-from ) id 1Kfkn4-0001R1-TT for qemu-devel@nongnu.org; Wed, 17 Sep 2008 00:21:07 +0000 MIME-Version: 1.0 Errors-To: balrog Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From: Andrzej Zaborowski Message-Id: Date: Wed, 17 Sep 2008 00:21:06 +0000 Subject: [Qemu-devel] [5239] 16550A UART: RHR irq enable bit also masks the Rx timeout irq. Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Revision: 5239 http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=5239 Author: balrog Date: 2008-09-17 00:21:05 +0000 (Wed, 17 Sep 2008) Log Message: ----------- 16550A UART: RHR irq enable bit also masks the Rx timeout irq. The "Rx timeout" (aka. Character Timeout Indication) has no separate mask bit in the IER register and according to the specs reading RHR is the only way to reset the irq. However on the hardware (tested on OMAP2 UART which is an extended 16550A) the RHR_IT bit in IER disables the irc, too. Linux bluetooth serial dongle driver for N800 depends on this behavior. Modified Paths: -------------- trunk/hw/serial.c Modified: trunk/hw/serial.c =================================================================== --- trunk/hw/serial.c 2008-09-16 22:44:25 UTC (rev 5238) +++ trunk/hw/serial.c 2008-09-17 00:21:05 UTC (rev 5239) @@ -191,7 +191,7 @@ if ((s->ier & UART_IER_RLSI) && (s->lsr & UART_LSR_INT_ANY)) { tmp_iir = UART_IIR_RLSI; - } else if (s->timeout_ipending) { + } else if ((s->ier & UART_IER_RDI) && s->timeout_ipending) { tmp_iir = UART_IIR_CTI; } else if ((s->ier & UART_IER_RDI) && (s->lsr & UART_LSR_DR)) { if (!(s->fcr & UART_FCR_FE)) {