Commit 7a92bc38 authored by Linus Torvalds's avatar Linus Torvalds

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

Pull tty/serial fixes from Greg Kroah-Hartman:
 "Here are 4 small tty/serial fixes for 3.9.

  One fixes a bug where we broke the documentation build, and the others
  fix reported problems in some serial drivers.

  All have been in linux-next for a while"

* tag 'tty-3.9-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
  tty: mxser: fix cycle termination condition in mxser_probe() and mxser_module_init()
  Revert "tty/8250_pnp: serial port detection regression since v3.7"
  OMAP/serial: Revert bad fix of Rx FIFO threshold granularity
  tty: Documentation: fix a path in a DocBook template
parents 722aacb2 1b581f17
...@@ -227,7 +227,7 @@ X!Isound/sound_firmware.c ...@@ -227,7 +227,7 @@ X!Isound/sound_firmware.c
<chapter id="uart16x50"> <chapter id="uart16x50">
<title>16x50 UART Driver</title> <title>16x50 UART Driver</title>
!Edrivers/tty/serial/serial_core.c !Edrivers/tty/serial/serial_core.c
!Edrivers/tty/serial/8250/8250.c !Edrivers/tty/serial/8250/8250_core.c
</chapter> </chapter>
<chapter id="fbdev"> <chapter id="fbdev">
......
...@@ -2643,9 +2643,9 @@ static int mxser_probe(struct pci_dev *pdev, ...@@ -2643,9 +2643,9 @@ static int mxser_probe(struct pci_dev *pdev,
mxvar_sdriver, brd->idx + i, &pdev->dev); mxvar_sdriver, brd->idx + i, &pdev->dev);
if (IS_ERR(tty_dev)) { if (IS_ERR(tty_dev)) {
retval = PTR_ERR(tty_dev); retval = PTR_ERR(tty_dev);
for (i--; i >= 0; i--) for (; i > 0; i--)
tty_unregister_device(mxvar_sdriver, tty_unregister_device(mxvar_sdriver,
brd->idx + i); brd->idx + i - 1);
goto err_relbrd; goto err_relbrd;
} }
} }
...@@ -2751,9 +2751,9 @@ static int __init mxser_module_init(void) ...@@ -2751,9 +2751,9 @@ static int __init mxser_module_init(void)
tty_dev = tty_port_register_device(&brd->ports[i].port, tty_dev = tty_port_register_device(&brd->ports[i].port,
mxvar_sdriver, brd->idx + i, NULL); mxvar_sdriver, brd->idx + i, NULL);
if (IS_ERR(tty_dev)) { if (IS_ERR(tty_dev)) {
for (i--; i >= 0; i--) for (; i > 0; i--)
tty_unregister_device(mxvar_sdriver, tty_unregister_device(mxvar_sdriver,
brd->idx + i); brd->idx + i - 1);
for (i = 0; i < brd->info->nports; i++) for (i = 0; i < brd->info->nports; i++)
tty_port_destroy(&brd->ports[i].port); tty_port_destroy(&brd->ports[i].port);
free_irq(brd->irq, brd); free_irq(brd->irq, brd);
......
...@@ -429,7 +429,6 @@ serial_pnp_probe(struct pnp_dev *dev, const struct pnp_device_id *dev_id) ...@@ -429,7 +429,6 @@ serial_pnp_probe(struct pnp_dev *dev, const struct pnp_device_id *dev_id)
{ {
struct uart_8250_port uart; struct uart_8250_port uart;
int ret, line, flags = dev_id->driver_data; int ret, line, flags = dev_id->driver_data;
struct resource *res = NULL;
if (flags & UNKNOWN_DEV) { if (flags & UNKNOWN_DEV) {
ret = serial_pnp_guess_board(dev); ret = serial_pnp_guess_board(dev);
...@@ -440,12 +439,11 @@ serial_pnp_probe(struct pnp_dev *dev, const struct pnp_device_id *dev_id) ...@@ -440,12 +439,11 @@ serial_pnp_probe(struct pnp_dev *dev, const struct pnp_device_id *dev_id)
memset(&uart, 0, sizeof(uart)); memset(&uart, 0, sizeof(uart));
if (pnp_irq_valid(dev, 0)) if (pnp_irq_valid(dev, 0))
uart.port.irq = pnp_irq(dev, 0); uart.port.irq = pnp_irq(dev, 0);
if ((flags & CIR_PORT) && pnp_port_valid(dev, 2)) if ((flags & CIR_PORT) && pnp_port_valid(dev, 2)) {
res = pnp_get_resource(dev, IORESOURCE_IO, 2); uart.port.iobase = pnp_port_start(dev, 2);
else if (pnp_port_valid(dev, 0)) uart.port.iotype = UPIO_PORT;
res = pnp_get_resource(dev, IORESOURCE_IO, 0); } else if (pnp_port_valid(dev, 0)) {
if (pnp_resource_enabled(res)) { uart.port.iobase = pnp_port_start(dev, 0);
uart.port.iobase = res->start;
uart.port.iotype = UPIO_PORT; uart.port.iotype = UPIO_PORT;
} else if (pnp_mem_valid(dev, 0)) { } else if (pnp_mem_valid(dev, 0)) {
uart.port.mapbase = pnp_mem_start(dev, 0); uart.port.mapbase = pnp_mem_start(dev, 0);
......
...@@ -886,6 +886,17 @@ serial_omap_set_termios(struct uart_port *port, struct ktermios *termios, ...@@ -886,6 +886,17 @@ serial_omap_set_termios(struct uart_port *port, struct ktermios *termios,
serial_out(up, UART_MCR, up->mcr | UART_MCR_TCRTLR); serial_out(up, UART_MCR, up->mcr | UART_MCR_TCRTLR);
/* FIFO ENABLE, DMA MODE */ /* FIFO ENABLE, DMA MODE */
up->scr |= OMAP_UART_SCR_RX_TRIG_GRANU1_MASK;
/*
* NOTE: Setting OMAP_UART_SCR_RX_TRIG_GRANU1_MASK
* sets Enables the granularity of 1 for TRIGGER RX
* level. Along with setting RX FIFO trigger level
* to 1 (as noted below, 16 characters) and TLR[3:0]
* to zero this will result RX FIFO threshold level
* to 1 character, instead of 16 as noted in comment
* below.
*/
/* Set receive FIFO threshold to 16 characters and /* Set receive FIFO threshold to 16 characters and
* transmit FIFO threshold to 16 spaces * transmit FIFO threshold to 16 spaces
*/ */
......
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