Commit 729b5d1b authored by Dan Williams's avatar Dan Williams

dmaengine: allow dma support for async_tx to be toggled

Provide a config option for blocking the allocation of dma channels to
the async_tx api.
Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
parent 06164f31
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
#ifdef CONFIG_DMA_ENGINE #ifdef CONFIG_DMA_ENGINE
static int __init async_tx_init(void) static int __init async_tx_init(void)
{ {
dmaengine_get(); async_dmaengine_get();
printk(KERN_INFO "async_tx: api initialized (async)\n"); printk(KERN_INFO "async_tx: api initialized (async)\n");
...@@ -39,7 +39,7 @@ static int __init async_tx_init(void) ...@@ -39,7 +39,7 @@ static int __init async_tx_init(void)
static void __exit async_tx_exit(void) static void __exit async_tx_exit(void)
{ {
dmaengine_put(); async_dmaengine_put();
} }
/** /**
...@@ -56,7 +56,7 @@ __async_tx_find_channel(struct dma_async_tx_descriptor *depend_tx, ...@@ -56,7 +56,7 @@ __async_tx_find_channel(struct dma_async_tx_descriptor *depend_tx,
if (depend_tx && if (depend_tx &&
dma_has_cap(tx_type, depend_tx->chan->device->cap_mask)) dma_has_cap(tx_type, depend_tx->chan->device->cap_mask))
return depend_tx->chan; return depend_tx->chan;
return dma_find_channel(tx_type); return async_dma_find_channel(tx_type);
} }
EXPORT_SYMBOL_GPL(__async_tx_find_channel); EXPORT_SYMBOL_GPL(__async_tx_find_channel);
#else #else
......
...@@ -98,6 +98,17 @@ config NET_DMA ...@@ -98,6 +98,17 @@ config NET_DMA
Say Y here if you enabled INTEL_IOATDMA or FSL_DMA, otherwise Say Y here if you enabled INTEL_IOATDMA or FSL_DMA, otherwise
say N. say N.
config ASYNC_TX_DMA
bool "Async_tx: Offload support for the async_tx api"
depends on DMA_ENGINE
help
This allows the async_tx api to take advantage of offload engines for
memcpy, memset, xor, and raid6 p+q operations. If your platform has
a dma engine that can perform raid operations and you have enabled
MD_RAID456 say Y.
If unsure, say N.
config DMATEST config DMATEST
tristate "DMA Test client" tristate "DMA Test client"
depends on DMA_ENGINE depends on DMA_ENGINE
......
...@@ -288,6 +288,24 @@ static inline void net_dmaengine_put(void) ...@@ -288,6 +288,24 @@ static inline void net_dmaengine_put(void)
} }
#endif #endif
#ifdef CONFIG_ASYNC_TX_DMA
#define async_dmaengine_get() dmaengine_get()
#define async_dmaengine_put() dmaengine_put()
#define async_dma_find_channel(type) dma_find_channel(type)
#else
static inline void async_dmaengine_get(void)
{
}
static inline void async_dmaengine_put(void)
{
}
static inline struct dma_chan *
async_dma_find_channel(enum dma_transaction_type type)
{
return NULL;
}
#endif
dma_cookie_t dma_async_memcpy_buf_to_buf(struct dma_chan *chan, dma_cookie_t dma_async_memcpy_buf_to_buf(struct dma_chan *chan,
void *dest, void *src, size_t len); void *dest, void *src, size_t len);
dma_cookie_t dma_async_memcpy_buf_to_pg(struct dma_chan *chan, dma_cookie_t dma_async_memcpy_buf_to_pg(struct dma_chan *chan,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment