Commit 225a389b authored by Linus Torvalds's avatar Linus Torvalds

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

Pull TTY fixes from Greg Kroah-Hartman:
 "Here are 4 tiny patches, each fixing a serial driver problem that
  people have reported.

  Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>"

* tag 'tty-3.6-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
  pmac_zilog,kdb: Fix console poll hook to return instead of loop
  serial: mxs-auart: fix the wrong RTS hardware flow control
  serial: ifx6x60: fix paging fault on spi_register_driver
  serial: Change Kconfig entry for CLPS711X-target
parents 557e2e2e 38f8eefc
...@@ -160,10 +160,12 @@ config SERIAL_KS8695_CONSOLE ...@@ -160,10 +160,12 @@ config SERIAL_KS8695_CONSOLE
config SERIAL_CLPS711X config SERIAL_CLPS711X
tristate "CLPS711X serial port support" tristate "CLPS711X serial port support"
depends on ARM && ARCH_CLPS711X depends on ARCH_CLPS711X
select SERIAL_CORE select SERIAL_CORE
default y
help help
::: To be written ::: This enables the driver for the on-chip UARTs of the Cirrus
Logic EP711x/EP721x/EP731x processors.
config SERIAL_CLPS711X_CONSOLE config SERIAL_CLPS711X_CONSOLE
bool "Support for console on CLPS711X serial port" bool "Support for console on CLPS711X serial port"
...@@ -173,9 +175,7 @@ config SERIAL_CLPS711X_CONSOLE ...@@ -173,9 +175,7 @@ config SERIAL_CLPS711X_CONSOLE
Even if you say Y here, the currently visible virtual console Even if you say Y here, the currently visible virtual console
(/dev/tty0) will still be used as the system console by default, but (/dev/tty0) will still be used as the system console by default, but
you can alter that using a kernel command line option such as you can alter that using a kernel command line option such as
"console=ttyCL1". (Try "man bootparam" or see the documentation of "console=ttyCL1".
your boot loader (lilo or loadlin) about how to pass options to the
kernel at boot time.)
config SERIAL_SAMSUNG config SERIAL_SAMSUNG
tristate "Samsung SoC serial support" tristate "Samsung SoC serial support"
......
...@@ -1331,7 +1331,7 @@ static const struct spi_device_id ifx_id_table[] = { ...@@ -1331,7 +1331,7 @@ static const struct spi_device_id ifx_id_table[] = {
MODULE_DEVICE_TABLE(spi, ifx_id_table); MODULE_DEVICE_TABLE(spi, ifx_id_table);
/* spi operations */ /* spi operations */
static const struct spi_driver ifx_spi_driver = { static struct spi_driver ifx_spi_driver = {
.driver = { .driver = {
.name = DRVNAME, .name = DRVNAME,
.pm = &ifx_spi_pm, .pm = &ifx_spi_pm,
......
...@@ -73,6 +73,7 @@ ...@@ -73,6 +73,7 @@
#define AUART_CTRL0_CLKGATE (1 << 30) #define AUART_CTRL0_CLKGATE (1 << 30)
#define AUART_CTRL2_CTSEN (1 << 15) #define AUART_CTRL2_CTSEN (1 << 15)
#define AUART_CTRL2_RTSEN (1 << 14)
#define AUART_CTRL2_RTS (1 << 11) #define AUART_CTRL2_RTS (1 << 11)
#define AUART_CTRL2_RXE (1 << 9) #define AUART_CTRL2_RXE (1 << 9)
#define AUART_CTRL2_TXE (1 << 8) #define AUART_CTRL2_TXE (1 << 8)
...@@ -259,9 +260,12 @@ static void mxs_auart_set_mctrl(struct uart_port *u, unsigned mctrl) ...@@ -259,9 +260,12 @@ static void mxs_auart_set_mctrl(struct uart_port *u, unsigned mctrl)
u32 ctrl = readl(u->membase + AUART_CTRL2); u32 ctrl = readl(u->membase + AUART_CTRL2);
ctrl &= ~AUART_CTRL2_RTS; ctrl &= ~AUART_CTRL2_RTSEN;
if (mctrl & TIOCM_RTS) if (mctrl & TIOCM_RTS) {
ctrl |= AUART_CTRL2_RTS; if (u->state->port.flags & ASYNC_CTS_FLOW)
ctrl |= AUART_CTRL2_RTSEN;
}
s->ctrl = mctrl; s->ctrl = mctrl;
writel(ctrl, u->membase + AUART_CTRL2); writel(ctrl, u->membase + AUART_CTRL2);
} }
...@@ -359,9 +363,9 @@ static void mxs_auart_settermios(struct uart_port *u, ...@@ -359,9 +363,9 @@ static void mxs_auart_settermios(struct uart_port *u,
/* figure out the hardware flow control settings */ /* figure out the hardware flow control settings */
if (cflag & CRTSCTS) if (cflag & CRTSCTS)
ctrl2 |= AUART_CTRL2_CTSEN; ctrl2 |= AUART_CTRL2_CTSEN | AUART_CTRL2_RTSEN;
else else
ctrl2 &= ~AUART_CTRL2_CTSEN; ctrl2 &= ~(AUART_CTRL2_CTSEN | AUART_CTRL2_RTSEN);
/* set baud rate */ /* set baud rate */
baud = uart_get_baud_rate(u, termios, old, 0, u->uartclk); baud = uart_get_baud_rate(u, termios, old, 0, u->uartclk);
......
...@@ -1348,10 +1348,16 @@ static int pmz_verify_port(struct uart_port *port, struct serial_struct *ser) ...@@ -1348,10 +1348,16 @@ static int pmz_verify_port(struct uart_port *port, struct serial_struct *ser)
static int pmz_poll_get_char(struct uart_port *port) static int pmz_poll_get_char(struct uart_port *port)
{ {
struct uart_pmac_port *uap = (struct uart_pmac_port *)port; struct uart_pmac_port *uap = (struct uart_pmac_port *)port;
int tries = 2;
while ((read_zsreg(uap, R0) & Rx_CH_AV) == 0) while (tries) {
udelay(5); if ((read_zsreg(uap, R0) & Rx_CH_AV) != 0)
return read_zsdata(uap); return read_zsdata(uap);
if (tries--)
udelay(5);
}
return NO_POLL_CHAR;
} }
static void pmz_poll_put_char(struct uart_port *port, unsigned char c) static void pmz_poll_put_char(struct uart_port *port, unsigned char c)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment