Linux内核 - 8250 dw驱动 - 中断改poll

diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c
index 7ac6bb389..f5bad8a6c 100644
--- a/drivers/tty/serial/8250/8250_port.c
+++ b/drivers/tty/serial/8250/8250_port.c
@@ -1564,17 +1564,20 @@ static inline void __start_tx(struct uart_port *port)
 	if (up->dma && !up->dma->tx_dma(up))
 		return;
 
-	if (!(up->ier & UART_IER_THRI)) {
+	if (1) {
 		up->ier |= UART_IER_THRI;
 		serial_port_out(port, UART_IER, up->ier);
 
-		if (up->bugs & UART_BUG_TXEN) {
+		if (1) {
 			unsigned char lsr;
 
 			lsr = serial_in(up, UART_LSR);
 			up->lsr_saved_flags |= lsr & LSR_SAVE_FLAGS;
-			if (lsr & UART_LSR_THRE)
-				serial8250_tx_chars(up);
+            while(!(lsr & UART_LSR_THRE)) {
+                lsr = serial_in(up, UART_LSR);
+            }
+			serial8250_tx_chars(up);
+			// if (lsr & UART_LSR_THRE)
 		}
 	}
 
@@ -2376,7 +2379,7 @@ int serial8250_do_startup(struct uart_port *port)
 	} else {
 		up->bugs &= ~UART_BUG_TXEN;
 	}
-
+	up->bugs |= UART_BUG_TXEN;
 dont_test_tx_en:
 	spin_unlock_irqrestore(&port->lock, flags);
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值