Merge 4.0-rc5 into tty-next
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 23 Mar 2015 20:45:24 +0000 (21:45 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 23 Mar 2015 20:45:24 +0000 (21:45 +0100)
We want the tty/serial fixes in here as well.

Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1  2 
drivers/tty/serial/8250/8250_dw.c

index f7f5371352b78b0a029b2509ccdafeb969c27a62,6ae5b8560e4d764cafb8143a8a4654a81bf21f83..48a8bef058e09e11731fd87f444a2b6a38c545aa
@@@ -119,7 -119,10 +119,10 @@@ static void dw8250_serial_out(struct ua
                        dw8250_force_idle(p);
                        writeb(value, p->membase + (UART_LCR << p->regshift));
                }
-               dev_err(p->dev, "Couldn't set LCR to %d\n", value);
+               /*
+                * FIXME: this deadlocks if port->lock is already held
+                * dev_err(p->dev, "Couldn't set LCR to %d\n", value);
+                */
        }
  }
  
@@@ -163,7 -166,10 +166,10 @@@ static void dw8250_serial_outq(struct u
                        __raw_writeq(value & 0xff,
                                     p->membase + (UART_LCR << p->regshift));
                }
-               dev_err(p->dev, "Couldn't set LCR to %d\n", value);
+               /*
+                * FIXME: this deadlocks if port->lock is already held
+                * dev_err(p->dev, "Couldn't set LCR to %d\n", value);
+                */
        }
  }
  #endif /* CONFIG_64BIT */
@@@ -187,7 -193,10 +193,10 @@@ static void dw8250_serial_out32(struct 
                        dw8250_force_idle(p);
                        writel(value, p->membase + (UART_LCR << p->regshift));
                }
-               dev_err(p->dev, "Couldn't set LCR to %d\n", value);
+               /*
+                * FIXME: this deadlocks if port->lock is already held
+                * dev_err(p->dev, "Couldn't set LCR to %d\n", value);
+                */
        }
  }
  
@@@ -416,24 -425,18 +425,24 @@@ static int dw8250_probe(struct platform
  {
        struct uart_8250_port uart = {};
        struct resource *regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 -      struct resource *irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
 +      int irq = platform_get_irq(pdev, 0);
        struct dw8250_data *data;
        int err;
  
 -      if (!regs || !irq) {
 -              dev_err(&pdev->dev, "no registers/irq defined\n");
 +      if (!regs) {
 +              dev_err(&pdev->dev, "no registers defined\n");
                return -EINVAL;
        }
  
 +      if (irq < 0) {
 +              if (irq != -EPROBE_DEFER)
 +                      dev_err(&pdev->dev, "cannot get irq\n");
 +              return irq;
 +      }
 +
        spin_lock_init(&uart.port.lock);
        uart.port.mapbase = regs->start;
 -      uart.port.irq = irq->start;
 +      uart.port.irq = irq;
        uart.port.handle_irq = dw8250_handle_irq;
        uart.port.pm = dw8250_do_pm;
        uart.port.type = PORT_8250;
@@@ -646,4 -649,3 +655,4 @@@ module_platform_driver(dw8250_platform_
  MODULE_AUTHOR("Jamie Iles");
  MODULE_LICENSE("GPL");
  MODULE_DESCRIPTION("Synopsys DesignWare 8250 serial port driver");
 +MODULE_ALIAS("platform:dw-apb-uart");
This page took 0.04639 seconds and 5 git commands to generate.