From 65ff3ce7fb20b63f93516890a06e8e6cec52fb99 Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Tue, 26 May 2015 15:27:02 -0400 Subject: [PATCH] or1k: UART also accept timeout interrupt - The UART interrupt only handled receiver FIFO full interrupts, but we also want to handle timeout interrupts. * or1k/or1k_uart.c: Fix interrupts --- libgloss/ChangeLog | 4 ++++ libgloss/or1k/or1k_uart.c | 8 +++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/libgloss/ChangeLog b/libgloss/ChangeLog index 77137f02b..6b3fe3c4e 100644 --- a/libgloss/ChangeLog +++ b/libgloss/ChangeLog @@ -1,3 +1,7 @@ +2015-05-26 Stefan Wallentowitz + + * or1k/or1k_uart.c: Fix interrupts + 2015-05-26 Stefan Wallentowitz * or1k/timer.c: Properly set interrupt flags diff --git a/libgloss/or1k/or1k_uart.c b/libgloss/or1k/or1k_uart.c index e5b539af4..0a991e6ba 100644 --- a/libgloss/or1k/or1k_uart.c +++ b/libgloss/or1k/or1k_uart.c @@ -94,9 +94,11 @@ void _or1k_uart_interrupt_handler(uint32_t data) { uint8_t iir = REG8(IIR); - // Check if this is a read fifo interrupt, bit 0 indicates pending - // interrupt and the other bits are IIR_RDA - if (!(iir & 0x1) || ((iir & 0xfe) != IIR_RDA)) { + // Check if this is a read fifo or timeout interrupt, bit 0 + // indicates pending interrupt and the other bits are IIR_RDA + // or IIR_TO + if (!(iir & 0x1) || ((iir & 0xfe) != IIR_RDA) || + ((iir & 0xfe) != IIR_TO)) { return; }