Commit 1d243c2e authored by Tomas Winkler's avatar Tomas Winkler Committed by Greg Kroah-Hartman
Browse files

staging/easycap: probe: simplify the endpoints tests



we are interested only in isochronous in endpoints
so we can simplify the flow

Cc: Mike Thomas <rmthomas@sciolus.org>
Signed-off-by: default avatarTomas Winkler <tomas.winkler@intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 49c30e57
Loading
Loading
Loading
Loading
+119 −144
Original line number Diff line number Diff line
@@ -2988,7 +2988,7 @@ static int easycap_usb_probe(struct usb_interface *intf,
	struct data_urb *pdata_urb;
	size_t wMaxPacketSize;
	u8 bEndpointAddress;
	int isin, i, j, k, m, rc;
	int i, j, k, m, rc;
	u8 bInterfaceNumber;
	u8 bInterfaceClass;
	u8 bInterfaceSubClass;
@@ -3353,30 +3353,20 @@ static int easycap_usb_probe(struct usb_interface *intf,
			wMaxPacketSize = le16_to_cpu(ep->wMaxPacketSize);
			bEndpointAddress = ep->bEndpointAddress;

			if (ep->bEndpointAddress & USB_DIR_IN) {
				JOM(4, "intf[%i]alt[%i]end[%i] is an  IN  endpoint\n",
							bInterfaceNumber, i, j);
				isin = 1;
			} else {
				JOM(4, "intf[%i]alt[%i]end[%i] is an  OUT endpoint\n",
							bInterfaceNumber, i, j);

			if (!usb_endpoint_is_isoc_in(ep)) {
				JOM(4, "intf[%i]alt[%i]end[%i] is a %d endpoint\n",
						bInterfaceNumber,
						i, j, ep->bmAttributes);
				if (usb_endpoint_dir_out(ep)) {
					SAM("ERROR: OUT endpoint unexpected\n");
					SAM("...... continuing\n");
				isin = 0;
				}
			if ((ep->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) ==
						USB_ENDPOINT_XFER_ISOC) {
				JOM(4, "intf[%i]alt[%i]end[%i] is an ISOC endpoint\n",
							bInterfaceNumber, i, j);
				if (isin) {
				continue;
			}
			switch (bInterfaceClass) {
			case USB_CLASS_VIDEO:
			case USB_CLASS_VENDOR_SPEC: {
						if (!peasycap) {
							SAM("MISTAKE: "
								"peasycap is NULL\n");
							return -EFAULT;
						}
				if (ep->wMaxPacketSize) {
					if (8 > isokalt) {
						okalt[isokalt] = i;
@@ -3488,21 +3478,6 @@ static int easycap_usb_probe(struct usb_interface *intf,
			default:
				break;
			}
				}
			} else if ((ep->bmAttributes &
							USB_ENDPOINT_XFERTYPE_MASK) ==
							USB_ENDPOINT_XFER_BULK) {
				JOM(4, "intf[%i]alt[%i]end[%i] is a  BULK endpoint\n",
							bInterfaceNumber, i, j);
			} else if ((ep->bmAttributes &
							USB_ENDPOINT_XFERTYPE_MASK) ==
							USB_ENDPOINT_XFER_INT) {
				JOM(4, "intf[%i]alt[%i]end[%i] is an  INT endpoint\n",
							bInterfaceNumber, i, j);
			} else {
				JOM(4, "intf[%i]alt[%i]end[%i] is a  CTRL endpoint\n",
							bInterfaceNumber, i, j);
			}
			if (0 == ep->wMaxPacketSize) {
				JOM(4, "intf[%i]alt[%i]end[%i] "
							"has zero packet size\n",