Provide a common function to initialize a channels cookie values.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Tested-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Acked-by: Jassi Brar <jassisinghbrar@gmail.com>
[imx-sdma.c & mxs-dma.c]
Tested-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Vinod Koul <vinod.koul@linux.intel.com>
                         chan->name);
 
                chan->chan.device = dmadev;
-               chan->chan.cookie = 0;
-               chan->chan.completed_cookie = 0;
+               dma_cookie_init(&chan->chan);
 
                spin_lock_init(&chan->lock);
                INIT_LIST_HEAD(&chan->pend_list);
 
        spin_lock_irqsave(&atchan->lock, flags);
        atchan->descs_allocated = i;
        list_splice(&tmp_list, &atchan->free_list);
-       chan->completed_cookie = chan->cookie = 1;
+       dma_cookie_init(chan);
        spin_unlock_irqrestore(&atchan->lock, flags);
 
        /* channel parameters */
                struct at_dma_chan      *atchan = &atdma->chan[i];
 
                atchan->chan_common.device = &atdma->dma_common;
-               atchan->chan_common.cookie = atchan->chan_common.completed_cookie = 1;
+               dma_cookie_init(&atchan->chan_common);
                list_add_tail(&atchan->chan_common.device_node,
                                &atdma->dma_common.channels);
 
 
        coh901318_config(cohc, NULL);
 
        cohc->allocated = 1;
-       chan->completed_cookie = chan->cookie = 1;
+       dma_cookie_init(chan);
 
        spin_unlock_irqrestore(&cohc->lock, flags);
 
 
 #include <linux/bug.h>
 #include <linux/dmaengine.h>
 
