dmaengine: provide helper for setting txstate
authorDan Williams <dan.j.williams@intel.com>
Fri, 26 Mar 2010 23:52:10 +0000 (16:52 -0700)
committerDan Williams <dan.j.williams@intel.com>
Fri, 26 Mar 2010 23:52:10 +0000 (16:52 -0700)
Simple conditional struct filler to cut out some duplicated code.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
14 files changed:
drivers/dma/at_hdmac.c
drivers/dma/coh901318.c
drivers/dma/dw_dmac.c
drivers/dma/fsldma.c
drivers/dma/ioat/dma.h
drivers/dma/iop-adma.c
drivers/dma/ipu/ipu_idmac.c
drivers/dma/mpc512x_dma.c
drivers/dma/mv_xor.c
drivers/dma/ppc4xx/adma.c
drivers/dma/shdma.c
drivers/dma/timb_dma.c
drivers/dma/txx9dmac.c
include/linux/dmaengine.h

index ff75cf1..93ed99c 100644 (file)
@@ -834,12 +834,7 @@ atc_tx_status(struct dma_chan *chan,
 
        spin_unlock_bh(&atchan->lock);
 
-       if (txstate) {
-               txstate->last = last_complete;
-               txstate->used = last_used;
-               txstate->residue = 0;
-       }
-
+       dma_set_tx_state(txstate, last_complete, last_used, 0);
        dev_vdbg(chan2dev(chan), "tx_status: %d (d%d, u%d)\n",
                 cookie, last_complete ? last_complete : 0,
                 last_used ? last_used : 0);
index 309db3b..4233440 100644 (file)
@@ -1147,12 +1147,8 @@ coh901318_tx_status(struct dma_chan *chan, dma_cookie_t cookie,
 
        ret = dma_async_is_complete(cookie, last_complete, last_used);
 
-       if (txstate) {
-               txstate->last = last_complete;
-               txstate->used = last_used;
-               txstate->residue = coh901318_get_bytes_left(chan);
-       }
-
+       dma_set_tx_state(txstate, last_complete, last_used,
+                        coh901318_get_bytes_left(chan));
        if (ret == DMA_IN_PROGRESS && cohc->stopped)
                ret = DMA_PAUSED;
 
index 263b70e..18fb5b4 100644 (file)
@@ -841,11 +841,7 @@ dwc_tx_status(struct dma_chan *chan,
                ret = dma_async_is_complete(cookie, last_complete, last_used);
        }
 
-       if (txstate) {
-               txstate->last = last_complete;
-               txstate->used = last_used;
-               txstate->residue = 0;
-       }
+       dma_set_tx_state(txstate, last_complete, last_used, 0);
 
        return ret;
 }
index ca5e8a3..cb1924f 100644 (file)
@@ -987,11 +987,7 @@ static enum dma_status fsl_tx_status(struct dma_chan *dchan,
        last_used = dchan->cookie;
        last_complete = chan->completed_cookie;
 
-       if (txstate) {
-               txstate->last = last_complete;
-               txstate->used = last_used;
-               txstate->residue = 0;
-       }
+       dma_set_tx_state(txstate, last_complete, last_used, 0);
 
        return dma_async_is_complete(cookie, last_complete, last_used);
 }
index 2339967..26f48ef 100644 (file)
@@ -158,11 +158,7 @@ ioat_tx_status(struct dma_chan *c, dma_cookie_t cookie,
        last_used = c->cookie;
        last_complete = chan->completed_cookie;
 
-       if (txstate) {
-               txstate->last = last_complete;
-               txstate->used = last_used;
-               txstate->residue = 0;
-       }
+       dma_set_tx_state(txstate, last_complete, last_used, 0);
 
        return dma_async_is_complete(cookie, last_complete, last_used);
 }
index ee40dbb..e5d4b97 100644 (file)
@@ -909,13 +909,7 @@ static enum dma_status iop_adma_status(struct dma_chan *chan,
 
        last_used = chan->cookie;
        last_complete = iop_chan->completed_cookie;
-
-       if (txstate) {
-               txstate->last = last_complete;
-               txstate->used = last_used;
-               txstate->residue = 0;
-       }
-
+       dma_set_tx_state(txstate, last_complete, last_used, 0);
        ret = dma_async_is_complete(cookie, last_complete, last_used);
        if (ret == DMA_SUCCESS)
                return ret;
@@ -924,12 +918,7 @@ static enum dma_status iop_adma_status(struct dma_chan *chan,
 
        last_used = chan->cookie;
        last_complete = iop_chan->completed_cookie;
-
-       if (txstate) {
-               txstate->last = last_complete;
-               txstate->used = last_used;
-               txstate->residue = 0;
-       }
+       dma_set_tx_state(txstate, last_complete, last_used, 0);
 
        return dma_async_is_complete(cookie, last_complete, last_used);
 }
index b9cef8b..246a614 100644 (file)
@@ -1651,11 +1651,7 @@ static enum dma_status idmac_tx_status(struct dma_chan *chan,
 {
        struct idmac_channel *ichan = to_idmac_chan(chan);
 
-       if (txstate) {
-               txstate->last = ichan->completed;
-               txstate->used = chan->cookie;
-               txstate->residue = 0;
-       }
+       dma_set_tx_state(txstate, ichan->completed, chan->cookie, 0);
        if (cookie != chan->cookie)
                return DMA_ERROR;
        return DMA_SUCCESS;
index cb3a8e9..7a750b9 100644 (file)
@@ -553,12 +553,7 @@ mpc_dma_tx_status(struct dma_chan *chan, dma_cookie_t cookie,
        last_complete = mchan->completed_cookie;
        spin_unlock_irqrestore(&mchan->lock, flags);
 
-       if (txstate) {
-               txstate->last = last_complete;
-               txstate->used = last_used;
-               txstate->residue = 0;
-       }
-
+       dma_set_tx_state(txstate, last_complete, last_used, 0);
        return dma_async_is_complete(cookie, last_complete, last_used);
 }
 
index 79fb1de..4b8c1fc 100644 (file)
@@ -826,11 +826,7 @@ static enum dma_status mv_xor_status(struct dma_chan *chan,
        last_used = chan->cookie;
        last_complete = mv_chan->completed_cookie;
        mv_chan->is_complete_cookie = cookie;
-       if (txstate) {
-               txstate->last = last_complete;
-               txstate->used = last_used;
-               txstate->residue = 0;
-       }
+       dma_set_tx_state(txstate, last_complete, last_used, 0);
 
        ret = dma_async_is_complete(cookie, last_complete, last_used);
        if (ret == DMA_SUCCESS) {
@@ -842,12 +838,7 @@ static enum dma_status mv_xor_status(struct dma_chan *chan,
        last_used = chan->cookie;
        last_complete = mv_chan->completed_cookie;
 
-       if (txstate) {
-               txstate->last = last_complete;
-               txstate->used = last_used;
-               txstate->residue = 0;
-       }
-
+       dma_set_tx_state(txstate, last_complete, last_used, 0);
        return dma_async_is_complete(cookie, last_complete, last_used);
 }
 
index d9a54c0..5558419 100644 (file)
@@ -3951,11 +3951,7 @@ static enum dma_status ppc440spe_adma_tx_status(struct dma_chan *chan,
        last_used = chan->cookie;
        last_complete = ppc440spe_chan->completed_cookie;
 
-       if (txstate) {
-               txstate->last = last_complete;
-               txstate->used = last_used;
-               txstate->residue = 0;
-       }
+       dma_set_tx_state(txstate, last_complete, last_used, 0);
 
        ret = dma_async_is_complete(cookie, last_complete, last_used);
        if (ret == DMA_SUCCESS)
@@ -3966,11 +3962,7 @@ static enum dma_status ppc440spe_adma_tx_status(struct dma_chan *chan,
        last_used = chan->cookie;
        last_complete = ppc440spe_chan->completed_cookie;
 
-       if (txstate) {
-               txstate->last = last_complete;
-               txstate->used = last_used;
-               txstate->residue = 0;
-       }
+       dma_set_tx_state(txstate, last_complete, last_used, 0);
 
        return dma_async_is_complete(cookie, last_complete, last_used);
 }
index 8aeda9c..98f82cd 100644 (file)
@@ -752,12 +752,7 @@ static enum dma_status sh_dmae_tx_status(struct dma_chan *chan,
        last_used = chan->cookie;
        last_complete = sh_chan->completed_cookie;
        BUG_ON(last_complete < 0);
-
-       if (txstate) {
-               txstate->last = last_complete;
-               txstate->used = last_used;
-               txstate->residue = 0;
-       }
+       dma_set_tx_state(txstate, last_complete, last_used, 0);
 
        spin_lock_bh(&sh_chan->desc_lock);
 
index 8fc2881..e20d5c1 100644 (file)
@@ -527,11 +527,7 @@ static enum dma_status td_tx_status(struct dma_chan *chan, dma_cookie_t cookie,
 
        ret = dma_async_is_complete(cookie, last_complete, last_used);
 
-       if (txstate) {
-               txstate->last = last_complete;
-               txstate->used = last_used;
-               txstate->residue = 0;
-       }
+       dma_set_tx_state(txstate, last_complete, last_used, 0);
 
        dev_dbg(chan2dev(chan),
                "%s: exit, ret: %d, last_complete: %d, last_used: %d\n",
index a44e422..e523737 100644 (file)
@@ -990,11 +990,7 @@ txx9dmac_tx_status(struct dma_chan *chan, dma_cookie_t cookie,
                ret = dma_async_is_complete(cookie, last_complete, last_used);
        }
 
-       if (txstate) {
-               txstate->last = last_complete;
-               txstate->used = last_used;
-               txstate->residue = 0;
-       }
+       dma_set_tx_state(txstate, last_complete, last_used, 0);
 
        return ret;
 }
index 55b08e8..50b7b3e 100644 (file)
@@ -628,6 +628,16 @@ static inline enum dma_status dma_async_is_complete(dma_cookie_t cookie,
        return DMA_IN_PROGRESS;
 }
 
+static inline void
+dma_set_tx_state(struct dma_tx_state *st, dma_cookie_t last, dma_cookie_t used, u32 residue)
+{
+       if (st) {
+               st->last = last;
+               st->used = used;
+               st->residue = residue;
+       }
+}
+
 enum dma_status dma_sync_wait(struct dma_chan *chan, dma_cookie_t cookie);
 #ifdef CONFIG_DMA_ENGINE
 enum dma_status dma_wait_for_async_tx(struct dma_async_tx_descriptor *tx);