dmaengine: PL08x: get rid of pl08x_prep_channel_resources
authorRussell King <rmk+kernel@arm.linux.org.uk>
Sat, 26 May 2012 14:43:00 +0000 (15:43 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sun, 1 Jul 2012 13:16:05 +0000 (14:16 +0100)
This function is now unnecessary; we can move its internals inline
instead.

Acked-by: Linus Walleij <linus.walleij@linaro.org>
Tested-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
drivers/dma/amba-pl08x.c

index c42c7ef..9297240 100644 (file)
@@ -1352,25 +1352,6 @@ static void pl08x_issue_pending(struct dma_chan *chan)
        spin_unlock_irqrestore(&plchan->vc.lock, flags);
 }
 
-static int pl08x_prep_channel_resources(struct pl08x_dma_chan *plchan,
-                                       struct pl08x_txd *txd)
-{
-       struct pl08x_driver_data *pl08x = plchan->host;
-       int num_llis;
-
-       num_llis = pl08x_fill_llis_for_desc(pl08x, txd);
-       if (!num_llis) {
-               unsigned long flags;
-
-               spin_lock_irqsave(&plchan->vc.lock, flags);
-               pl08x_free_txd(pl08x, txd);
-               spin_unlock_irqrestore(&plchan->vc.lock, flags);
-
-               return -EINVAL;
-       }
-       return 0;
-}
-
 static struct pl08x_txd *pl08x_get_txd(struct pl08x_dma_chan *plchan)
 {
        struct pl08x_txd *txd = kzalloc(sizeof(*txd), GFP_NOWAIT);
@@ -1430,9 +1411,11 @@ static struct dma_async_tx_descriptor *pl08x_prep_dma_memcpy(
                txd->cctl |= pl08x_select_bus(pl08x->mem_buses,
                                              pl08x->mem_buses);
 
-       ret = pl08x_prep_channel_resources(plchan, txd);
-       if (ret)
+       ret = pl08x_fill_llis_for_desc(plchan->host, txd);
+       if (!ret) {
+               pl08x_free_txd(pl08x, txd);
                return NULL;
+       }
 
        return vchan_tx_prep(&plchan->vc, &txd->vd, flags);
 }
@@ -1546,9 +1529,12 @@ static struct dma_async_tx_descriptor *pl08x_prep_slave_sg(
                }
        }
 
-       ret = pl08x_prep_channel_resources(plchan, txd);
-       if (ret)
+       ret = pl08x_fill_llis_for_desc(plchan->host, txd);
+       if (!ret) {
+               pl08x_release_mux(plchan);
+               pl08x_free_txd(pl08x, txd);
                return NULL;
+       }
 
        return vchan_tx_prep(&plchan->vc, &txd->vd, flags);
 }