diff options
Diffstat (limited to 'drivers/usb/core/usb.c')
-rw-r--r-- | drivers/usb/core/usb.c | 18 |
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 | } |
819 | EXPORT_SYMBOL_GPL(usb_buffer_map); | 813 | EXPORT_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 | } |
893 | EXPORT_SYMBOL_GPL(usb_buffer_unmap); | 881 | EXPORT_SYMBOL_GPL(usb_buffer_unmap); |
894 | #endif /* 0 */ | 882 | #endif /* 0 */ |