#ifdef CONFIG_DMA_ENGINE
 static int __init async_tx_init(void)
 {
-       dmaengine_get();
+       async_dmaengine_get();
 
        printk(KERN_INFO "async_tx: api initialized (async)\n");
 
 
 static void __exit async_tx_exit(void)
 {
-       dmaengine_put();
+       async_dmaengine_put();
 }
 
 /**
        if (depend_tx &&
            dma_has_cap(tx_type, depend_tx->chan->device->cap_mask))
                return depend_tx->chan;
-       return dma_find_channel(tx_type);
+       return async_dma_find_channel(tx_type);
 }
 EXPORT_SYMBOL_GPL(__async_tx_find_channel);
 #else
 
          Say Y here if you enabled INTEL_IOATDMA or FSL_DMA, otherwise
          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
        tristate "DMA Test client"
        depends on DMA_ENGINE
 
 }
 #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,
        void *dest, void *src, size_t len);
 dma_cookie_t dma_async_memcpy_buf_to_pg(struct dma_chan *chan,