aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/core/hcd.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/core/hcd.c')
-rw-r--r--drivers/usb/core/hcd.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
index 2102c4deec..0cc1420692 100644
--- a/drivers/usb/core/hcd.c
+++ b/drivers/usb/core/hcd.c
@@ -1152,7 +1152,7 @@ doit:
1152 /* lower level hcd code should use *_dma exclusively, 1152 /* lower level hcd code should use *_dma exclusively,
1153 * unless it uses pio or talks to another transport. 1153 * unless it uses pio or talks to another transport.
1154 */ 1154 */
1155 if (hcd->self.controller->dma_mask) { 1155 if (hcd->self.uses_dma) {
1156 if (usb_pipecontrol (urb->pipe) 1156 if (usb_pipecontrol (urb->pipe)
1157 && !(urb->transfer_flags & URB_NO_SETUP_DMA_MAP)) 1157 && !(urb->transfer_flags & URB_NO_SETUP_DMA_MAP))
1158 urb->setup_dma = dma_map_single ( 1158 urb->setup_dma = dma_map_single (
@@ -1585,8 +1585,9 @@ void usb_hcd_giveback_urb (struct usb_hcd *hcd, struct urb *urb, struct pt_regs
1585 at_root_hub = (urb->dev == hcd->self.root_hub); 1585 at_root_hub = (urb->dev == hcd->self.root_hub);
1586 urb_unlink (urb); 1586 urb_unlink (urb);
1587 1587
1588 /* lower level hcd code should use *_dma exclusively */ 1588 /* lower level hcd code should use *_dma exclusively if the
1589 if (hcd->self.controller->dma_mask && !at_root_hub) { 1589 * host controller does DMA */
1590 if (hcd->self.uses_dma && !at_root_hub) {
1590 if (usb_pipecontrol (urb->pipe) 1591 if (usb_pipecontrol (urb->pipe)
1591 && !(urb->transfer_flags & URB_NO_SETUP_DMA_MAP)) 1592 && !(urb->transfer_flags & URB_NO_SETUP_DMA_MAP))
1592 dma_unmap_single (hcd->self.controller, urb->setup_dma, 1593 dma_unmap_single (hcd->self.controller, urb->setup_dma,
@@ -1710,6 +1711,7 @@ struct usb_hcd *usb_create_hcd (const struct hc_driver *driver,
1710 hcd->self.release = &hcd_release; 1711 hcd->self.release = &hcd_release;
1711 hcd->self.controller = dev; 1712 hcd->self.controller = dev;
1712 hcd->self.bus_name = bus_name; 1713 hcd->self.bus_name = bus_name;
1714 hcd->self.uses_dma = (dev->dma_mask != NULL);
1713 1715
1714 init_timer(&hcd->rh_timer); 1716 init_timer(&hcd->rh_timer);
1715 hcd->rh_timer.function = rh_timer_func; 1717 hcd->rh_timer.function = rh_timer_func;