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
This commit is contained in:
@@ -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
|
|||||||
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[] = {
|
|||||||
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 @@
|
|||||||
#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)
|
|||||||
|
|
||||||
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,
|
|||||||
|
|
||||||
/* 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)
|
|||||||
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)
|
||||||
|
Reference in New Issue
Block a user