Commit 78b3d1c2 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
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
parents 56a50f20 34c4eda8
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -4,6 +4,13 @@ Required properties:

  - compatible: Must contain one of the following:

    - "renesas,scifa-sh73a0" for SH73A0 (SH-Mobile AG5) SCIFA compatible UART.
    - "renesas,scifb-sh73a0" for SH73A0 (SH-Mobile AG5) SCIFB compatible UART.
    - "renesas,scifa-r8a73a4" for R8A73A4 (R-Mobile APE6) SCIFA compatible UART.
    - "renesas,scifb-r8a73a4" for R8A73A4 (R-Mobile APE6) SCIFB compatible UART.
    - "renesas,scifa-r8a7740" for R8A7740 (R-Mobile A1) SCIFA compatible UART.
    - "renesas,scifb-r8a7740" for R8A7740 (R-Mobile A1) SCIFB compatible UART.
    - "renesas,scif-r8a7778" for R8A7778 (R-Car M1) SCIF compatible UART.
    - "renesas,scif-r8a7779" for R8A7779 (R-Car H1) SCIF compatible UART.
    - "renesas,scif-r8a7790" for R8A7790 (R-Car H2) SCIF compatible UART.
    - "renesas,scifa-r8a7790" for R8A7790 (R-Car H2) SCIFA compatible UART.
+1 −1
Original line number Diff line number Diff line
@@ -177,7 +177,7 @@ static void arc_serial_tx_chars(struct arc_uart_port *uart)
		uart->port.icount.tx++;
		uart->port.x_char = 0;
		sent = 1;
	} else if (xmit->tail != xmit->head) {	/* TODO: uart_circ_empty */
	} else if (!uart_circ_empty(xmit)) {
		ch = xmit->buf[xmit->tail];
		xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1);
		uart->port.icount.tx++;
+3 −0
Original line number Diff line number Diff line
@@ -567,6 +567,9 @@ static void imx_start_tx(struct uart_port *port)
	struct imx_port *sport = (struct imx_port *)port;
	unsigned long temp;

	if (uart_circ_empty(&port->state->xmit))
		return;

	if (USE_IRDA(sport)) {
		/* half duplex in IrDA mode; have to disable receive mode */
		temp = readl(sport->port.membase + UCR4);
+2 −0
Original line number Diff line number Diff line
@@ -603,6 +603,8 @@ static void ip22zilog_start_tx(struct uart_port *port)
	} else {
		struct circ_buf *xmit = &port->state->xmit;

		if (uart_circ_empty(xmit))
			return;
		writeb(xmit->buf[xmit->tail], &channel->data);
		ZSDELAY();
		ZS_WSYNC(channel);
+5 −3
Original line number Diff line number Diff line
@@ -266,10 +266,12 @@ static void m32r_sio_start_tx(struct uart_port *port)
	if (!(up->ier & UART_IER_THRI)) {
		up->ier |= UART_IER_THRI;
		serial_out(up, UART_IER, up->ier);
		if (!uart_circ_empty(xmit)) {
			serial_out(up, UART_TX, xmit->buf[xmit->tail]);
			xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1);
			up->port.icount.tx++;
		}
	}
	while((serial_in(up, UART_LSR) & UART_EMPTY) != UART_EMPTY);
#else
	struct uart_sio_port *up = (struct uart_sio_port *)port;
Loading