* build the table of the endpoints
  * and compute the minimum bandwidth for the image transfer
  */
-static int build_ep_tb(struct gspca_dev *gspca_dev,
+static int build_isoc_ep_tb(struct gspca_dev *gspca_dev,
                        struct usb_interface *intf,
-                       int xfer,
                        struct ep_tb_s *ep_tb)
 {
        struct usb_host_endpoint *ep;
                ep_tb->bandwidth = 2000 * 2000 * 120;
                found = 0;
                for (j = 0; j < nbalt; j++) {
-                       ep = alt_xfer(&intf->altsetting[j], xfer);
+                       ep = alt_xfer(&intf->altsetting[j],
+                                     USB_ENDPOINT_XFER_ISOC);
                        if (ep == NULL)
                                continue;
                        psize = le16_to_cpu(ep->desc.wMaxPacketSize);
-                       if (!gspca_dev->cam.bulk)               /* isoc */
-                               psize = (psize & 0x07ff) *
-                                               (1 + ((psize >> 11) & 3));
+                       psize = (psize & 0x07ff) * (1 + ((psize >> 11) & 3));
                        bandwidth = psize * ep->desc.bInterval * 1000;
                        if (gspca_dev->dev->speed == USB_SPEED_HIGH
                         || gspca_dev->dev->speed == USB_SPEED_SUPER)
        xfer = gspca_dev->cam.bulk ? USB_ENDPOINT_XFER_BULK
                                   : USB_ENDPOINT_XFER_ISOC;
 
-       /* if the subdriver forced an altsetting, get the endpoint */
+       /* if bulk or the subdriver forced an altsetting, get the endpoint */
        if (gspca_dev->alt != 0) {
                gspca_dev->alt--;       /* (previous version compatibility) */
                ep = alt_xfer(&intf->altsetting[gspca_dev->alt], xfer);
 
        /* else, compute the minimum bandwidth
         * and build the endpoint table */
-               alt_idx = build_ep_tb(gspca_dev, intf, xfer, ep_tb);
+               alt_idx = build_isoc_ep_tb(gspca_dev, intf, ep_tb);
                if (alt_idx <= 0) {
                        pr_err("no transfer endpoint found\n");
                        ret = -EIO;