diff options
-rw-r--r-- | include/linux/dmaengine.h | 43 |
1 files changed, 25 insertions, 18 deletions
diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h index 272010a6078a..c94d8f1d62e5 100644 --- a/include/linux/dmaengine.h +++ b/include/linux/dmaengine.h | |||
@@ -44,7 +44,7 @@ enum dma_event { | |||
44 | }; | 44 | }; |
45 | 45 | ||
46 | /** | 46 | /** |
47 | * typedef dma_cookie_t | 47 | * typedef dma_cookie_t - an opaque DMA cookie |
48 | * | 48 | * |
49 | * if dma_cookie_t is >0 it's a DMA request cookie, <0 it's an error code | 49 | * if dma_cookie_t is >0 it's a DMA request cookie, <0 it's an error code |
50 | */ | 50 | */ |
@@ -80,14 +80,14 @@ struct dma_chan_percpu { | |||
80 | 80 | ||
81 | /** | 81 | /** |
82 | * struct dma_chan - devices supply DMA channels, clients use them | 82 | * struct dma_chan - devices supply DMA channels, clients use them |
83 | * @client: ptr to the client user of this chan, will be NULL when unused | 83 | * @client: ptr to the client user of this chan, will be %NULL when unused |
84 | * @device: ptr to the dma device who supplies this channel, always !NULL | 84 | * @device: ptr to the dma device who supplies this channel, always !%NULL |
85 | * @cookie: last cookie value returned to client | 85 | * @cookie: last cookie value returned to client |
86 | * @chan_id: | 86 | * @chan_id: channel ID for sysfs |
87 | * @class_dev: | 87 | * @class_dev: class device for sysfs |
88 | * @refcount: kref, used in "bigref" slow-mode | 88 | * @refcount: kref, used in "bigref" slow-mode |
89 | * @slow_ref: | 89 | * @slow_ref: indicates that the DMA channel is free |
90 | * @rcu: | 90 | * @rcu: the DMA channel's RCU head |
91 | * @client_node: used to add this to the client chan list | 91 | * @client_node: used to add this to the client chan list |
92 | * @device_node: used to add this to the device chan list | 92 | * @device_node: used to add this to the device chan list |
93 | * @local: per-cpu pointer to a struct dma_chan_percpu | 93 | * @local: per-cpu pointer to a struct dma_chan_percpu |
@@ -162,10 +162,17 @@ struct dma_client { | |||
162 | * @chancnt: how many DMA channels are supported | 162 | * @chancnt: how many DMA channels are supported |
163 | * @channels: the list of struct dma_chan | 163 | * @channels: the list of struct dma_chan |
164 | * @global_node: list_head for global dma_device_list | 164 | * @global_node: list_head for global dma_device_list |
165 | * @refcount: | 165 | * @refcount: reference count |
166 | * @done: | 166 | * @done: IO completion struct |
167 | * @dev_id: | 167 | * @dev_id: unique device ID |
168 | * Other func ptrs: used to make use of this device's capabilities | 168 | * @device_alloc_chan_resources: allocate resources and return the |
169 | * number of allocated descriptors | ||
170 | * @device_free_chan_resources: release DMA channel's resources | ||
171 | * @device_memcpy_buf_to_buf: memcpy buf pointer to buf pointer | ||
172 | * @device_memcpy_buf_to_pg: memcpy buf pointer to struct page | ||
173 | * @device_memcpy_pg_to_pg: memcpy struct page/offset to struct page/offset | ||
174 | * @device_memcpy_complete: poll the status of an IOAT DMA transaction | ||
175 | * @device_memcpy_issue_pending: push appended descriptors to hardware | ||
169 | */ | 176 | */ |
170 | struct dma_device { | 177 | struct dma_device { |
171 | 178 | ||
@@ -211,7 +218,7 @@ void dma_async_client_chan_request(struct dma_client *client, | |||
211 | * Both @dest and @src must be mappable to a bus address according to the | 218 | * Both @dest and @src must be mappable to a bus address according to the |
212 | * DMA mapping API rules for streaming mappings. | 219 | * DMA mapping API rules for streaming mappings. |
213 | * Both @dest and @src must stay memory resident (kernel memory or locked | 220 | * Both @dest and @src must stay memory resident (kernel memory or locked |
214 | * user space pages) | 221 | * user space pages). |
215 | */ | 222 | */ |
216 | static inline dma_cookie_t dma_async_memcpy_buf_to_buf(struct dma_chan *chan, | 223 | static inline dma_cookie_t dma_async_memcpy_buf_to_buf(struct dma_chan *chan, |
217 | void *dest, void *src, size_t len) | 224 | void *dest, void *src, size_t len) |
@@ -225,7 +232,7 @@ static inline dma_cookie_t dma_async_memcpy_buf_to_buf(struct dma_chan *chan, | |||
225 | } | 232 | } |
226 | 233 | ||
227 | /** | 234 | /** |
228 | * dma_async_memcpy_buf_to_pg - offloaded copy | 235 | * dma_async_memcpy_buf_to_pg - offloaded copy from address to page |
229 | * @chan: DMA channel to offload copy to | 236 | * @chan: DMA channel to offload copy to |
230 | * @page: destination page | 237 | * @page: destination page |
231 | * @offset: offset in page to copy to | 238 | * @offset: offset in page to copy to |
@@ -250,18 +257,18 @@ static inline dma_cookie_t dma_async_memcpy_buf_to_pg(struct dma_chan *chan, | |||
250 | } | 257 | } |
251 | 258 | ||
252 | /** | 259 | /** |
253 | * dma_async_memcpy_buf_to_pg - offloaded copy | 260 | * dma_async_memcpy_pg_to_pg - offloaded copy from page to page |
254 | * @chan: DMA channel to offload copy to | 261 | * @chan: DMA channel to offload copy to |
255 | * @dest_page: destination page | 262 | * @dest_pg: destination page |
256 | * @dest_off: offset in page to copy to | 263 | * @dest_off: offset in page to copy to |
257 | * @src_page: source page | 264 | * @src_pg: source page |
258 | * @src_off: offset in page to copy from | 265 | * @src_off: offset in page to copy from |
259 | * @len: length | 266 | * @len: length |
260 | * | 267 | * |
261 | * Both @dest_page/@dest_off and @src_page/@src_off must be mappable to a bus | 268 | * Both @dest_page/@dest_off and @src_page/@src_off must be mappable to a bus |
262 | * address according to the DMA mapping API rules for streaming mappings. | 269 | * address according to the DMA mapping API rules for streaming mappings. |
263 | * Both @dest_page/@dest_off and @src_page/@src_off must stay memory resident | 270 | * Both @dest_page/@dest_off and @src_page/@src_off must stay memory resident |
264 | * (kernel memory or locked user space pages) | 271 | * (kernel memory or locked user space pages). |
265 | */ | 272 | */ |
266 | static inline dma_cookie_t dma_async_memcpy_pg_to_pg(struct dma_chan *chan, | 273 | static inline dma_cookie_t dma_async_memcpy_pg_to_pg(struct dma_chan *chan, |
267 | struct page *dest_pg, unsigned int dest_off, struct page *src_pg, | 274 | struct page *dest_pg, unsigned int dest_off, struct page *src_pg, |
@@ -278,7 +285,7 @@ static inline dma_cookie_t dma_async_memcpy_pg_to_pg(struct dma_chan *chan, | |||
278 | 285 | ||
279 | /** | 286 | /** |
280 | * dma_async_memcpy_issue_pending - flush pending copies to HW | 287 | * dma_async_memcpy_issue_pending - flush pending copies to HW |
281 | * @chan: | 288 | * @chan: target DMA channel |
282 | * | 289 | * |
283 | * This allows drivers to push copies to HW in batches, | 290 | * This allows drivers to push copies to HW in batches, |
284 | * reducing MMIO writes where possible. | 291 | * reducing MMIO writes where possible. |