diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-02-18 11:49:20 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-02-18 11:49:20 -0500 |
commit | ce1d3fde87d1a21f1ec1147dde32b2825dd3a276 (patch) | |
tree | 6ffab43e47e3a22a76bf9bf4efeecdf1b90dcb6f /Documentation/dmaengine | |
parent | 928fce2f6d8152d897790c1a5bbeef5642f69e0e (diff) | |
parent | 88987d2c7534a0269f567fb101e6d71a08f0f01d (diff) |
Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma
Pull dmaengine updates from Vinod Koul:
"This update brings:
- the big cleanup up by Maxime for device control and slave
capabilities. This makes the API much cleaner.
- new IMG MDC driver by Andrew
- new Renesas R-Car Gen2 DMA Controller driver by Laurent along with
bunch of fixes on rcar drivers
- odd fixes and updates spread over driver"
* 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma: (130 commits)
dmaengine: pl330: add DMA_PAUSE feature
dmaengine: pl330: improve pl330_tx_status() function
dmaengine: rcar-dmac: Disable channel 0 when using IOMMU
dmaengine: rcar-dmac: Work around descriptor mode IOMMU errata
dmaengine: rcar-dmac: Allocate hardware descriptors with DMAC device
dmaengine: rcar-dmac: Fix oops due to unintialized list in error ISR
dmaengine: rcar-dmac: Fix spinlock issues in interrupt
dmaenegine: edma: fix sparse warnings
dmaengine: rcar-dmac: Fix uninitialized variable usage
dmaengine: shdmac: extend PM methods
dmaengine: shdmac: use SET_RUNTIME_PM_OPS()
dmaengine: pl330: fix bug that cause start the same descs in cyclic
dmaengine: at_xdmac: allow muliple dwidths when doing slave transfers
dmaengine: at_xdmac: simplify channel configuration stuff
dmaengine: at_xdmac: introduce save_cc field
dmaengine: at_xdmac: wait for in-progress transaction to complete after pausing a channel
ioat: fail self-test if wait_for_completion times out
dmaengine: dw: define DW_DMA_MAX_NR_MASTERS
dmaengine: dw: amend description of dma_dev field
dmatest: move src_off, dst_off, len inside loop
...
Diffstat (limited to 'Documentation/dmaengine')
-rw-r--r-- | Documentation/dmaengine/provider.txt | 97 |
1 files changed, 55 insertions, 42 deletions
diff --git a/Documentation/dmaengine/provider.txt b/Documentation/dmaengine/provider.txt index 766658ccf235..05d2280190f1 100644 --- a/Documentation/dmaengine/provider.txt +++ b/Documentation/dmaengine/provider.txt | |||
@@ -113,6 +113,31 @@ need to initialize a few fields in there: | |||
113 | * channels: should be initialized as a list using the | 113 | * channels: should be initialized as a list using the |
114 | INIT_LIST_HEAD macro for example | 114 | INIT_LIST_HEAD macro for example |
115 | 115 | ||
116 | * src_addr_widths: | ||
117 | - should contain a bitmask of the supported source transfer width | ||
118 | |||
119 | * dst_addr_widths: | ||
120 | - should contain a bitmask of the supported destination transfer | ||
121 | width | ||
122 | |||
123 | * directions: | ||
124 | - should contain a bitmask of the supported slave directions | ||
125 | (i.e. excluding mem2mem transfers) | ||
126 | |||
127 | * residue_granularity: | ||
128 | - Granularity of the transfer residue reported to dma_set_residue. | ||
129 | - This can be either: | ||
130 | + Descriptor | ||
131 | -> Your device doesn't support any kind of residue | ||
132 | reporting. The framework will only know that a particular | ||
133 | transaction descriptor is done. | ||
134 | + Segment | ||
135 | -> Your device is able to report which chunks have been | ||
136 | transferred | ||
137 | + Burst | ||
138 | -> Your device is able to report which burst have been | ||
139 | transferred | ||
140 | |||
116 | * dev: should hold the pointer to the struct device associated | 141 | * dev: should hold the pointer to the struct device associated |
117 | to your current driver instance. | 142 | to your current driver instance. |
118 | 143 | ||
@@ -274,48 +299,36 @@ supported. | |||
274 | account the current period. | 299 | account the current period. |
275 | - This function can be called in an interrupt context. | 300 | - This function can be called in an interrupt context. |
276 | 301 | ||
277 | * device_control | 302 | * device_config |
278 | - Used by client drivers to control and configure the channel it | 303 | - Reconfigures the channel with the configuration given as |
279 | has a handle on. | 304 | argument |
280 | - Called with a command and an argument | 305 | - This command should NOT perform synchronously, or on any |
281 | + The command is one of the values listed by the enum | 306 | currently queued transfers, but only on subsequent ones |
282 | dma_ctrl_cmd. The valid commands are: | 307 | - In this case, the function will receive a dma_slave_config |
283 | + DMA_PAUSE | 308 | structure pointer as an argument, that will detail which |
284 | + Pauses a transfer on the channel | 309 | configuration to use. |
285 | + This command should operate synchronously on the channel, | 310 | - Even though that structure contains a direction field, this |
286 | pausing right away the work of the given channel | 311 | field is deprecated in favor of the direction argument given to |
287 | + DMA_RESUME | 312 | the prep_* functions |
288 | + Restarts a transfer on the channel | 313 | - This call is mandatory for slave operations only. This should NOT be |
289 | + This command should operate synchronously on the channel, | 314 | set or expected to be set for memcpy operations. |
290 | resuming right away the work of the given channel | 315 | If a driver support both, it should use this call for slave |
291 | + DMA_TERMINATE_ALL | 316 | operations only and not for memcpy ones. |
292 | + Aborts all the pending and ongoing transfers on the | 317 | |
293 | channel | 318 | * device_pause |
294 | + This command should operate synchronously on the channel, | 319 | - Pauses a transfer on the channel |
295 | terminating right away all the channels | 320 | - This command should operate synchronously on the channel, |
296 | + DMA_SLAVE_CONFIG | 321 | pausing right away the work of the given channel |
297 | + Reconfigures the channel with passed configuration | 322 | |
298 | + This command should NOT perform synchronously, or on any | 323 | * device_resume |
299 | currently queued transfers, but only on subsequent ones | 324 | - Resumes a transfer on the channel |
300 | + In this case, the function will receive a | 325 | - This command should operate synchronously on the channel, |
301 | dma_slave_config structure pointer as an argument, that | 326 | pausing right away the work of the given channel |
302 | will detail which configuration to use. | 327 | |
303 | + Even though that structure contains a direction field, | 328 | * device_terminate_all |
304 | this field is deprecated in favor of the direction | 329 | - Aborts all the pending and ongoing transfers on the channel |
305 | argument given to the prep_* functions | 330 | - This command should operate synchronously on the channel, |
306 | + FSLDMA_EXTERNAL_START | 331 | terminating right away all the channels |
307 | + TODO: Why does that even exist? | ||
308 | + The argument is an opaque unsigned long. This actually is a | ||
309 | pointer to a struct dma_slave_config that should be used only | ||
310 | in the DMA_SLAVE_CONFIG. | ||
311 | |||
312 | * device_slave_caps | ||
313 | - Called through the framework by client drivers in order to have | ||
314 | an idea of what are the properties of the channel allocated to | ||
315 | them. | ||
316 | - Such properties are the buswidth, available directions, etc. | ||
317 | - Required for every generic layer doing DMA transfers, such as | ||
318 | ASoC. | ||
319 | 332 | ||
320 | Misc notes (stuff that should be documented, but don't really know | 333 | Misc notes (stuff that should be documented, but don't really know |
321 | where to put them) | 334 | where to put them) |