Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'tty-3.4-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty

Pull 3 tiny tty bugfixes from Greg Kroah-Hartman.

* tag 'tty-3.4-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
drivers/tty/amiserial.c: add missing tty_unlock
pch_uart: Fix dma channel unallocated issue
ARM: clps711x: serial driver hungs are a result of call disable_irq within ISR

+14 -8
+3 -1
drivers/tty/amiserial.c
··· 1073 1073 (new_serial.close_delay != port->close_delay) || 1074 1074 (new_serial.xmit_fifo_size != state->xmit_fifo_size) || 1075 1075 ((new_serial.flags & ~ASYNC_USR_MASK) != 1076 - (port->flags & ~ASYNC_USR_MASK))) 1076 + (port->flags & ~ASYNC_USR_MASK))) { 1077 + tty_unlock(); 1077 1078 return -EPERM; 1079 + } 1078 1080 port->flags = ((port->flags & ~ASYNC_USR_MASK) | 1079 1081 (new_serial.flags & ASYNC_USR_MASK)); 1080 1082 state->custom_divisor = new_serial.custom_divisor;
+8 -6
drivers/tty/serial/clps711x.c
··· 154 154 port->x_char = 0; 155 155 return IRQ_HANDLED; 156 156 } 157 - if (uart_circ_empty(xmit) || uart_tx_stopped(port)) { 158 - clps711xuart_stop_tx(port); 159 - return IRQ_HANDLED; 160 - } 157 + 158 + if (uart_circ_empty(xmit) || uart_tx_stopped(port)) 159 + goto disable_tx_irq; 161 160 162 161 count = port->fifosize >> 1; 163 162 do { ··· 170 171 if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS) 171 172 uart_write_wakeup(port); 172 173 173 - if (uart_circ_empty(xmit)) 174 - clps711xuart_stop_tx(port); 174 + if (uart_circ_empty(xmit)) { 175 + disable_tx_irq: 176 + disable_irq_nosync(TX_IRQ(port)); 177 + tx_enabled(port) = 0; 178 + } 175 179 176 180 return IRQ_HANDLED; 177 181 }
+3 -1
drivers/tty/serial/pch_uart.c
··· 1447 1447 __func__); 1448 1448 return -EOPNOTSUPP; 1449 1449 #endif 1450 - priv->use_dma = 1; 1451 1450 priv->use_dma_flag = 1; 1452 1451 dev_info(priv->port.dev, "PCH UART : Use DMA Mode\n"); 1452 + if (!priv->use_dma) 1453 + pch_request_dma(port); 1454 + priv->use_dma = 1; 1453 1455 } 1454 1456 1455 1457 return 0;