|
@@ -1139,43 +1139,21 @@ static void f81534_close(struct usb_serial_port *port)
|
|
|
mutex_unlock(&serial_priv->urb_mutex);
|
|
|
}
|
|
|
|
|
|
-static int f81534_get_serial_info(struct usb_serial_port *port,
|
|
|
- struct serial_struct __user *retinfo)
|
|
|
+static int f81534_get_serial_info(struct tty_struct *tty,
|
|
|
+ struct serial_struct *ss)
|
|
|
{
|
|
|
+ struct usb_serial_port *port = tty->driver_data;
|
|
|
struct f81534_port_private *port_priv;
|
|
|
- struct serial_struct tmp;
|
|
|
|
|
|
port_priv = usb_get_serial_port_data(port);
|
|
|
|
|
|
- memset(&tmp, 0, sizeof(tmp));
|
|
|
-
|
|
|
- tmp.type = PORT_16550A;
|
|
|
- tmp.port = port->port_number;
|
|
|
- tmp.line = port->minor;
|
|
|
- tmp.baud_base = port_priv->baud_base;
|
|
|
-
|
|
|
- if (copy_to_user(retinfo, &tmp, sizeof(*retinfo)))
|
|
|
- return -EFAULT;
|
|
|
-
|
|
|
+ ss->type = PORT_16550A;
|
|
|
+ ss->port = port->port_number;
|
|
|
+ ss->line = port->minor;
|
|
|
+ ss->baud_base = port_priv->baud_base;
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-static int f81534_ioctl(struct tty_struct *tty, unsigned int cmd,
|
|
|
- unsigned long arg)
|
|
|
-{
|
|
|
- struct usb_serial_port *port = tty->driver_data;
|
|
|
- struct serial_struct __user *buf = (struct serial_struct __user *)arg;
|
|
|
-
|
|
|
- switch (cmd) {
|
|
|
- case TIOCGSERIAL:
|
|
|
- return f81534_get_serial_info(port, buf);
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- return -ENOIOCTLCMD;
|
|
|
-}
|
|
|
-
|
|
|
static void f81534_process_per_serial_block(struct usb_serial_port *port,
|
|
|
u8 *data)
|
|
|
{
|
|
@@ -1581,7 +1559,7 @@ static struct usb_serial_driver f81534_device = {
|
|
|
.break_ctl = f81534_break_ctl,
|
|
|
.dtr_rts = f81534_dtr_rts,
|
|
|
.process_read_urb = f81534_process_read_urb,
|
|
|
- .ioctl = f81534_ioctl,
|
|
|
+ .get_serial = f81534_get_serial_info,
|
|
|
.tiocmget = f81534_tiocmget,
|
|
|
.tiocmset = f81534_tiocmset,
|
|
|
.write_bulk_callback = f81534_write_usb_callback,
|