aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/core/usb.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/core/usb.c')
-rw-r--r--drivers/usb/core/usb.c18
1 files changed, 3 insertions, 15 deletions
diff --git a/drivers/usb/core/usb.c b/drivers/usb/core/usb.c
index 1088abb4416c..097172e2ba06 100644
--- a/drivers/usb/core/usb.c
+++ b/drivers/usb/core/usb.c
@@ -775,7 +775,7 @@ EXPORT_SYMBOL_GPL(usb_free_coherent);
775 * @urb: urb whose transfer_buffer/setup_packet will be mapped 775 * @urb: urb whose transfer_buffer/setup_packet will be mapped
776 * 776 *
777 * Return value is either null (indicating no buffer could be mapped), or 777 * Return value is either null (indicating no buffer could be mapped), or
778 * the parameter. URB_NO_TRANSFER_DMA_MAP and URB_NO_SETUP_DMA_MAP are 778 * the parameter. URB_NO_TRANSFER_DMA_MAP is
779 * added to urb->transfer_flags if the operation succeeds. If the device 779 * added to urb->transfer_flags if the operation succeeds. If the device
780 * is connected to this system through a non-DMA controller, this operation 780 * is connected to this system through a non-DMA controller, this operation
781 * always succeeds. 781 * always succeeds.
@@ -803,17 +803,11 @@ struct urb *usb_buffer_map(struct urb *urb)
803 urb->transfer_buffer, urb->transfer_buffer_length, 803 urb->transfer_buffer, urb->transfer_buffer_length,
804 usb_pipein(urb->pipe) 804 usb_pipein(urb->pipe)
805 ? DMA_FROM_DEVICE : DMA_TO_DEVICE); 805 ? DMA_FROM_DEVICE : DMA_TO_DEVICE);
806 if (usb_pipecontrol(urb->pipe))
807 urb->setup_dma = dma_map_single(controller,
808 urb->setup_packet,
809 sizeof(struct usb_ctrlrequest),
810 DMA_TO_DEVICE);
811 /* FIXME generic api broken like pci, can't report errors */ 806 /* FIXME generic api broken like pci, can't report errors */
812 /* if (urb->transfer_dma == DMA_ADDR_INVALID) return 0; */ 807 /* if (urb->transfer_dma == DMA_ADDR_INVALID) return 0; */
813 } else 808 } else
814 urb->transfer_dma = ~0; 809 urb->transfer_dma = ~0;
815 urb->transfer_flags |= (URB_NO_TRANSFER_DMA_MAP 810 urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
816 | URB_NO_SETUP_DMA_MAP);
817 return urb; 811 return urb;
818} 812}
819EXPORT_SYMBOL_GPL(usb_buffer_map); 813EXPORT_SYMBOL_GPL(usb_buffer_map);
@@ -881,14 +875,8 @@ void usb_buffer_unmap(struct urb *urb)
881 urb->transfer_dma, urb->transfer_buffer_length, 875 urb->transfer_dma, urb->transfer_buffer_length,
882 usb_pipein(urb->pipe) 876 usb_pipein(urb->pipe)
883 ? DMA_FROM_DEVICE : DMA_TO_DEVICE); 877 ? DMA_FROM_DEVICE : DMA_TO_DEVICE);
884 if (usb_pipecontrol(urb->pipe))
885 dma_unmap_single(controller,
886 urb->setup_dma,
887 sizeof(struct usb_ctrlrequest),
888 DMA_TO_DEVICE);
889 } 878 }
890 urb->transfer_flags &= ~(URB_NO_TRANSFER_DMA_MAP 879 urb->transfer_flags &= ~URB_NO_TRANSFER_DMA_MAP;
891 | URB_NO_SETUP_DMA_MAP);
892} 880}
893EXPORT_SYMBOL_GPL(usb_buffer_unmap); 881EXPORT_SYMBOL_GPL(usb_buffer_unmap);
894#endif /* 0 */ 882#endif /* 0 */