Merge tag 'tty-3.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 1 Apr 2014 23:55:57 +0000 (16:55 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 1 Apr 2014 23:55:57 +0000 (16:55 -0700)
Pull tty/serial driver update from Greg KH:
 "Here's the big tty/serial driver update for 3.15-rc1.

  Nothing major, a number of serial driver updates and a few tty core
  fixes as well.

  All have been in linux-next for a while"

* tag 'tty-3.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: (71 commits)
  tty/serial: omap: empty the RX FIFO at the end of half-duplex TX
  tty/serial: omap: fix RX interrupt enable/disable in half-duplex TX
  serial: sh-sci: Neaten dev_<level> uses
  serial: sh-sci: Replace hardcoded 3 by UART_PM_STATE_OFF
  serial: sh-sci: Add more register documentation
  serial: sh-sci: Remove useless casts
  serial: sh-sci: Replace printk() by pr_*()
  serial_core: Avoid NULL pointer dereference in uart_close()
  serial_core: Get a reference for port->tty in uart_remove_one_port()
  serial: clps711x: Give a chance to perform useful tasks during wait loop
  serial_core: Grammar s/ports/port's/
  serial_core: Spelling s/contro/control/
  serial: efm32: properly namespace location property
  serial: max310x: Add missing #include <linux/uaccess.h>
  synclink: fix info leak in ioctl
  serial: 8250: Clean up the locking for -rt
  serial: 8250_pci: change BayTrail default uartclk
  serial: 8250_pci: more BayTrail error-free bauds
  serial: sh-sci: Add missing call to uart_remove_one_port() in failure path
  serial_core: Unregister console in uart_remove_one_port()
  ...

1  2 
drivers/tty/serial/sh-sci.c

index 7e0b626026322c9319d6588de604231d496e76fc,7ee5a79222ff116c11f16b9426528b5e00ea6a0b..88236da0ddf731ae13d0701448497595e389ef62
@@@ -428,7 -428,7 +428,7 @@@ static int sci_probe_regmap(struct plat
                cfg->regtype = SCIx_HSCIF_REGTYPE;
                break;
        default:
-               printk(KERN_ERR "Can't probe register map for given port\n");
+               pr_err("Can't probe register map for given port\n");
                return -EINVAL;
        }
  
@@@ -788,7 -788,7 +788,7 @@@ static int sci_handle_errors(struct uar
                if (tty_insert_flip_char(tport, 0, TTY_OVERRUN))
                        copied++;
  
-               dev_notice(port->dev, "overrun error");
+               dev_notice(port->dev, "overrun error\n");
        }
  
        if (status & SCxSR_FER(port)) {
                if (tty_insert_flip_char(tport, 0, TTY_PARITY))
                        copied++;
  
-               dev_notice(port->dev, "parity error");
+               dev_notice(port->dev, "parity error\n");
        }
  
        if (copied)
@@@ -911,7 -911,7 +911,7 @@@ static irqreturn_t sci_rx_interrupt(in
                /* Disable future Rx interrupts */
                if (port->type == PORT_SCIFA || port->type == PORT_SCIFB) {
                        disable_irq_nosync(irq);
-                       scr |= 0x4000;
+                       scr |= SCSCR_RDRQE;
                } else {
                        scr &= ~SCSCR_RIE;
                }
@@@ -1041,7 -1041,8 +1041,7 @@@ static int sci_notifier(struct notifier
  
        sci_port = container_of(self, struct sci_port, freq_transition);
  
 -      if ((phase == CPUFREQ_POSTCHANGE) ||
 -          (phase == CPUFREQ_RESUMECHANGE)) {
 +      if (phase == CPUFREQ_POSTCHANGE) {
                struct uart_port *port = &sci_port->port;
  
                spin_lock_irqsave(&port->lock, flags);
@@@ -1199,7 -1200,9 +1199,9 @@@ static void sci_set_mctrl(struct uart_p
                 */
                reg = sci_getreg(port, SCFCR);
                if (reg->size)
-                       serial_port_out(port, SCFCR, serial_port_in(port, SCFCR) | 1);
+                       serial_port_out(port, SCFCR,
+                                       serial_port_in(port, SCFCR) |
+                                       SCFCR_LOOP);
        }
  }
  
@@@ -1289,7 -1292,8 +1291,8 @@@ static void sci_dma_rx_complete(void *a
        unsigned long flags;
        int count;
  
-       dev_dbg(port->dev, "%s(%d) active #%d\n", __func__, port->line, s->active_rx);
+       dev_dbg(port->dev, "%s(%d) active #%d\n",
+               __func__, port->line, s->active_rx);
  
        spin_lock_irqsave(&port->lock, flags);
  
@@@ -1365,8 -1369,8 +1368,8 @@@ static void sci_submit_rx(struct sci_po
                        sci_rx_dma_release(s, true);
                        return;
                }
-               dev_dbg(s->port.dev, "%s(): cookie %d to #%d\n", __func__,
-                       s->cookie_rx[i], i);
+               dev_dbg(s->port.dev, "%s(): cookie %d to #%d\n",
+                       __func__, s->cookie_rx[i], i);
        }
  
        s->active_rx = s->cookie_rx[0];
@@@ -1425,8 -1429,8 +1428,8 @@@ static void work_fn_rx(struct work_stru
  
        s->active_rx = s->cookie_rx[!new];
  
-       dev_dbg(port->dev, "%s: cookie %d #%d, new active #%d\n", __func__,
-               s->cookie_rx[new], new, s->active_rx);
+       dev_dbg(port->dev, "%s: cookie %d #%d, new active #%d\n",
+               __func__, s->cookie_rx[new], new, s->active_rx);
  }
  
  static void work_fn_tx(struct work_struct *work)
                return;
        }
  
-       dev_dbg(port->dev, "%s: %p: %d...%d, cookie %d\n", __func__,
-               xmit->buf, xmit->tail, xmit->head, s->cookie_tx);
+       dev_dbg(port->dev, "%s: %p: %d...%d, cookie %d\n",
+               __func__, xmit->buf, xmit->tail, xmit->head, s->cookie_tx);
  
        dma_async_issue_pending(chan);
  }
@@@ -1495,9 -1499,9 +1498,9 @@@ static void sci_start_tx(struct uart_po
        if (port->type == PORT_SCIFA || port->type == PORT_SCIFB) {
                u16 new, scr = serial_port_in(port, SCSCR);
                if (s->chan_tx)
-                       new = scr | 0x8000;
+                       new = scr | SCSCR_TDRQE;
                else
-                       new = scr & ~0x8000;
+                       new = scr & ~SCSCR_TDRQE;
                if (new != scr)
                        serial_port_out(port, SCSCR, new);
        }
@@@ -1524,7 -1528,7 +1527,7 @@@ static void sci_stop_tx(struct uart_por
        ctrl = serial_port_in(port, SCSCR);
  
        if (port->type == PORT_SCIFA || port->type == PORT_SCIFB)
-               ctrl &= ~0x8000;
+               ctrl &= ~SCSCR_TDRQE;
  
        ctrl &= ~SCSCR_TIE;
  
@@@ -1538,7 -1542,7 +1541,7 @@@ static void sci_start_rx(struct uart_po
        ctrl = serial_port_in(port, SCSCR) | port_rx_irq_mask(port);
  
        if (port->type == PORT_SCIFA || port->type == PORT_SCIFB)
-               ctrl &= ~0x4000;
+               ctrl &= ~SCSCR_RDRQE;
  
        serial_port_out(port, SCSCR, ctrl);
  }
@@@ -1550,7 -1554,7 +1553,7 @@@ static void sci_stop_rx(struct uart_por
        ctrl = serial_port_in(port, SCSCR);
  
        if (port->type == PORT_SCIFA || port->type == PORT_SCIFB)
-               ctrl &= ~0x4000;
+               ctrl &= ~SCSCR_RDRQE;
  
        ctrl &= ~port_rx_irq_mask(port);
  
@@@ -1599,8 -1603,8 +1602,8 @@@ static bool filter(struct dma_chan *cha
  {
        struct sh_dmae_slave *param = slave;
  
-       dev_dbg(chan->device->dev, "%s: slave ID %d\n", __func__,
-               param->shdma_slave.slave_id);
+       dev_dbg(chan->device->dev, "%s: slave ID %d\n",
+               __func__, param->shdma_slave.slave_id);
  
        chan->private = &param->shdma_slave;
        return true;
@@@ -1613,7 -1617,7 +1616,7 @@@ static void rx_timer_fn(unsigned long a
        u16 scr = serial_port_in(port, SCSCR);
  
        if (port->type == PORT_SCIFA || port->type == PORT_SCIFB) {
-               scr &= ~0x4000;
+               scr &= ~SCSCR_RDRQE;
                enable_irq(s->irqs[SCIx_RXI_IRQ]);
        }
        serial_port_out(port, SCSCR, scr | SCSCR_RIE);
@@@ -1629,8 -1633,7 +1632,7 @@@ static void sci_request_dma(struct uart
        dma_cap_mask_t mask;
        int nent;
  
-       dev_dbg(port->dev, "%s: port %d\n", __func__,
-               port->line);
+       dev_dbg(port->dev, "%s: port %d\n", __func__, port->line);
  
        if (s->cfg->dma_slave_tx <= 0 || s->cfg->dma_slave_rx <= 0)
                return;
                if (!nent)
                        sci_tx_dma_release(s, false);
                else
-                       dev_dbg(port->dev, "%s: mapped %d@%p to %pad\n", __func__,
+                       dev_dbg(port->dev, "%s: mapped %d@%p to %pad\n",
+                               __func__,
                                sg_dma_len(&s->sg_tx), port->state->xmit.buf,
                                &sg_dma_address(&s->sg_tx));
  
@@@ -1870,13 -1874,13 +1873,13 @@@ static void sci_set_termios(struct uart
        smr_val = serial_port_in(port, SCSMR) & 3;
  
        if ((termios->c_cflag & CSIZE) == CS7)
-               smr_val |= 0x40;
+               smr_val |= SCSMR_CHR;
        if (termios->c_cflag & PARENB)
-               smr_val |= 0x20;
+               smr_val |= SCSMR_PE;
        if (termios->c_cflag & PARODD)
-               smr_val |= 0x30;
+               smr_val |= SCSMR_PE | SCSMR_ODD;
        if (termios->c_cflag & CSTOPB)
-               smr_val |= 0x08;
+               smr_val |= SCSMR_STOP;
  
        uart_update_timeout(port, termios->c_cflag, baud);
  
                __func__, smr_val, cks, t, s->cfg->scscr);
  
        if (t >= 0) {
-               serial_port_out(port, SCSMR, (smr_val & ~3) | cks);
+               serial_port_out(port, SCSMR, (smr_val & ~SCSMR_CKS) | cks);
                serial_port_out(port, SCBRR, t);
                reg = sci_getreg(port, HSSRR);
                if (reg->size)
        if (s->chan_rx) {
                s->rx_timeout = (port->timeout - HZ / 50) * s->buf_len_rx * 3 /
                        port->fifosize / 2;
-               dev_dbg(port->dev,
-                       "DMA Rx t-out %ums, tty t-out %u jiffies\n",
+               dev_dbg(port->dev, "DMA Rx t-out %ums, tty t-out %u jiffies\n",
                        s->rx_timeout * 1000 / HZ, port->timeout);
                if (s->rx_timeout < msecs_to_jiffies(20))
                        s->rx_timeout = msecs_to_jiffies(20);
@@@ -1952,7 -1955,7 +1954,7 @@@ static void sci_pm(struct uart_port *po
        struct sci_port *sci_port = to_sci_port(port);
  
        switch (state) {
-       case 3:
+       case UART_PM_STATE_OFF:
                sci_port_disable(sci_port);
                break;
        default:
@@@ -2017,7 -2020,7 +2019,7 @@@ static int sci_remap_port(struct uart_p
                 * need to do any remapping, just cast the cookie
                 * directly.
                 */
-               port->membase = (void __iomem *)port->mapbase;
+               port->membase = (void __iomem *)(uintptr_t)port->mapbase;
        }
  
        return 0;
@@@ -2388,8 -2391,7 +2390,7 @@@ static inline int sci_probe_earlyprintk
  
  #endif /* CONFIG_SERIAL_SH_SCI_CONSOLE */
  
- static char banner[] __initdata =
-       KERN_INFO "SuperH (H)SCI(F) driver initialized\n";
+ static const char banner[] __initconst = "SuperH (H)SCI(F) driver initialized";
  
  static struct uart_driver sci_uart_driver = {
        .owner          = THIS_MODULE,
@@@ -2423,25 -2425,25 +2424,25 @@@ struct sci_port_info 
  static const struct of_device_id of_sci_match[] = {
        {
                .compatible = "renesas,scif",
-               .data = (void *)&(const struct sci_port_info) {
+               .data = &(const struct sci_port_info) {
                        .type = PORT_SCIF,
                        .regtype = SCIx_SH4_SCIF_REGTYPE,
                },
        }, {
                .compatible = "renesas,scifa",
-               .data = (void *)&(const struct sci_port_info) {
+               .data = &(const struct sci_port_info) {
                        .type = PORT_SCIFA,
                        .regtype = SCIx_SCIFA_REGTYPE,
                },
        }, {
                .compatible = "renesas,scifb",
-               .data = (void *)&(const struct sci_port_info) {
+               .data = &(const struct sci_port_info) {
                        .type = PORT_SCIFB,
                        .regtype = SCIx_SCIFB_REGTYPE,
                },
        }, {
                .compatible = "renesas,hscif",
-               .data = (void *)&(const struct sci_port_info) {
+               .data = &(const struct sci_port_info) {
                        .type = PORT_HSCIF,
                        .regtype = SCIx_HSCIF_REGTYPE,
                },
@@@ -2501,11 -2503,9 +2502,9 @@@ static int sci_probe_single(struct plat
  
        /* Sanity check */
        if (unlikely(index >= SCI_NPORTS)) {
-               dev_notice(&dev->dev, "Attempting to register port "
-                          "%d when only %d are available.\n",
+               dev_notice(&dev->dev, "Attempting to register port %d when only %d are available\n",
                           index+1, SCI_NPORTS);
-               dev_notice(&dev->dev, "Consider bumping "
-                          "CONFIG_SERIAL_SH_SCI_NR_UARTS!\n");
+               dev_notice(&dev->dev, "Consider bumping CONFIG_SERIAL_SH_SCI_NR_UARTS!\n");
                return -EINVAL;
        }
  
@@@ -2563,6 -2563,7 +2562,7 @@@ static int sci_probe(struct platform_de
        ret = cpufreq_register_notifier(&sp->freq_transition,
                                        CPUFREQ_TRANSITION_NOTIFIER);
        if (unlikely(ret < 0)) {
+               uart_remove_one_port(&sci_uart_driver, &sp->port);
                sci_cleanup_single(sp);
                return ret;
        }
@@@ -2614,7 -2615,7 +2614,7 @@@ static int __init sci_init(void
  {
        int ret;
  
-       printk(banner);
+       pr_info("%s\n", banner);
  
        ret = uart_register_driver(&sci_uart_driver);
        if (likely(ret == 0)) {