Title: [6481] branches/2009R1/drivers/serial/bfin_5xx.c: Disable dma rx interrupt only instead of all in timer handler.
Revision
6481
Author
sonicz
Date
2009-05-27 01:43:12 -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: branches/2009R1/drivers/serial/bfin_5xx.c (6480 => 6481)


--- branches/2009R1/drivers/serial/bfin_5xx.c	2009-05-26 23:35:15 UTC (rev 6480)
+++ branches/2009R1/drivers/serial/bfin_5xx.c	2009-05-27 06:43:12 UTC (rev 6481)
@@ -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

Reply via email to