Title: [6482] trunk/drivers/serial/bfin_5xx.c: Disable dma rx interrupt only instead of all in timer handler.
- Revision
- 6482
- Author
- sonicz
- Date
- 2009-05-27 01:44:17 -0500 (Wed, 27 May 2009)
Log Message
Disable dma rx interrupt only instead of all in timer handler.
This allows higher priority interrupts to be served when uart rx buffer
is accessed in timer handler.
Modified Paths
Diff
Modified: trunk/drivers/serial/bfin_5xx.c (6481 => 6482)
--- trunk/drivers/serial/bfin_5xx.c 2009-05-27 06:43:12 UTC (rev 6481)
+++ trunk/drivers/serial/bfin_5xx.c 2009-05-27 06:44:17 UTC (rev 6482)
@@ -480,9 +480,9 @@
void bfin_serial_rx_dma_timeout(struct bfin_serial_port *uart)
{
int x_pos, pos;
- unsigned long flags;
- spin_lock_irqsave(&uart->port.lock, flags);
+ dma_disable_irq(uart->rx_dma_channel);
+ spin_lock_bh(&uart->port.lock);
/* 2D DMA RX buffer ring is used. Because curr_y_count and
* curr_x_count can't be read as an atomic operation,
@@ -513,7 +513,8 @@
uart->rx_dma_buf.tail = uart->rx_dma_buf.head;
}
- spin_unlock_irqrestore(&uart->port.lock, flags);
+ spin_unlock_bh(&uart->port.lock);
+ dma_enable_irq(uart->rx_dma_channel);
mod_timer(&(uart->rx_dma_timer), jiffies + DMA_RX_FLUSH_JIFFIES);
}
_______________________________________________
Linux-kernel-commits mailing list
[email protected]
https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits