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.c22
1 files changed, 20 insertions, 2 deletions
diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
index 335c1ddb260d..d0b782c4523a 100644
--- a/drivers/usb/core/hcd.c
+++ b/drivers/usb/core/hcd.c
@@ -1281,6 +1281,14 @@ void usb_hcd_unmap_urb_setup_for_dma(struct usb_hcd *hcd, struct urb *urb)
1281} 1281}
1282EXPORT_SYMBOL_GPL(usb_hcd_unmap_urb_setup_for_dma); 1282EXPORT_SYMBOL_GPL(usb_hcd_unmap_urb_setup_for_dma);
1283 1283
1284static void unmap_urb_for_dma(struct usb_hcd *hcd, struct urb *urb)
1285{
1286 if (hcd->driver->unmap_urb_for_dma)
1287 hcd->driver->unmap_urb_for_dma(hcd, urb);
1288 else
1289 usb_hcd_unmap_urb_for_dma(hcd, urb);
1290}
1291
1284void usb_hcd_unmap_urb_for_dma(struct usb_hcd *hcd, struct urb *urb) 1292void usb_hcd_unmap_urb_for_dma(struct usb_hcd *hcd, struct urb *urb)
1285{ 1293{
1286 enum dma_data_direction dir; 1294 enum dma_data_direction dir;
@@ -1319,6 +1327,15 @@ EXPORT_SYMBOL_GPL(usb_hcd_unmap_urb_for_dma);
1319static int map_urb_for_dma(struct usb_hcd *hcd, struct urb *urb, 1327static int map_urb_for_dma(struct usb_hcd *hcd, struct urb *urb,
1320 gfp_t mem_flags) 1328 gfp_t mem_flags)
1321{ 1329{
1330 if (hcd->driver->map_urb_for_dma)
1331 return hcd->driver->map_urb_for_dma(hcd, urb, mem_flags);
1332 else
1333 return usb_hcd_map_urb_for_dma(hcd, urb, mem_flags);
1334}
1335
1336int usb_hcd_map_urb_for_dma(struct usb_hcd *hcd, struct urb *urb,
1337 gfp_t mem_flags)
1338{
1322 enum dma_data_direction dir; 1339 enum dma_data_direction dir;
1323 int ret = 0; 1340 int ret = 0;
1324 1341
@@ -1414,6 +1431,7 @@ static int map_urb_for_dma(struct usb_hcd *hcd, struct urb *urb,
1414 } 1431 }
1415 return ret; 1432 return ret;
1416} 1433}
1434EXPORT_SYMBOL_GPL(usb_hcd_map_urb_for_dma);
1417 1435
1418/*-------------------------------------------------------------------------*/ 1436/*-------------------------------------------------------------------------*/
1419 1437
@@ -1451,7 +1469,7 @@ int usb_hcd_submit_urb (struct urb *urb, gfp_t mem_flags)
1451 if (likely(status == 0)) { 1469 if (likely(status == 0)) {
1452 status = hcd->driver->urb_enqueue(hcd, urb, mem_flags); 1470 status = hcd->driver->urb_enqueue(hcd, urb, mem_flags);
1453 if (unlikely(status)) 1471 if (unlikely(status))
1454 usb_hcd_unmap_urb_for_dma(hcd, urb); 1472 unmap_urb_for_dma(hcd, urb);
1455 } 1473 }
1456 } 1474 }
1457 1475
@@ -1557,7 +1575,7 @@ void usb_hcd_giveback_urb(struct usb_hcd *hcd, struct urb *urb, int status)
1557 !status)) 1575 !status))
1558 status = -EREMOTEIO; 1576 status = -EREMOTEIO;
1559 1577
1560 usb_hcd_unmap_urb_for_dma(hcd, urb); 1578 unmap_urb_for_dma(hcd, urb);
1561 usbmon_urb_complete(&hcd->self, urb, status); 1579 usbmon_urb_complete(&hcd->self, urb, status);
1562 usb_unanchor_urb(urb); 1580 usb_unanchor_urb(urb);
1563 1581