mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
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: Dan Williams <dan.j.williams@intel.com>
This commit is contained in:
parent
06164f3194
commit
729b5d1b8e
3 changed files with 32 additions and 3 deletions
|
@ -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)
|
||||||
|
|
||||||
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,
|
||||||
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
|
||||||
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)
|
||||||
}
|
}
|
||||||
#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,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue