Merge tag 'trace-fixes-v3.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git...
[firefly-linux-kernel-4.4.55.git] / drivers / tty / serial / imx.c
index d799140e53b6a649b51ace8129b8846ed695a824..3b6c1a2e25deccd86180e7be8a9b4b4778380729 100644 (file)
@@ -496,8 +496,7 @@ static void dma_tx_callback(void *data)
 
        dev_dbg(sport->port.dev, "we finish the TX DMA.\n");
 
-       if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS)
-               uart_write_wakeup(&sport->port);
+       uart_write_wakeup(&sport->port);
 
        if (waitqueue_active(&sport->dma_wait)) {
                wake_up(&sport->dma_wait);
@@ -1117,25 +1116,25 @@ static int imx_startup(struct uart_port *port)
         */
        if (sport->txirq > 0) {
                retval = request_irq(sport->rxirq, imx_rxint, 0,
-                               DRIVER_NAME, sport);
+                                    dev_name(port->dev), sport);
                if (retval)
                        goto error_out1;
 
                retval = request_irq(sport->txirq, imx_txint, 0,
-                               DRIVER_NAME, sport);
+                                    dev_name(port->dev), sport);
                if (retval)
                        goto error_out2;
 
                /* do not use RTS IRQ on IrDA */
                if (!USE_IRDA(sport)) {
                        retval = request_irq(sport->rtsirq, imx_rtsint, 0,
-                                       DRIVER_NAME, sport);
+                                            dev_name(port->dev), sport);
                        if (retval)
                                goto error_out3;
                }
        } else {
                retval = request_irq(sport->port.irq, imx_int, 0,
-                               DRIVER_NAME, sport);
+                                    dev_name(port->dev), sport);
                if (retval) {
                        free_irq(sport->port.irq, sport);
                        goto error_out1;
@@ -1469,36 +1468,6 @@ static const char *imx_type(struct uart_port *port)
        return sport->port.type == PORT_IMX ? "IMX" : NULL;
 }
 
-/*
- * Release the memory region(s) being used by 'port'.
- */
-static void imx_release_port(struct uart_port *port)
-{
-       struct platform_device *pdev = to_platform_device(port->dev);
-       struct resource *mmres;
-
-       mmres = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       release_mem_region(mmres->start, resource_size(mmres));
-}
-
-/*
- * Request the memory region(s) being used by 'port'.
- */
-static int imx_request_port(struct uart_port *port)
-{
-       struct platform_device *pdev = to_platform_device(port->dev);
-       struct resource *mmres;
-       void *ret;
-
-       mmres = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       if (!mmres)
-               return -ENODEV;
-
-       ret = request_mem_region(mmres->start, resource_size(mmres), "imx-uart");
-
-       return  ret ? 0 : -EBUSY;
-}
-
 /*
  * Configure/autoconfigure the port.
  */
@@ -1506,8 +1475,7 @@ static void imx_config_port(struct uart_port *port, int flags)
 {
        struct imx_port *sport = (struct imx_port *)port;
 
-       if (flags & UART_CONFIG_TYPE &&
-           imx_request_port(&sport->port) == 0)
+       if (flags & UART_CONFIG_TYPE)
                sport->port.type = PORT_IMX;
 }
 
@@ -1617,8 +1585,6 @@ static struct uart_ops imx_pops = {
        .flush_buffer   = imx_flush_buffer,
        .set_termios    = imx_set_termios,
        .type           = imx_type,
-       .release_port   = imx_release_port,
-       .request_port   = imx_request_port,
        .config_port    = imx_config_port,
        .verify_port    = imx_verify_port,
 #if defined(CONFIG_CONSOLE_POLL)
@@ -1935,7 +1901,6 @@ static void serial_imx_probe_pdata(struct imx_port *sport,
 static int serial_imx_probe(struct platform_device *pdev)
 {
        struct imx_port *sport;
-       struct imxuart_platform_data *pdata;
        void __iomem *base;
        int ret = 0;
        struct resource *res;
@@ -1951,12 +1916,9 @@ static int serial_imx_probe(struct platform_device *pdev)
                return ret;
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       if (!res)
-               return -ENODEV;
-
-       base = devm_ioremap(&pdev->dev, res->start, PAGE_SIZE);
-       if (!base)
-               return -ENOMEM;
+       base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(base))
+               return PTR_ERR(base);
 
        sport->port.dev = &pdev->dev;
        sport->port.mapbase = res->start;
@@ -1992,38 +1954,16 @@ static int serial_imx_probe(struct platform_device *pdev)
 
        imx_ports[sport->port.line] = sport;
 
-       pdata = dev_get_platdata(&pdev->dev);
-       if (pdata && pdata->init) {
-               ret = pdata->init(pdev);
-               if (ret)
-                       return ret;
-       }
-
-       ret = uart_add_one_port(&imx_reg, &sport->port);
-       if (ret)
-               goto deinit;
        platform_set_drvdata(pdev, sport);
 
-       return 0;
-deinit:
-       if (pdata && pdata->exit)
-               pdata->exit(pdev);
-       return ret;
+       return uart_add_one_port(&imx_reg, &sport->port);
 }
 
 static int serial_imx_remove(struct platform_device *pdev)
 {
-       struct imxuart_platform_data *pdata;
        struct imx_port *sport = platform_get_drvdata(pdev);
 
-       pdata = dev_get_platdata(&pdev->dev);
-
-       uart_remove_one_port(&imx_reg, &sport->port);
-
-       if (pdata && pdata->exit)
-               pdata->exit(pdev);
-
-       return 0;
+       return uart_remove_one_port(&imx_reg, &sport->port);
 }
 
 static struct platform_driver serial_imx_driver = {