OSDN Git Service

tty: serial: uartlite: Move uart register to probe
authorShubhrajyoti Datta <shubhrajyoti.datta@xilinx.com>
Mon, 6 Aug 2018 08:52:12 +0000 (14:22 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 18 Sep 2018 14:07:23 +0000 (16:07 +0200)
Move uart register to probe.
This is in preparation of removing the hardcoding of number of uarts.

Signed-off-by: Shubhrajyoti Datta <shubhrajyoti.datta@xilinx.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/uartlite.c

index 69411b6..77da565 100644 (file)
@@ -782,6 +782,15 @@ static int ulite_probe(struct platform_device *pdev)
                return ret;
        }
 
+       if (!ulite_uart_driver.state) {
+               dev_dbg(&pdev->dev, "uartlite: calling uart_register_driver()\n");
+               ret = uart_register_driver(&ulite_uart_driver);
+               if (ret < 0) {
+                       dev_err(&pdev->dev, "Failed to register driver\n");
+                       return ret;
+               }
+       }
+
        ret = ulite_assign(&pdev->dev, id, res->start, irq, pdata);
 
        clk_disable(pdata->clk);
@@ -817,25 +826,9 @@ static struct platform_driver ulite_platform_driver = {
 
 static int __init ulite_init(void)
 {
-       int ret;
-
-       pr_debug("uartlite: calling uart_register_driver()\n");
-       ret = uart_register_driver(&ulite_uart_driver);
-       if (ret)
-               goto err_uart;
 
        pr_debug("uartlite: calling platform_driver_register()\n");
-       ret = platform_driver_register(&ulite_platform_driver);
-       if (ret)
-               goto err_plat;
-
-       return 0;
-
-err_plat:
-       uart_unregister_driver(&ulite_uart_driver);
-err_uart:
-       pr_err("registering uartlite driver failed: err=%i\n", ret);
-       return ret;
+       return platform_driver_register(&ulite_platform_driver);
 }
 
 static void __exit ulite_exit(void)