dmaengine: imx: fix the build failure on x86_64
[pandora-kernel.git] / drivers / dma / imx-sdma.c
index 49aa4e8..434fb61 100644 (file)
@@ -43,6 +43,8 @@
 #include <mach/dma.h>
 #include <mach/hardware.h>
 
+#include "dmaengine.h"
+
 /* SDMA registers */
 #define SDMA_H_C0PTR           0x000
 #define SDMA_H_INTR            0x004
@@ -528,7 +530,7 @@ static void mxc_sdma_handle_channel_normal(struct sdma_channel *sdmac)
        else
                sdmac->status = DMA_SUCCESS;
 
-       sdmac->chan.completed_cookie = sdmac->desc.cookie;
+       dma_cookie_complete(&sdmac->desc);
        if (sdmac->desc.callback)
                sdmac->desc.callback(sdmac->desc.callback_param);
 }
@@ -813,19 +815,6 @@ out:
        return ret;
 }
 
-static dma_cookie_t sdma_assign_cookie(struct sdma_channel *sdmac)
-{
-       dma_cookie_t cookie = sdmac->chan.cookie;
-
-       if (++cookie < 0)
-               cookie = 1;
-
-       sdmac->chan.cookie = cookie;
-       sdmac->desc.cookie = cookie;
-
-       return cookie;
-}
-
 static struct sdma_channel *to_sdma_chan(struct dma_chan *chan)
 {
        return container_of(chan, struct sdma_channel, chan);
@@ -839,7 +828,7 @@ static dma_cookie_t sdma_tx_submit(struct dma_async_tx_descriptor *tx)
 
        spin_lock_irqsave(&sdmac->lock, flags);
 
-       cookie = sdma_assign_cookie(sdmac);
+       cookie = dma_cookie_assign(tx);
 
        spin_unlock_irqrestore(&sdmac->lock, flags);
 
@@ -914,7 +903,7 @@ static void sdma_free_chan_resources(struct dma_chan *chan)
 static struct dma_async_tx_descriptor *sdma_prep_slave_sg(
                struct dma_chan *chan, struct scatterlist *sgl,
                unsigned int sg_len, enum dma_transfer_direction direction,
-               unsigned long flags)
+               unsigned long flags, void *context)
 {
        struct sdma_channel *sdmac = to_sdma_chan(chan);
        struct sdma_engine *sdma = sdmac->sdma;
@@ -1012,7 +1001,8 @@ err_out:
 
 static struct dma_async_tx_descriptor *sdma_prep_dma_cyclic(
                struct dma_chan *chan, dma_addr_t dma_addr, size_t buf_len,
-               size_t period_len, enum dma_transfer_direction direction)
+               size_t period_len, enum dma_transfer_direction direction,
+               void *context)
 {
        struct sdma_channel *sdmac = to_sdma_chan(chan);
        struct sdma_engine *sdma = sdmac->sdma;
@@ -1367,6 +1357,7 @@ static int __init sdma_probe(struct platform_device *pdev)
                spin_lock_init(&sdmac->lock);
 
                sdmac->chan.device = &sdma->dma_device;
+               dma_cookie_init(&sdmac->chan);
                sdmac->channel = i;
 
                /*
@@ -1387,7 +1378,9 @@ static int __init sdma_probe(struct platform_device *pdev)
                sdma_add_scripts(sdma, pdata->script_addrs);
 
        if (pdata) {
-               sdma_get_firmware(sdma, pdata->fw_name);
+               ret = sdma_get_firmware(sdma, pdata->fw_name);
+               if (ret)
+                       dev_warn(&pdev->dev, "failed to get firmware from platform data\n");
        } else {
                /*
                 * Because that device tree does not encode ROM script address,
@@ -1396,15 +1389,12 @@ static int __init sdma_probe(struct platform_device *pdev)
                 */
                ret = of_property_read_string(np, "fsl,sdma-ram-script-name",
                                              &fw_name);
-               if (ret) {
-                       dev_err(&pdev->dev, "failed to get firmware name\n");
-                       goto err_init;
-               }
-
-               ret = sdma_get_firmware(sdma, fw_name);
-               if (ret) {
-                       dev_err(&pdev->dev, "failed to get firmware\n");
-                       goto err_init;
+               if (ret)
+                       dev_warn(&pdev->dev, "failed to get firmware name\n");
+               else {
+                       ret = sdma_get_firmware(sdma, fw_name);
+                       if (ret)
+                               dev_warn(&pdev->dev, "failed to get firmware from device tree\n");
                }
        }