diff options
author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-09-07 11:19:03 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-09-07 11:19:03 -0400 |
commit | 23649aa6f116f71984e0f72921c229f101bb327e (patch) | |
tree | ddf7976de1b7ad1ee2bb2278ceb35d9186820adf /drivers/usb | |
parent | 7f7cd3cac90509cfa9d2ff36fabc59fb9031bfeb (diff) | |
parent | f4a53c55117b82e895ec98b1765c9d66940377fc (diff) |
Merge tag 'fixes-for-v3.6-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb into work-linus
usb: fixes for v3.6-rc4
Here's a rather big set of fixes for v3.6-rc4.
There are some fixes for bugs which have been pending for a long
time and only now were uncovered, like the musb and dwc3 patches.
We have some remaining fixes for the ep->desc patch series from
Ido, a fix for renesas DMA usage, IRQ check on musb's DMA and
an oops fix on musb Host implementation.
All patches have been pending on linux-usb for a long time and
shouldn't cause any further regressions.
Diffstat (limited to 'drivers/usb')
-rw-r--r-- | drivers/usb/dwc3/core.c | 9 | ||||
-rw-r--r-- | drivers/usb/dwc3/ep0.c | 1 | ||||
-rw-r--r-- | drivers/usb/dwc3/gadget.c | 19 | ||||
-rw-r--r-- | drivers/usb/gadget/at91_udc.c | 6 | ||||
-rw-r--r-- | drivers/usb/gadget/dummy_hcd.c | 41 | ||||
-rw-r--r-- | drivers/usb/gadget/f_fs.c | 4 | ||||
-rw-r--r-- | drivers/usb/gadget/s3c-hsotg.c | 3 | ||||
-rw-r--r-- | drivers/usb/gadget/u_serial.c | 4 | ||||
-rw-r--r-- | drivers/usb/musb/musb_host.c | 2 | ||||
-rw-r--r-- | drivers/usb/musb/musbhsdma.c | 2 | ||||
-rw-r--r-- | drivers/usb/musb/tusb6010.c | 2 | ||||
-rw-r--r-- | drivers/usb/renesas_usbhs/fifo.c | 4 |
12 files changed, 78 insertions, 19 deletions
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index c34452a7304f..a68ff53124dc 100644 --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c | |||
@@ -436,16 +436,21 @@ static int __devinit dwc3_probe(struct platform_device *pdev) | |||
436 | dev_err(dev, "missing IRQ\n"); | 436 | dev_err(dev, "missing IRQ\n"); |
437 | return -ENODEV; | 437 | return -ENODEV; |
438 | } | 438 | } |
439 | dwc->xhci_resources[1] = *res; | 439 | dwc->xhci_resources[1].start = res->start; |
440 | dwc->xhci_resources[1].end = res->end; | ||
441 | dwc->xhci_resources[1].flags = res->flags; | ||
442 | dwc->xhci_resources[1].name = res->name; | ||
440 | 443 | ||
441 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 444 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
442 | if (!res) { | 445 | if (!res) { |
443 | dev_err(dev, "missing memory resource\n"); | 446 | dev_err(dev, "missing memory resource\n"); |
444 | return -ENODEV; | 447 | return -ENODEV; |
445 | } | 448 | } |
446 | dwc->xhci_resources[0] = *res; | 449 | dwc->xhci_resources[0].start = res->start; |
447 | dwc->xhci_resources[0].end = dwc->xhci_resources[0].start + | 450 | dwc->xhci_resources[0].end = dwc->xhci_resources[0].start + |
448 | DWC3_XHCI_REGS_END; | 451 | DWC3_XHCI_REGS_END; |
452 | dwc->xhci_resources[0].flags = res->flags; | ||
453 | dwc->xhci_resources[0].name = res->name; | ||
449 | 454 | ||
450 | /* | 455 | /* |
451 | * Request memory region but exclude xHCI regs, | 456 | * Request memory region but exclude xHCI regs, |
diff --git a/drivers/usb/dwc3/ep0.c b/drivers/usb/dwc3/ep0.c index 9b94886b66e5..e4d5ca86b9da 100644 --- a/drivers/usb/dwc3/ep0.c +++ b/drivers/usb/dwc3/ep0.c | |||
@@ -720,7 +720,6 @@ static void dwc3_ep0_complete_data(struct dwc3 *dwc, | |||
720 | transferred = min_t(u32, ur->length, | 720 | transferred = min_t(u32, ur->length, |
721 | transfer_size - length); | 721 | transfer_size - length); |
722 | memcpy(ur->buf, dwc->ep0_bounce, transferred); | 722 | memcpy(ur->buf, dwc->ep0_bounce, transferred); |
723 | dwc->ep0_bounced = false; | ||
724 | } else { | 723 | } else { |
725 | transferred = ur->length - length; | 724 | transferred = ur->length - length; |
726 | } | 725 | } |
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index 58fdfad96b4d..c2813c2b005a 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c | |||
@@ -263,8 +263,11 @@ void dwc3_gadget_giveback(struct dwc3_ep *dep, struct dwc3_request *req, | |||
263 | if (req->request.status == -EINPROGRESS) | 263 | if (req->request.status == -EINPROGRESS) |
264 | req->request.status = status; | 264 | req->request.status = status; |
265 | 265 | ||
266 | usb_gadget_unmap_request(&dwc->gadget, &req->request, | 266 | if (dwc->ep0_bounced && dep->number == 0) |
267 | req->direction); | 267 | dwc->ep0_bounced = false; |
268 | else | ||
269 | usb_gadget_unmap_request(&dwc->gadget, &req->request, | ||
270 | req->direction); | ||
268 | 271 | ||
269 | dev_dbg(dwc->dev, "request %p from %s completed %d/%d ===> %d\n", | 272 | dev_dbg(dwc->dev, "request %p from %s completed %d/%d ===> %d\n", |
270 | req, dep->name, req->request.actual, | 273 | req, dep->name, req->request.actual, |
@@ -1026,6 +1029,7 @@ static void __dwc3_gadget_start_isoc(struct dwc3 *dwc, | |||
1026 | if (list_empty(&dep->request_list)) { | 1029 | if (list_empty(&dep->request_list)) { |
1027 | dev_vdbg(dwc->dev, "ISOC ep %s run out for requests.\n", | 1030 | dev_vdbg(dwc->dev, "ISOC ep %s run out for requests.\n", |
1028 | dep->name); | 1031 | dep->name); |
1032 | dep->flags |= DWC3_EP_PENDING_REQUEST; | ||
1029 | return; | 1033 | return; |
1030 | } | 1034 | } |
1031 | 1035 | ||
@@ -1089,6 +1093,17 @@ static int __dwc3_gadget_ep_queue(struct dwc3_ep *dep, struct dwc3_request *req) | |||
1089 | if (dep->flags & DWC3_EP_PENDING_REQUEST) { | 1093 | if (dep->flags & DWC3_EP_PENDING_REQUEST) { |
1090 | int ret; | 1094 | int ret; |
1091 | 1095 | ||
1096 | /* | ||
1097 | * If xfernotready is already elapsed and it is a case | ||
1098 | * of isoc transfer, then issue END TRANSFER, so that | ||
1099 | * you can receive xfernotready again and can have | ||
1100 | * notion of current microframe. | ||
1101 | */ | ||
1102 | if (usb_endpoint_xfer_isoc(dep->endpoint.desc)) { | ||
1103 | dwc3_stop_active_transfer(dwc, dep->number); | ||
1104 | return 0; | ||
1105 | } | ||
1106 | |||
1092 | ret = __dwc3_gadget_kick_transfer(dep, 0, true); | 1107 | ret = __dwc3_gadget_kick_transfer(dep, 0, true); |
1093 | if (ret && ret != -EBUSY) { | 1108 | if (ret && ret != -EBUSY) { |
1094 | struct dwc3 *dwc = dep->dwc; | 1109 | struct dwc3 *dwc = dep->dwc; |
diff --git a/drivers/usb/gadget/at91_udc.c b/drivers/usb/gadget/at91_udc.c index c9e66dfb02e6..1e35963bd4ed 100644 --- a/drivers/usb/gadget/at91_udc.c +++ b/drivers/usb/gadget/at91_udc.c | |||
@@ -475,8 +475,7 @@ static int at91_ep_enable(struct usb_ep *_ep, | |||
475 | unsigned long flags; | 475 | unsigned long flags; |
476 | 476 | ||
477 | if (!_ep || !ep | 477 | if (!_ep || !ep |
478 | || !desc || ep->ep.desc | 478 | || !desc || _ep->name == ep0name |
479 | || _ep->name == ep0name | ||
480 | || desc->bDescriptorType != USB_DT_ENDPOINT | 479 | || desc->bDescriptorType != USB_DT_ENDPOINT |
481 | || (maxpacket = usb_endpoint_maxp(desc)) == 0 | 480 | || (maxpacket = usb_endpoint_maxp(desc)) == 0 |
482 | || maxpacket > ep->maxpacket) { | 481 | || maxpacket > ep->maxpacket) { |
@@ -530,7 +529,6 @@ ok: | |||
530 | tmp |= AT91_UDP_EPEDS; | 529 | tmp |= AT91_UDP_EPEDS; |
531 | __raw_writel(tmp, ep->creg); | 530 | __raw_writel(tmp, ep->creg); |
532 | 531 | ||
533 | ep->ep.desc = desc; | ||
534 | ep->ep.maxpacket = maxpacket; | 532 | ep->ep.maxpacket = maxpacket; |
535 | 533 | ||
536 | /* | 534 | /* |
@@ -1635,7 +1633,6 @@ static int at91_start(struct usb_gadget *gadget, | |||
1635 | udc->driver = driver; | 1633 | udc->driver = driver; |
1636 | udc->gadget.dev.driver = &driver->driver; | 1634 | udc->gadget.dev.driver = &driver->driver; |
1637 | udc->gadget.dev.of_node = udc->pdev->dev.of_node; | 1635 | udc->gadget.dev.of_node = udc->pdev->dev.of_node; |
1638 | dev_set_drvdata(&udc->gadget.dev, &driver->driver); | ||
1639 | udc->enabled = 1; | 1636 | udc->enabled = 1; |
1640 | udc->selfpowered = 1; | 1637 | udc->selfpowered = 1; |
1641 | 1638 | ||
@@ -1656,7 +1653,6 @@ static int at91_stop(struct usb_gadget *gadget, | |||
1656 | spin_unlock_irqrestore(&udc->lock, flags); | 1653 | spin_unlock_irqrestore(&udc->lock, flags); |
1657 | 1654 | ||
1658 | udc->gadget.dev.driver = NULL; | 1655 | udc->gadget.dev.driver = NULL; |
1659 | dev_set_drvdata(&udc->gadget.dev, NULL); | ||
1660 | udc->driver = NULL; | 1656 | udc->driver = NULL; |
1661 | 1657 | ||
1662 | DBG("unbound from %s\n", driver->driver.name); | 1658 | DBG("unbound from %s\n", driver->driver.name); |
diff --git a/drivers/usb/gadget/dummy_hcd.c b/drivers/usb/gadget/dummy_hcd.c index b799106027ad..afdbb1cbf5d9 100644 --- a/drivers/usb/gadget/dummy_hcd.c +++ b/drivers/usb/gadget/dummy_hcd.c | |||
@@ -1916,6 +1916,27 @@ done: | |||
1916 | return retval; | 1916 | return retval; |
1917 | } | 1917 | } |
1918 | 1918 | ||
1919 | /* usb 3.0 root hub device descriptor */ | ||
1920 | struct { | ||
1921 | struct usb_bos_descriptor bos; | ||
1922 | struct usb_ss_cap_descriptor ss_cap; | ||
1923 | } __packed usb3_bos_desc = { | ||
1924 | |||
1925 | .bos = { | ||
1926 | .bLength = USB_DT_BOS_SIZE, | ||
1927 | .bDescriptorType = USB_DT_BOS, | ||
1928 | .wTotalLength = cpu_to_le16(sizeof(usb3_bos_desc)), | ||
1929 | .bNumDeviceCaps = 1, | ||
1930 | }, | ||
1931 | .ss_cap = { | ||
1932 | .bLength = USB_DT_USB_SS_CAP_SIZE, | ||
1933 | .bDescriptorType = USB_DT_DEVICE_CAPABILITY, | ||
1934 | .bDevCapabilityType = USB_SS_CAP_TYPE, | ||
1935 | .wSpeedSupported = cpu_to_le16(USB_5GBPS_OPERATION), | ||
1936 | .bFunctionalitySupport = ilog2(USB_5GBPS_OPERATION), | ||
1937 | }, | ||
1938 | }; | ||
1939 | |||
1919 | static inline void | 1940 | static inline void |
1920 | ss_hub_descriptor(struct usb_hub_descriptor *desc) | 1941 | ss_hub_descriptor(struct usb_hub_descriptor *desc) |
1921 | { | 1942 | { |
@@ -2006,6 +2027,18 @@ static int dummy_hub_control( | |||
2006 | else | 2027 | else |
2007 | hub_descriptor((struct usb_hub_descriptor *) buf); | 2028 | hub_descriptor((struct usb_hub_descriptor *) buf); |
2008 | break; | 2029 | break; |
2030 | |||
2031 | case DeviceRequest | USB_REQ_GET_DESCRIPTOR: | ||
2032 | if (hcd->speed != HCD_USB3) | ||
2033 | goto error; | ||
2034 | |||
2035 | if ((wValue >> 8) != USB_DT_BOS) | ||
2036 | goto error; | ||
2037 | |||
2038 | memcpy(buf, &usb3_bos_desc, sizeof(usb3_bos_desc)); | ||
2039 | retval = sizeof(usb3_bos_desc); | ||
2040 | break; | ||
2041 | |||
2009 | case GetHubStatus: | 2042 | case GetHubStatus: |
2010 | *(__le32 *) buf = cpu_to_le32(0); | 2043 | *(__le32 *) buf = cpu_to_le32(0); |
2011 | break; | 2044 | break; |
@@ -2503,10 +2536,8 @@ static int dummy_hcd_probe(struct platform_device *pdev) | |||
2503 | hs_hcd->has_tt = 1; | 2536 | hs_hcd->has_tt = 1; |
2504 | 2537 | ||
2505 | retval = usb_add_hcd(hs_hcd, 0, 0); | 2538 | retval = usb_add_hcd(hs_hcd, 0, 0); |
2506 | if (retval != 0) { | 2539 | if (retval) |
2507 | usb_put_hcd(hs_hcd); | 2540 | goto put_usb2_hcd; |
2508 | return retval; | ||
2509 | } | ||
2510 | 2541 | ||
2511 | if (mod_data.is_super_speed) { | 2542 | if (mod_data.is_super_speed) { |
2512 | ss_hcd = usb_create_shared_hcd(&dummy_hcd, &pdev->dev, | 2543 | ss_hcd = usb_create_shared_hcd(&dummy_hcd, &pdev->dev, |
@@ -2525,6 +2556,8 @@ static int dummy_hcd_probe(struct platform_device *pdev) | |||
2525 | put_usb3_hcd: | 2556 | put_usb3_hcd: |
2526 | usb_put_hcd(ss_hcd); | 2557 | usb_put_hcd(ss_hcd); |
2527 | dealloc_usb2_hcd: | 2558 | dealloc_usb2_hcd: |
2559 | usb_remove_hcd(hs_hcd); | ||
2560 | put_usb2_hcd: | ||
2528 | usb_put_hcd(hs_hcd); | 2561 | usb_put_hcd(hs_hcd); |
2529 | the_controller.hs_hcd = the_controller.ss_hcd = NULL; | 2562 | the_controller.hs_hcd = the_controller.ss_hcd = NULL; |
2530 | return retval; | 2563 | return retval; |
diff --git a/drivers/usb/gadget/f_fs.c b/drivers/usb/gadget/f_fs.c index 8adc79d1b402..829aba75a6df 100644 --- a/drivers/usb/gadget/f_fs.c +++ b/drivers/usb/gadget/f_fs.c | |||
@@ -34,11 +34,15 @@ | |||
34 | /* Debugging ****************************************************************/ | 34 | /* Debugging ****************************************************************/ |
35 | 35 | ||
36 | #ifdef VERBOSE_DEBUG | 36 | #ifdef VERBOSE_DEBUG |
37 | #ifndef pr_vdebug | ||
37 | # define pr_vdebug pr_debug | 38 | # define pr_vdebug pr_debug |
39 | #endif /* pr_vdebug */ | ||
38 | # define ffs_dump_mem(prefix, ptr, len) \ | 40 | # define ffs_dump_mem(prefix, ptr, len) \ |
39 | print_hex_dump_bytes(pr_fmt(prefix ": "), DUMP_PREFIX_NONE, ptr, len) | 41 | print_hex_dump_bytes(pr_fmt(prefix ": "), DUMP_PREFIX_NONE, ptr, len) |
40 | #else | 42 | #else |
43 | #ifndef pr_vdebug | ||
41 | # define pr_vdebug(...) do { } while (0) | 44 | # define pr_vdebug(...) do { } while (0) |
45 | #endif /* pr_vdebug */ | ||
42 | # define ffs_dump_mem(prefix, ptr, len) do { } while (0) | 46 | # define ffs_dump_mem(prefix, ptr, len) do { } while (0) |
43 | #endif /* VERBOSE_DEBUG */ | 47 | #endif /* VERBOSE_DEBUG */ |
44 | 48 | ||
diff --git a/drivers/usb/gadget/s3c-hsotg.c b/drivers/usb/gadget/s3c-hsotg.c index b13e0bb5f5b8..0bb617e1dda2 100644 --- a/drivers/usb/gadget/s3c-hsotg.c +++ b/drivers/usb/gadget/s3c-hsotg.c | |||
@@ -3599,6 +3599,7 @@ static int __devinit s3c_hsotg_probe(struct platform_device *pdev) | |||
3599 | 3599 | ||
3600 | if (hsotg->num_of_eps == 0) { | 3600 | if (hsotg->num_of_eps == 0) { |
3601 | dev_err(dev, "wrong number of EPs (zero)\n"); | 3601 | dev_err(dev, "wrong number of EPs (zero)\n"); |
3602 | ret = -EINVAL; | ||
3602 | goto err_supplies; | 3603 | goto err_supplies; |
3603 | } | 3604 | } |
3604 | 3605 | ||
@@ -3606,6 +3607,7 @@ static int __devinit s3c_hsotg_probe(struct platform_device *pdev) | |||
3606 | GFP_KERNEL); | 3607 | GFP_KERNEL); |
3607 | if (!eps) { | 3608 | if (!eps) { |
3608 | dev_err(dev, "cannot get memory\n"); | 3609 | dev_err(dev, "cannot get memory\n"); |
3610 | ret = -ENOMEM; | ||
3609 | goto err_supplies; | 3611 | goto err_supplies; |
3610 | } | 3612 | } |
3611 | 3613 | ||
@@ -3622,6 +3624,7 @@ static int __devinit s3c_hsotg_probe(struct platform_device *pdev) | |||
3622 | GFP_KERNEL); | 3624 | GFP_KERNEL); |
3623 | if (!hsotg->ctrl_req) { | 3625 | if (!hsotg->ctrl_req) { |
3624 | dev_err(dev, "failed to allocate ctrl req\n"); | 3626 | dev_err(dev, "failed to allocate ctrl req\n"); |
3627 | ret = -ENOMEM; | ||
3625 | goto err_ep_mem; | 3628 | goto err_ep_mem; |
3626 | } | 3629 | } |
3627 | 3630 | ||
diff --git a/drivers/usb/gadget/u_serial.c b/drivers/usb/gadget/u_serial.c index 5b3f5fffea92..da6d479ff9a6 100644 --- a/drivers/usb/gadget/u_serial.c +++ b/drivers/usb/gadget/u_serial.c | |||
@@ -132,11 +132,15 @@ static unsigned n_ports; | |||
132 | 132 | ||
133 | 133 | ||
134 | #ifdef VERBOSE_DEBUG | 134 | #ifdef VERBOSE_DEBUG |
135 | #ifndef pr_vdebug | ||
135 | #define pr_vdebug(fmt, arg...) \ | 136 | #define pr_vdebug(fmt, arg...) \ |
136 | pr_debug(fmt, ##arg) | 137 | pr_debug(fmt, ##arg) |
138 | #endif /* pr_vdebug */ | ||
137 | #else | 139 | #else |
140 | #ifndef pr_vdebig | ||
138 | #define pr_vdebug(fmt, arg...) \ | 141 | #define pr_vdebug(fmt, arg...) \ |
139 | ({ if (0) pr_debug(fmt, ##arg); }) | 142 | ({ if (0) pr_debug(fmt, ##arg); }) |
143 | #endif /* pr_vdebug */ | ||
140 | #endif | 144 | #endif |
141 | 145 | ||
142 | /*-------------------------------------------------------------------------*/ | 146 | /*-------------------------------------------------------------------------*/ |
diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c index 4bb717d0bd41..1ae378d5fc6f 100644 --- a/drivers/usb/musb/musb_host.c +++ b/drivers/usb/musb/musb_host.c | |||
@@ -2049,7 +2049,7 @@ static int musb_urb_enqueue( | |||
2049 | * we only have work to do in the former case. | 2049 | * we only have work to do in the former case. |
2050 | */ | 2050 | */ |
2051 | spin_lock_irqsave(&musb->lock, flags); | 2051 | spin_lock_irqsave(&musb->lock, flags); |
2052 | if (hep->hcpriv) { | 2052 | if (hep->hcpriv || !next_urb(qh)) { |
2053 | /* some concurrent activity submitted another urb to hep... | 2053 | /* some concurrent activity submitted another urb to hep... |
2054 | * odd, rare, error prone, but legal. | 2054 | * odd, rare, error prone, but legal. |
2055 | */ | 2055 | */ |
diff --git a/drivers/usb/musb/musbhsdma.c b/drivers/usb/musb/musbhsdma.c index 57a608584e16..c1be687e00ec 100644 --- a/drivers/usb/musb/musbhsdma.c +++ b/drivers/usb/musb/musbhsdma.c | |||
@@ -388,7 +388,7 @@ dma_controller_create(struct musb *musb, void __iomem *base) | |||
388 | struct platform_device *pdev = to_platform_device(dev); | 388 | struct platform_device *pdev = to_platform_device(dev); |
389 | int irq = platform_get_irq_byname(pdev, "dma"); | 389 | int irq = platform_get_irq_byname(pdev, "dma"); |
390 | 390 | ||
391 | if (irq == 0) { | 391 | if (irq <= 0) { |
392 | dev_err(dev, "No DMA interrupt line!\n"); | 392 | dev_err(dev, "No DMA interrupt line!\n"); |
393 | return NULL; | 393 | return NULL; |
394 | } | 394 | } |
diff --git a/drivers/usb/musb/tusb6010.c b/drivers/usb/musb/tusb6010.c index 1a1bd9cf40c5..341625442377 100644 --- a/drivers/usb/musb/tusb6010.c +++ b/drivers/usb/musb/tusb6010.c | |||
@@ -1215,7 +1215,7 @@ static int __devinit tusb_probe(struct platform_device *pdev) | |||
1215 | ret = platform_device_add(musb); | 1215 | ret = platform_device_add(musb); |
1216 | if (ret) { | 1216 | if (ret) { |
1217 | dev_err(&pdev->dev, "failed to register musb device\n"); | 1217 | dev_err(&pdev->dev, "failed to register musb device\n"); |
1218 | goto err1; | 1218 | goto err2; |
1219 | } | 1219 | } |
1220 | 1220 | ||
1221 | return 0; | 1221 | return 0; |
diff --git a/drivers/usb/renesas_usbhs/fifo.c b/drivers/usb/renesas_usbhs/fifo.c index ecd173032fd4..143c4e9e1be4 100644 --- a/drivers/usb/renesas_usbhs/fifo.c +++ b/drivers/usb/renesas_usbhs/fifo.c | |||
@@ -818,7 +818,7 @@ static int usbhsf_dma_prepare_push(struct usbhs_pkt *pkt, int *is_done) | |||
818 | usbhs_pipe_is_dcp(pipe)) | 818 | usbhs_pipe_is_dcp(pipe)) |
819 | goto usbhsf_pio_prepare_push; | 819 | goto usbhsf_pio_prepare_push; |
820 | 820 | ||
821 | if (len % 4) /* 32bit alignment */ | 821 | if (len & 0x7) /* 8byte alignment */ |
822 | goto usbhsf_pio_prepare_push; | 822 | goto usbhsf_pio_prepare_push; |
823 | 823 | ||
824 | if ((uintptr_t)(pkt->buf + pkt->actual) & 0x7) /* 8byte alignment */ | 824 | if ((uintptr_t)(pkt->buf + pkt->actual) & 0x7) /* 8byte alignment */ |
@@ -905,7 +905,7 @@ static int usbhsf_dma_try_pop(struct usbhs_pkt *pkt, int *is_done) | |||
905 | /* use PIO if packet is less than pio_dma_border */ | 905 | /* use PIO if packet is less than pio_dma_border */ |
906 | len = usbhsf_fifo_rcv_len(priv, fifo); | 906 | len = usbhsf_fifo_rcv_len(priv, fifo); |
907 | len = min(pkt->length - pkt->actual, len); | 907 | len = min(pkt->length - pkt->actual, len); |
908 | if (len % 4) /* 32bit alignment */ | 908 | if (len & 0x7) /* 8byte alignment */ |
909 | goto usbhsf_pio_prepare_pop_unselect; | 909 | goto usbhsf_pio_prepare_pop_unselect; |
910 | 910 | ||
911 | if (len < usbhs_get_dparam(priv, pio_dma_border)) | 911 | if (len < usbhs_get_dparam(priv, pio_dma_border)) |