Commit 5628a6260ae8854d669d41aabb8c29a7a5b4bff9

Authored by balrog
1 parent 1ef4ef4e

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.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5239 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 1 additions and 1 deletions
hw/serial.c
... ... @@ -191,7 +191,7 @@ static void serial_update_irq(SerialState *s)
191 191  
192 192 if ((s->ier & UART_IER_RLSI) && (s->lsr & UART_LSR_INT_ANY)) {
193 193 tmp_iir = UART_IIR_RLSI;
194   - } else if (s->timeout_ipending) {
  194 + } else if ((s->ier & UART_IER_RDI) && s->timeout_ipending) {
195 195 tmp_iir = UART_IIR_CTI;
196 196 } else if ((s->ier & UART_IER_RDI) && (s->lsr & UART_LSR_DR)) {
197 197 if (!(s->fcr & UART_FCR_FE)) {
... ...