Merge tag 'tty-5.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
[linux-2.6-microblaze.git] / drivers / tty / synclink_gt.c
index 5bb928b..a9acd93 100644 (file)
@@ -1524,11 +1524,11 @@ static int hdlcdev_close(struct net_device *dev)
  *
  * Return: 0 if success, otherwise error code
  */
-static int hdlcdev_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
+static int hdlcdev_ioctl(struct net_device *dev, struct if_settings *ifs)
 {
        const size_t size = sizeof(sync_serial_settings);
        sync_serial_settings new_line;
-       sync_serial_settings __user *line = ifr->ifr_settings.ifs_ifsu.sync;
+       sync_serial_settings __user *line = ifs->ifs_ifsu.sync;
        struct slgt_info *info = dev_to_port(dev);
        unsigned int flags;
 
@@ -1538,17 +1538,14 @@ static int hdlcdev_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
        if (info->port.count)
                return -EBUSY;
 
-       if (cmd != SIOCWANDEV)
-               return hdlc_ioctl(dev, ifr, cmd);
-
        memset(&new_line, 0, sizeof(new_line));
 
-       switch(ifr->ifr_settings.type) {
+       switch (ifs->type) {
        case IF_GET_IFACE: /* return current sync_serial_settings */
 
-               ifr->ifr_settings.type = IF_IFACE_SYNC_SERIAL;
-               if (ifr->ifr_settings.size < size) {
-                       ifr->ifr_settings.size = size; /* data size wanted */
+               ifs->type = IF_IFACE_SYNC_SERIAL;
+               if (ifs->size < size) {
+                       ifs->size = size; /* data size wanted */
                        return -ENOBUFS;
                }
 
@@ -1615,7 +1612,7 @@ static int hdlcdev_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
                return 0;
 
        default:
-               return hdlc_ioctl(dev, ifr, cmd);
+               return hdlc_ioctl(dev, ifs);
        }
 }
 
@@ -1688,7 +1685,7 @@ static const struct net_device_ops hdlcdev_ops = {
        .ndo_open       = hdlcdev_open,
        .ndo_stop       = hdlcdev_close,
        .ndo_start_xmit = hdlc_start_xmit,
-       .ndo_do_ioctl   = hdlcdev_ioctl,
+       .ndo_siocwandev = hdlcdev_ioctl,
        .ndo_tx_timeout = hdlcdev_tx_timeout,
 };
 
@@ -3650,7 +3647,7 @@ static void slgt_cleanup(void)
                for (info=slgt_device_list ; info != NULL ; info=info->next_device)
                        tty_unregister_device(serial_driver, info->line);
                tty_unregister_driver(serial_driver);
-               put_tty_driver(serial_driver);
+               tty_driver_kref_put(serial_driver);
        }
 
        /* reset devices */
@@ -3689,10 +3686,11 @@ static int __init slgt_init(void)
 
        printk(KERN_INFO "%s\n", driver_name);
 
-       serial_driver = alloc_tty_driver(MAX_DEVICES);
-       if (!serial_driver) {
+       serial_driver = tty_alloc_driver(MAX_DEVICES, TTY_DRIVER_REAL_RAW |
+                       TTY_DRIVER_DYNAMIC_DEV);
+       if (IS_ERR(serial_driver)) {
                printk("%s can't allocate tty driver\n", driver_name);
-               return -ENOMEM;
+               return PTR_ERR(serial_driver);
        }
 
        /* Initialize the tty_driver structure */
@@ -3708,11 +3706,10 @@ static int __init slgt_init(void)
                B9600 | CS8 | CREAD | HUPCL | CLOCAL;
        serial_driver->init_termios.c_ispeed = 9600;
        serial_driver->init_termios.c_ospeed = 9600;
-       serial_driver->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV;
        tty_set_operations(serial_driver, &ops);
        if ((rc = tty_register_driver(serial_driver)) < 0) {
                DBGERR(("%s can't register serial driver\n", driver_name));
-               put_tty_driver(serial_driver);
+               tty_driver_kref_put(serial_driver);
                serial_driver = NULL;
                goto error;
        }