]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
USB: serial: mos7840: clean up endpoint sanity check
authorJohan Hovold <johan@kernel.org>
Thu, 16 Mar 2017 16:13:47 +0000 (17:13 +0100)
committerJohan Hovold <johan@kernel.org>
Tue, 28 Mar 2017 09:00:12 +0000 (11:00 +0200)
Clean up the endpoint sanity check by letting core verify the single
interrupt endpoint, and verifying the bulk endpoints in calc_num_ports
after having determined the number of ports.

Note that the static type num_ports field was neither correct or used
(since calc_num_ports never returns zero).

Signed-off-by: Johan Hovold <johan@kernel.org>
drivers/usb/serial/mos7840.c

index 326d6c5055ef4c2a8cde9c8f2b85f04b425518bb..770b3a47023211f4436e5bd41f718a7324fda589 100644 (file)
@@ -2108,23 +2108,23 @@ static int mos7840_calc_num_ports(struct usb_serial *serial,
                                        struct usb_serial_endpoints *epds)
 {
        int device_type = (unsigned long)usb_get_serial_data(serial);
-       int mos7840_num_ports;
+       int num_ports;
 
-       mos7840_num_ports = (device_type >> 4) & 0x000F;
+       num_ports = (device_type >> 4) & 0x000F;
 
-       return mos7840_num_ports;
-}
+       /*
+        * num_ports is currently never zero as device_type is one of
+        * MOSCHIP_DEVICE_ID_78{1,2,4}0.
+        */
+       if (num_ports == 0)
+               return -ENODEV;
 
-static int mos7840_attach(struct usb_serial *serial)
-{
-       if (serial->num_bulk_in < serial->num_ports ||
-                       serial->num_bulk_out < serial->num_ports ||
-                       serial->num_interrupt_in < 1) {
+       if (epds->num_bulk_in < num_ports || epds->num_bulk_out < num_ports) {
                dev_err(&serial->interface->dev, "missing endpoints\n");
                return -ENODEV;
        }
 
-       return 0;
+       return num_ports;
 }
 
 static int mos7840_port_probe(struct usb_serial_port *port)
@@ -2385,7 +2385,7 @@ static struct usb_serial_driver moschip7840_4port_device = {
                   },
        .description = DRIVER_DESC,
        .id_table = id_table,
-       .num_ports = 4,
+       .num_interrupt_in = 1,
        .open = mos7840_open,
        .close = mos7840_close,
        .write = mos7840_write,
@@ -2402,7 +2402,6 @@ static struct usb_serial_driver moschip7840_4port_device = {
        .tiocmset = mos7840_tiocmset,
        .tiocmiwait = usb_serial_generic_tiocmiwait,
        .get_icount = usb_serial_generic_get_icount,
-       .attach = mos7840_attach,
        .port_probe = mos7840_port_probe,
        .port_remove = mos7840_port_remove,
        .read_bulk_callback = mos7840_bulk_in_callback,