+/**
+ * dma_cookie_init - initialize the cookies for a DMA channel
+ * @chan: dma channel to initialize
+ */
+static inline void dma_cookie_init(struct dma_chan *chan)
+{
+       chan->cookie = DMA_MIN_COOKIE;
+       chan->completed_cookie = DMA_MIN_COOKIE;
+}
+
 /**
  * dma_cookie_assign - assign a DMA engine cookie to the descriptor
  * @tx: descriptor needing cookie
 
                return -EIO;
        }
 
-       chan->completed_cookie = chan->cookie = 1;
+       dma_cookie_init(chan);
 
        /*
         * NOTE: some controllers may have additional features that we
                struct dw_dma_chan      *dwc = &dw->chan[i];
 
                dwc->chan.device = &dw->dma;
-               dwc->chan.cookie = dwc->chan.completed_cookie = 1;
+               dma_cookie_init(&dwc->chan);
                if (pdata->chan_allocation_order == CHAN_ALLOCATION_ASCENDING)
                        list_add_tail(&dwc->chan.device_node,
                                        &dw->dma.channels);
 
                goto fail_clk_disable;
 
        spin_lock_irq(&edmac->lock);
-       edmac->chan.completed_cookie = 1;
-       edmac->chan.cookie = 1;
+       dma_cookie_init(&edmac->chan);
        ret = edmac->edma->hw_setup(edmac);
        spin_unlock_irq(&edmac->lock);
 
 
                pm_runtime_put(&mid->pdev->dev);
                return -EIO;
        }
-       chan->completed_cookie = chan->cookie = 1;
+       dma_cookie_init(chan);
 
        spin_lock_bh(&midc->lock);
        while (midc->descs_allocated < DESCS_PER_CHANNEL) {
                struct intel_mid_dma_chan *midch = &dma->ch[i];
 
                midch->chan.device = &dma->common;
-               midch->chan.cookie =  1;
+               dma_cookie_init(&midch->chan);
                midch->ch_id = dma->chan_base + i;
                pr_debug("MDMA:Init CH %d, ID %d\n", i, midch->ch_id);
 
 
        BUG_ON(chan->client_count > 1);
        WARN_ON(ichan->status != IPU_CHANNEL_FREE);
 
-       chan->cookie            = 1;
-       chan->completed_cookie  = -ENXIO;
+       dma_cookie_init(chan);
 
        ret = ipu_irq_map(chan->chan_id);
        if (ret < 0)
                snprintf(ichan->eof_name, sizeof(ichan->eof_name), "IDMAC EOF %d", i);
 
                dma_chan->device        = &idmac->dma;
-               dma_chan->cookie        = 1;
-               dma_chan->completed_cookie      = -ENXIO;
+               dma_cookie_init(dma_chan);
                dma_chan->chan_id       = i;
                list_add_tail(&dma_chan->device_node, &dma->channels);
        }
 
                mchan = &mdma->channels[i];
 
                mchan->chan.device = dma;
-               mchan->chan.cookie = 1;
-               mchan->chan.completed_cookie = mchan->chan.cookie;
+               dma_cookie_init(&mchan->chan);
 
                INIT_LIST_HEAD(&mchan->free);
                INIT_LIST_HEAD(&mchan->prepared);
 
        spin_lock_irq(&pd_chan->lock);
        list_splice(&tmp_list, &pd_chan->free_list);
        pd_chan->descs_allocated = i;
-       chan->completed_cookie = chan->cookie = 1;
+       dma_cookie_init(chan);
        spin_unlock_irq(&pd_chan->lock);
 
        pdc_enable_irq(chan, 1);
                struct pch_dma_chan *pd_chan = &pd->channels[i];
 
                pd_chan->chan.device = &pd->dma;
-               pd_chan->chan.cookie = 1;
+               dma_cookie_init(&pd_chan->chan);
 
                pd_chan->membase = ®s->desc[i];
 
 
 
        spin_lock_irqsave(&pch->lock, flags);
 
-       chan->completed_cookie = chan->cookie = 1;
+       dma_cookie_init(chan);
        pch->cyclic = false;
 
        pch->pl330_chid = pl330_request_channel(&pdmac->pif);
 
                schan = &sdma->channels[i];
 
                schan->chan.device = dma;
-               schan->chan.cookie = 1;
-               schan->chan.completed_cookie = schan->chan.cookie;
+               dma_cookie_init(&schan->chan);
 
                INIT_LIST_HEAD(&schan->free);
                INIT_LIST_HEAD(&schan->prepared);
 
        bool is_free_phy;
        spin_lock_irqsave(&d40c->lock, flags);
 
-       chan->completed_cookie = chan->cookie = 1;
+       dma_cookie_init(chan);
 
        /* If no dma configuration is set use default configuration (memcpy) */
        if (!d40c->configured) {
 
        }
 
        spin_lock_bh(&td_chan->lock);
-       chan->completed_cookie = 1;
-       chan->cookie = 1;
+       dma_cookie_init(chan);
        spin_unlock_bh(&td_chan->lock);
 
        return 0;
                }
 
                td_chan->chan.device = &td->dma;
-               td_chan->chan.cookie = 1;
+               dma_cookie_init(&td_chan->chan);
                spin_lock_init(&td_chan->lock);
                INIT_LIST_HEAD(&td_chan->active_list);
                INIT_LIST_HEAD(&td_chan->queue);
 
                return -EIO;
        }
 
-       chan->completed_cookie = chan->cookie = 1;
+       dma_cookie_init(chan);
 
        dc->ccr = TXX9_DMA_CCR_IMMCHN | TXX9_DMA_CCR_INTENE | CCR_LE;
        txx9dmac_chan_set_SMPCHN(dc);
        dc->ddev->chan[ch] = dc;
        dc->chan.device = &dc->dma;
        list_add_tail(&dc->chan.device_node, &dc->chan.device->channels);
-       dc->chan.cookie = dc->chan.completed_cookie = 1;
+       dma_cookie_init(&dc->chan);
 
        if (is_dmac64(dc))
                dc->ch_regs = &__txx9dmac_regs(dc->ddev)->CHAN[ch];