USB: f81232: clarify f81232_ioctl() and fix
authorPeter Hung <hpeter@gmail.com>
Tue, 17 Mar 2015 09:48:26 +0000 (17:48 +0800)
committerJohan Hovold <johan@kernel.org>
Fri, 27 Mar 2015 16:29:27 +0000 (17:29 +0100)
We extract TIOCGSERIAL section in f81232_ioctl() to f81232_get_serial_info()
to make it clarify.

Also we fix device type from 16654 to 16550A, and set it's baud_base
to 115200 (1.8432MHz/16).

Signed-off-by: Peter Hung <hpeter+linux_kernel@gmail.com>
Signed-off-by: Johan Hovold <johan@kernel.org>
drivers/usb/serial/f81232.c

index c00ced1ed2811661c945acb18bcd44d0ae8b1dfd..fd4b7cc29c8a6d74648683c2ba4eb7bf741ad695 100644 (file)
@@ -600,24 +600,32 @@ static int f81232_carrier_raised(struct usb_serial_port *port)
        return 0;
 }
 
+static int f81232_get_serial_info(struct usb_serial_port *port,
+               unsigned long arg)
+{
+       struct serial_struct ser;
+
+       memset(&ser, 0, sizeof(ser));
+
+       ser.type = PORT_16550A;
+       ser.line = port->minor;
+       ser.port = port->port_number;
+       ser.baud_base = F81232_MAX_BAUDRATE;
+
+       if (copy_to_user((void __user *)arg, &ser, sizeof(ser)))
+               return -EFAULT;
+
+       return 0;
+}
+
 static int f81232_ioctl(struct tty_struct *tty,
                        unsigned int cmd, unsigned long arg)
 {
-       struct serial_struct ser;
        struct usb_serial_port *port = tty->driver_data;
 
        switch (cmd) {
        case TIOCGSERIAL:
-               memset(&ser, 0, sizeof ser);
-               ser.type = PORT_16654;
-               ser.line = port->minor;
-               ser.port = port->port_number;
-               ser.baud_base = 460800;
-
-               if (copy_to_user((void __user *)arg, &ser, sizeof ser))
-                       return -EFAULT;
-
-               return 0;
+               return f81232_get_serial_info(port, arg);
        default:
                break;
        }