diff options
| author | Ingo Molnar <mingo@elte.hu> | 2010-10-13 09:44:24 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2010-10-13 09:44:24 -0400 |
| commit | 3d8a1a6a8af910cc2da566080d111e062a124ba6 (patch) | |
| tree | 0c78b30a5c7aa083e215222989f982313c5141c0 /drivers/usb/atm/cxacru.c | |
| parent | 1b13fe6a6e9986dbc079cbb05090be75edbffa5d (diff) | |
| parent | 5d0d71569e671239ae0d905ced9b65cd843f99ee (diff) | |
Merge branch 'amd-iommu/2.6.37' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu into core/iommu
Diffstat (limited to 'drivers/usb/atm/cxacru.c')
| -rw-r--r-- | drivers/usb/atm/cxacru.c | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/drivers/usb/atm/cxacru.c b/drivers/usb/atm/cxacru.c index 593fc5e2d2e6..5af23cc5ea9f 100644 --- a/drivers/usb/atm/cxacru.c +++ b/drivers/usb/atm/cxacru.c | |||
| @@ -1127,6 +1127,7 @@ static int cxacru_bind(struct usbatm_data *usbatm_instance, | |||
| 1127 | { | 1127 | { |
| 1128 | struct cxacru_data *instance; | 1128 | struct cxacru_data *instance; |
| 1129 | struct usb_device *usb_dev = interface_to_usbdev(intf); | 1129 | struct usb_device *usb_dev = interface_to_usbdev(intf); |
| 1130 | struct usb_host_endpoint *cmd_ep = usb_dev->ep_in[CXACRU_EP_CMD]; | ||
| 1130 | int ret; | 1131 | int ret; |
| 1131 | 1132 | ||
| 1132 | /* instance init */ | 1133 | /* instance init */ |
| @@ -1171,15 +1172,34 @@ static int cxacru_bind(struct usbatm_data *usbatm_instance, | |||
| 1171 | goto fail; | 1172 | goto fail; |
| 1172 | } | 1173 | } |
| 1173 | 1174 | ||
| 1174 | usb_fill_int_urb(instance->rcv_urb, | 1175 | if (!cmd_ep) { |
| 1176 | dbg("cxacru_bind: no command endpoint"); | ||
| 1177 | ret = -ENODEV; | ||
| 1178 | goto fail; | ||
| 1179 | } | ||
| 1180 | |||
| 1181 | if ((cmd_ep->desc.bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) | ||
| 1182 | == USB_ENDPOINT_XFER_INT) { | ||
| 1183 | usb_fill_int_urb(instance->rcv_urb, | ||
| 1175 | usb_dev, usb_rcvintpipe(usb_dev, CXACRU_EP_CMD), | 1184 | usb_dev, usb_rcvintpipe(usb_dev, CXACRU_EP_CMD), |
| 1176 | instance->rcv_buf, PAGE_SIZE, | 1185 | instance->rcv_buf, PAGE_SIZE, |
| 1177 | cxacru_blocking_completion, &instance->rcv_done, 1); | 1186 | cxacru_blocking_completion, &instance->rcv_done, 1); |
| 1178 | 1187 | ||
| 1179 | usb_fill_int_urb(instance->snd_urb, | 1188 | usb_fill_int_urb(instance->snd_urb, |
| 1180 | usb_dev, usb_sndintpipe(usb_dev, CXACRU_EP_CMD), | 1189 | usb_dev, usb_sndintpipe(usb_dev, CXACRU_EP_CMD), |
| 1181 | instance->snd_buf, PAGE_SIZE, | 1190 | instance->snd_buf, PAGE_SIZE, |
| 1182 | cxacru_blocking_completion, &instance->snd_done, 4); | 1191 | cxacru_blocking_completion, &instance->snd_done, 4); |
| 1192 | } else { | ||
| 1193 | usb_fill_bulk_urb(instance->rcv_urb, | ||
| 1194 | usb_dev, usb_rcvbulkpipe(usb_dev, CXACRU_EP_CMD), | ||
| 1195 | instance->rcv_buf, PAGE_SIZE, | ||
| 1196 | cxacru_blocking_completion, &instance->rcv_done); | ||
| 1197 | |||
| 1198 | usb_fill_bulk_urb(instance->snd_urb, | ||
| 1199 | usb_dev, usb_sndbulkpipe(usb_dev, CXACRU_EP_CMD), | ||
| 1200 | instance->snd_buf, PAGE_SIZE, | ||
| 1201 | cxacru_blocking_completion, &instance->snd_done); | ||
| 1202 | } | ||
| 1183 | 1203 | ||
| 1184 | mutex_init(&instance->cm_serialize); | 1204 | mutex_init(&instance->cm_serialize); |
| 1185 | 1205 | ||
