Lines Matching +full:existing +full:- +full:parts
12 though they still must provide DMA-ready buffers (see
13 Documentation/core-api/dma-api-howto.rst). That's how they've worked through
14 the 2.4 (and earlier) kernels, or they can now be DMA-aware.
16 DMA-aware usb drivers:
18 - New calls enable DMA-aware drivers, letting them allocate dma buffers and
19 manage dma mappings for existing dma-ready buffers (see below).
21 - URBs have an additional "transfer_dma" field, as well as a transfer_flags
25 - "usbcore" will map this DMA address, if a DMA-aware driver didn't do
29 - There's a new "generic DMA API", parts of which are usable by USB device
37 and effects like cache-trashing can impose subtle penalties.
39 - If you're doing lots of small data transfers from the same buffer all
46 kind of addresses to store in urb->transfer_buffer and urb->transfer_dma.
47 You'd also set ``URB_NO_TRANSFER_DMA_MAP`` in urb->transfer_flags::
56 to use this type of memory ("dma-coherent"), and memory returned from
59 The memory buffer returned is "dma-coherent"; sometimes you might need to
63 Documentation/core-api/dma-api-howto.rst for definitions of "coherent" and
67 space-efficient.
70 semantics of dma-coherent memory require either bypassing CPU caches
71 or using cache hardware with bus-snooping support. While x86 hardware
72 has such bus-snooping, many other systems use software to flush cache
75 - Devices on some EHCI controllers could handle DMA to/from high memory.
88 Working with existing buffers
91 Existing buffers aren't usable for DMA without first being mapped into the
94 of Documentation/core-api/dma-api-howto.rst, titled "What memory is DMA-able?")
96 - When you're using scatterlists, you can map everything at once. On some
112 - Some drivers may prefer to work with the model that they're mapping large
113 buffers, synchronizing their safe re-use. (If there's no re-use, then let
116 each time an urb completes and then re-map it on during resubmission.
118 These calls all work with initialized urbs: ``urb->dev``, ``urb->pipe``,
119 ``urb->transfer_buffer``, and ``urb->transfer_buffer_length`` must all be
120 valid when these calls are used (``urb->setup_packet`` must be valid too
129 The calls manage ``urb->transfer_dma`` for you, and set