Re: [PATCH] usb: dma bounce buffer support V2 | |
| [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] | |
On Thu, 17 Jan 2008, Magnus Damm wrote:
> usb: dma bounce buffer support V2
>
> This patch adds dma bounce buffer support to the usb core. These buffers
> can be enabled with the HCD_LOCAL_MEM flag, and they make sure that all data
> passed to the host controller is allocated using dma_alloc_coherent().
This looks good. Just one little change:
> +static int map_urb_for_dma(struct usb_hcd *hcd, struct urb *urb,
> + gfp_t mem_flags)
> +{
...
> + if (ret == 0 && urb->transfer_buffer_length != 0
> + && !(urb->transfer_flags & URB_NO_TRANSFER_DMA_MAP)) {
> + if (hcd->self.uses_dma)
> urb->transfer_dma = dma_map_single (
> hcd->self.controller,
> urb->transfer_buffer,
> urb->transfer_buffer_length,
> - usb_urb_dir_in(urb)
> - ? DMA_FROM_DEVICE
> - : DMA_TO_DEVICE);
> + dir);
> + else if (hcd->driver->flags & HCD_LOCAL_MEM)
> + ret = hcd_alloc_coherent(
> + urb->dev->bus, mem_flags,
> + &urb->transfer_dma,
> + &urb->transfer_buffer,
> + urb->transfer_buffer_length,
> + dir);
> +
> + if (ret && usb_endpoint_xfer_control(&urb->ep->desc)
> + && !(urb->transfer_flags & URB_NO_SETUP_DMA_MAP)
> + && (hcd->driver->flags & HCD_LOCAL_MEM))
> + hcd_free_coherent(urb->dev->bus,
> + &urb->setup_dma,
> + (void **)&urb->setup_packet,
> + sizeof (struct usb_ctrlrequest),
> + DMA_TO_DEVICE);
This last section should be in the scope of the HCD_LOCAL_MEM test above.
Alan Stern
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
linux-usb-devel@xxxxxxxxxxxxxxxxxxxxx
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
[Home] [Video for Linux] [Photo] [Yosemite Forum] [Yosemite Photos] [Video Projectors] [PDAs] [Hacking TiVo] [Linux Kernel] [Linux SCSI] [XFree86] [Devices] [Big List of Linux Books] [Free Dating]
![]() |