diff options
Diffstat (limited to 'drivers/usb/host/xhci-mem.c')
-rw-r--r-- | drivers/usb/host/xhci-mem.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c index 6072f1166de9..b0d789e31f96 100644 --- a/drivers/usb/host/xhci-mem.c +++ b/drivers/usb/host/xhci-mem.c | |||
@@ -1329,7 +1329,7 @@ static u32 xhci_get_endpoint_type(struct usb_device *udev, | |||
1329 | else | 1329 | else |
1330 | type = EP_TYPE(INT_OUT_EP); | 1330 | type = EP_TYPE(INT_OUT_EP); |
1331 | } else { | 1331 | } else { |
1332 | BUG(); | 1332 | type = 0; |
1333 | } | 1333 | } |
1334 | return type; | 1334 | return type; |
1335 | } | 1335 | } |
@@ -1375,10 +1375,16 @@ int xhci_endpoint_init(struct xhci_hcd *xhci, | |||
1375 | unsigned int max_burst; | 1375 | unsigned int max_burst; |
1376 | enum xhci_ring_type type; | 1376 | enum xhci_ring_type type; |
1377 | u32 max_esit_payload; | 1377 | u32 max_esit_payload; |
1378 | u32 endpoint_type; | ||
1378 | 1379 | ||
1379 | ep_index = xhci_get_endpoint_index(&ep->desc); | 1380 | ep_index = xhci_get_endpoint_index(&ep->desc); |
1380 | ep_ctx = xhci_get_ep_ctx(xhci, virt_dev->in_ctx, ep_index); | 1381 | ep_ctx = xhci_get_ep_ctx(xhci, virt_dev->in_ctx, ep_index); |
1381 | 1382 | ||
1383 | endpoint_type = xhci_get_endpoint_type(udev, ep); | ||
1384 | if (!endpoint_type) | ||
1385 | return -EINVAL; | ||
1386 | ep_ctx->ep_info2 = cpu_to_le32(endpoint_type); | ||
1387 | |||
1382 | type = usb_endpoint_type(&ep->desc); | 1388 | type = usb_endpoint_type(&ep->desc); |
1383 | /* Set up the endpoint ring */ | 1389 | /* Set up the endpoint ring */ |
1384 | virt_dev->eps[ep_index].new_ring = | 1390 | virt_dev->eps[ep_index].new_ring = |
@@ -1407,11 +1413,9 @@ int xhci_endpoint_init(struct xhci_hcd *xhci, | |||
1407 | * CErr shall be set to 0 for Isoch endpoints. | 1413 | * CErr shall be set to 0 for Isoch endpoints. |
1408 | */ | 1414 | */ |
1409 | if (!usb_endpoint_xfer_isoc(&ep->desc)) | 1415 | if (!usb_endpoint_xfer_isoc(&ep->desc)) |
1410 | ep_ctx->ep_info2 = cpu_to_le32(ERROR_COUNT(3)); | 1416 | ep_ctx->ep_info2 |= cpu_to_le32(ERROR_COUNT(3)); |
1411 | else | 1417 | else |
1412 | ep_ctx->ep_info2 = cpu_to_le32(ERROR_COUNT(0)); | 1418 | ep_ctx->ep_info2 |= cpu_to_le32(ERROR_COUNT(0)); |
1413 | |||
1414 | ep_ctx->ep_info2 |= cpu_to_le32(xhci_get_endpoint_type(udev, ep)); | ||
1415 | 1419 | ||
1416 | /* Set the max packet size and max burst */ | 1420 | /* Set the max packet size and max burst */ |
1417 | max_packet = GET_MAX_PACKET(usb_endpoint_maxp(&ep->desc)); | 1421 | max_packet = GET_MAX_PACKET(usb_endpoint_maxp(&ep->desc)); |