]> rtime.felk.cvut.cz Git - zynq/linux.git/commitdiff
serial: uartps: Move cnds_uart_get_port to probe
authorMichal Simek <michal.simek@xilinx.com>
Mon, 23 Apr 2018 09:51:02 +0000 (11:51 +0200)
committerMichal Simek <michal.simek@xilinx.com>
Thu, 20 Sep 2018 13:23:56 +0000 (15:23 +0200)
c&p this function to probe as preparation for removing
cdns_uart_port[] static array.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Reviewed-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/xilinx_uartps.c

index b111e6ed43d3cf8281d860f332d0d49dd110ed0e..c648d7080acfc75709fb55d756f3ce8dd496258c 100644 (file)
@@ -1102,43 +1102,6 @@ static const struct uart_ops cdns_uart_ops = {
 
 static struct uart_port cdns_uart_port[CDNS_UART_NR_PORTS];
 
-/**
- * cdns_uart_get_port - Configure the port from platform device resource info
- * @id: Port id
- *
- * Return: a pointer to a uart_port or NULL for failure
- */
-static struct uart_port *cdns_uart_get_port(int id)
-{
-       struct uart_port *port;
-
-       /* Try the given port id if failed use default method */
-       if (cdns_uart_port[id].mapbase != 0) {
-               /* Find the next unused port */
-               for (id = 0; id < CDNS_UART_NR_PORTS; id++)
-                       if (cdns_uart_port[id].mapbase == 0)
-                               break;
-       }
-
-       if (id >= CDNS_UART_NR_PORTS)
-               return NULL;
-
-       port = &cdns_uart_port[id];
-
-       /* At this point, we've got an empty uart_port struct, initialize it */
-       spin_lock_init(&port->lock);
-       port->membase   = NULL;
-       port->irq       = 0;
-       port->type      = PORT_UNKNOWN;
-       port->iotype    = UPIO_MEM32;
-       port->flags     = UPF_BOOT_AUTOCONF;
-       port->ops       = &cdns_uart_ops;
-       port->fifosize  = CDNS_UART_FIFO_SIZE;
-       port->line      = id;
-       port->dev       = NULL;
-       return port;
-}
-
 #ifdef CONFIG_SERIAL_XILINX_PS_UART_CONSOLE
 /**
  * cdns_uart_console_wait_tx - Wait for the TX to be full
@@ -1501,15 +1464,33 @@ static int cdns_uart_probe(struct platform_device *pdev)
        if (id < 0)
                id = 0;
 
-       /* Initialize the port structure */
-       port = cdns_uart_get_port(id);
+       /* Try the given port id if failed use default method */
+       if (id < CDNS_UART_NR_PORTS && cdns_uart_port[id].mapbase != 0) {
+               /* Find the next unused port */
+               for (id = 0; id < CDNS_UART_NR_PORTS; id++)
+                       if (cdns_uart_port[id].mapbase == 0)
+                               break;
+       }
 
-       if (!port) {
+       port = &cdns_uart_port[id];
+       if (!port || id >= CDNS_UART_NR_PORTS) {
                dev_err(&pdev->dev, "Cannot get uart_port structure\n");
                rc = -ENODEV;
                goto err_out_notif_unreg;
        }
 
+       /* At this point, we've got an empty uart_port struct, initialize it */
+       spin_lock_init(&port->lock);
+       port->membase   = NULL;
+       port->irq       = 0;
+       port->type      = PORT_UNKNOWN;
+       port->iotype    = UPIO_MEM32;
+       port->flags     = UPF_BOOT_AUTOCONF;
+       port->ops       = &cdns_uart_ops;
+       port->fifosize  = CDNS_UART_FIFO_SIZE;
+       port->line      = id;
+       port->dev       = NULL;
+
        /*
         * Register the port.
         * This function also registers this device with the tty layer