diff options
Diffstat (limited to 'drivers/usb')
| -rw-r--r-- | drivers/usb/atm/cxacru.c | 14 | 
1 files changed, 14 insertions, 0 deletions
| diff --git a/drivers/usb/atm/cxacru.c b/drivers/usb/atm/cxacru.c index 4ce7cba2b48a..8f3b9a0a38e1 100644 --- a/drivers/usb/atm/cxacru.c +++ b/drivers/usb/atm/cxacru.c @@ -1131,6 +1131,7 @@ static int cxacru_bind(struct usbatm_data *usbatm_instance,  	struct cxacru_data *instance;  	struct usb_device *usb_dev = interface_to_usbdev(intf);  	struct usb_host_endpoint *cmd_ep = usb_dev->ep_in[CXACRU_EP_CMD]; +	struct usb_endpoint_descriptor *in, *out;  	int ret;  	/* instance init */ @@ -1177,6 +1178,19 @@ static int cxacru_bind(struct usbatm_data *usbatm_instance,  		goto fail;  	} +	if (usb_endpoint_xfer_int(&cmd_ep->desc)) +		ret = usb_find_common_endpoints(intf->cur_altsetting, +						NULL, NULL, &in, &out); +	else +		ret = usb_find_common_endpoints(intf->cur_altsetting, +						&in, &out, NULL, NULL); + +	if (ret) { +		usb_err(usbatm_instance, "cxacru_bind: interface has incorrect endpoints\n"); +		ret = -ENODEV; +		goto fail; +	} +  	if ((cmd_ep->desc.bmAttributes & USB_ENDPOINT_XFERTYPE_MASK)  			== USB_ENDPOINT_XFER_INT) {  		usb_fill_int_urb(instance->rcv_urb, | 
