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.16-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty

Pull tty/serial fixes from Greg KH:
"Here are some small serial fixes that resolve some reported problems
that started in 3.15 with some serial drivers.

And there's a new dt binding for a serial driver, which was all that
was needed for the renesas serial driver"

* tag 'tty-3.16-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
serial: sh-sci: Add device tree support for r8a7{778,740,3a4} and sh73a0
serial: imx: Fix build breakage
serial: arc_uart: Use uart_circ_empty() for open-coded comparison
serial: Test for no tx data on tx restart

+26 -4
+7
Documentation/devicetree/bindings/serial/renesas,sci-serial.txt
··· 4 4 5 5 - compatible: Must contain one of the following: 6 6 7 + - "renesas,scifa-sh73a0" for SH73A0 (SH-Mobile AG5) SCIFA compatible UART. 8 + - "renesas,scifb-sh73a0" for SH73A0 (SH-Mobile AG5) SCIFB compatible UART. 9 + - "renesas,scifa-r8a73a4" for R8A73A4 (R-Mobile APE6) SCIFA compatible UART. 10 + - "renesas,scifb-r8a73a4" for R8A73A4 (R-Mobile APE6) SCIFB compatible UART. 11 + - "renesas,scifa-r8a7740" for R8A7740 (R-Mobile A1) SCIFA compatible UART. 12 + - "renesas,scifb-r8a7740" for R8A7740 (R-Mobile A1) SCIFB compatible UART. 13 + - "renesas,scif-r8a7778" for R8A7778 (R-Car M1) SCIF compatible UART. 7 14 - "renesas,scif-r8a7779" for R8A7779 (R-Car H1) SCIF compatible UART. 8 15 - "renesas,scif-r8a7790" for R8A7790 (R-Car H2) SCIF compatible UART. 9 16 - "renesas,scifa-r8a7790" for R8A7790 (R-Car H2) SCIFA compatible UART.
+1 -1
drivers/tty/serial/arc_uart.c
··· 177 177 uart->port.icount.tx++; 178 178 uart->port.x_char = 0; 179 179 sent = 1; 180 - } else if (xmit->tail != xmit->head) { /* TODO: uart_circ_empty */ 180 + } else if (!uart_circ_empty(xmit)) { 181 181 ch = xmit->buf[xmit->tail]; 182 182 xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1); 183 183 uart->port.icount.tx++;
+3
drivers/tty/serial/imx.c
··· 567 567 struct imx_port *sport = (struct imx_port *)port; 568 568 unsigned long temp; 569 569 570 + if (uart_circ_empty(&port->state->xmit)) 571 + return; 572 + 570 573 if (USE_IRDA(sport)) { 571 574 /* half duplex in IrDA mode; have to disable receive mode */ 572 575 temp = readl(sport->port.membase + UCR4);
+2
drivers/tty/serial/ip22zilog.c
··· 603 603 } else { 604 604 struct circ_buf *xmit = &port->state->xmit; 605 605 606 + if (uart_circ_empty(xmit)) 607 + return; 606 608 writeb(xmit->buf[xmit->tail], &channel->data); 607 609 ZSDELAY(); 608 610 ZS_WSYNC(channel);
+5 -3
drivers/tty/serial/m32r_sio.c
··· 266 266 if (!(up->ier & UART_IER_THRI)) { 267 267 up->ier |= UART_IER_THRI; 268 268 serial_out(up, UART_IER, up->ier); 269 - serial_out(up, UART_TX, xmit->buf[xmit->tail]); 270 - xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1); 271 - up->port.icount.tx++; 269 + if (!uart_circ_empty(xmit)) { 270 + serial_out(up, UART_TX, xmit->buf[xmit->tail]); 271 + xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1); 272 + up->port.icount.tx++; 273 + } 272 274 } 273 275 while((serial_in(up, UART_LSR) & UART_EMPTY) != UART_EMPTY); 274 276 #else
+3
drivers/tty/serial/pmac_zilog.c
··· 653 653 } else { 654 654 struct circ_buf *xmit = &port->state->xmit; 655 655 656 + if (uart_circ_empty(xmit)) 657 + goto out; 656 658 write_zsdata(uap, xmit->buf[xmit->tail]); 657 659 zssync(uap); 658 660 xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1); ··· 663 661 if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS) 664 662 uart_write_wakeup(&uap->port); 665 663 } 664 + out: 666 665 pmz_debug("pmz: start_tx() done.\n"); 667 666 } 668 667
+3
drivers/tty/serial/sunsab.c
··· 427 427 struct circ_buf *xmit = &up->port.state->xmit; 428 428 int i; 429 429 430 + if (uart_circ_empty(xmit)) 431 + return; 432 + 430 433 up->interrupt_mask1 &= ~(SAB82532_IMR1_ALLS|SAB82532_IMR1_XPR); 431 434 writeb(up->interrupt_mask1, &up->regs->w.imr1); 432 435
+2
drivers/tty/serial/sunzilog.c
··· 703 703 } else { 704 704 struct circ_buf *xmit = &port->state->xmit; 705 705 706 + if (uart_circ_empty(xmit)) 707 + return; 706 708 writeb(xmit->buf[xmit->tail], &channel->data); 707 709 ZSDELAY(); 708 710 ZS_WSYNC(channel);