USB: serial: cp210x: add support for Qivicon USB ZigBee dongle
[pandora-kernel.git] / drivers / usb / serial / ti_usb_3410_5052.c
index ad0445a..b82f04c 100644 (file)
@@ -438,6 +438,13 @@ static int ti_startup(struct usb_serial *serial)
                goto free_tdev;
        }
 
+       if (serial->num_bulk_in < serial->num_ports ||
+                       serial->num_bulk_out < serial->num_ports) {
+               dev_err(&serial->interface->dev, "missing endpoints\n");
+               status = -ENODEV;
+               goto free_tdev;
+       }
+
        /* set up port structures */
        for (i = 0; i < serial->num_ports; ++i) {
                tport = kzalloc(sizeof(struct ti_port), GFP_KERNEL);
@@ -1607,13 +1614,10 @@ static int ti_command_out_sync(struct ti_device *tdev, __u8 command,
                (USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_OUT),
                value, moduleid, data, size, 1000);
 
-       if (status == size)
-               status = 0;
-
-       if (status > 0)
-               status = -ECOMM;
+       if (status < 0)
+               return status;
 
-       return status;
+       return 0;
 }
 
 
@@ -1629,8 +1633,7 @@ static int ti_command_in_sync(struct ti_device *tdev, __u8 command,
 
        if (status == size)
                status = 0;
-
-       if (status > 0)
+       else if (status >= 0)
                status = -ECOMM;
 
        return status;