Merge tag 'for-5.15/parisc' of git://git.kernel.org/pub/scm/linux/kernel/git/deller...
[linux-2.6-microblaze.git] / arch / parisc / kernel / pdc_cons.c
index 39ccad0..2661cdd 100644 (file)
@@ -138,6 +138,7 @@ static struct tty_driver *pdc_console_tty_driver;
 
 static int __init pdc_console_tty_driver_init(void)
 {
+       struct tty_driver *driver;
        int err;
 
        /* Check if the console driver is still registered.
@@ -160,31 +161,32 @@ static int __init pdc_console_tty_driver_init(void)
        printk(KERN_INFO "The PDC console driver is still registered, removing CON_BOOT flag\n");
        pdc_cons.flags &= ~CON_BOOT;
 
-       pdc_console_tty_driver = alloc_tty_driver(1);
-
-       if (!pdc_console_tty_driver)
-               return -ENOMEM;
+       driver = tty_alloc_driver(1, TTY_DRIVER_REAL_RAW |
+                       TTY_DRIVER_RESET_TERMIOS);
+       if (IS_ERR(driver))
+               return PTR_ERR(driver);
 
        tty_port_init(&tty_port);
 
-       pdc_console_tty_driver->driver_name = "pdc_cons";
-       pdc_console_tty_driver->name = "ttyB";
-       pdc_console_tty_driver->major = MUX_MAJOR;
-       pdc_console_tty_driver->minor_start = 0;
-       pdc_console_tty_driver->type = TTY_DRIVER_TYPE_SYSTEM;
-       pdc_console_tty_driver->init_termios = tty_std_termios;
-       pdc_console_tty_driver->flags = TTY_DRIVER_REAL_RAW |
-               TTY_DRIVER_RESET_TERMIOS;
-       tty_set_operations(pdc_console_tty_driver, &pdc_console_tty_ops);
-       tty_port_link_device(&tty_port, pdc_console_tty_driver, 0);
-
-       err = tty_register_driver(pdc_console_tty_driver);
+       driver->driver_name = "pdc_cons";
+       driver->name = "ttyB";
+       driver->major = MUX_MAJOR;
+       driver->minor_start = 0;
+       driver->type = TTY_DRIVER_TYPE_SYSTEM;
+       driver->init_termios = tty_std_termios;
+       tty_set_operations(driver, &pdc_console_tty_ops);
+       tty_port_link_device(&tty_port, driver, 0);
+
+       err = tty_register_driver(driver);
        if (err) {
                printk(KERN_ERR "Unable to register the PDC console TTY driver\n");
                tty_port_destroy(&tty_port);
+               tty_driver_kref_put(driver);
                return err;
        }
 
+       pdc_console_tty_driver = driver;
+
        return 0;
 }
 device_initcall(pdc_console_tty_driver_init);