From 6b448209a4d953a8e5b6f652d43d5d11b7b79131 Mon Sep 17 00:00:00 2001 From: Russell King Date: Sat, 26 May 2012 15:43:00 +0100 Subject: [PATCH] --- yaml --- r: 321164 b: refs/heads/master c: aa4afb754d42be064ae649b74a599b9d9d04ac57 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/dma/amba-pl08x.c | 32 +++++++++----------------------- 2 files changed, 10 insertions(+), 24 deletions(-) diff --git a/[refs] b/[refs] index 1298482e27ed..ae4b289ebc82 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 06e885b735717d1074dec13ae8b8d15edcd63255 +refs/heads/master: aa4afb754d42be064ae649b74a599b9d9d04ac57 diff --git a/trunk/drivers/dma/amba-pl08x.c b/trunk/drivers/dma/amba-pl08x.c index c42c7ef6b93a..9297240cae3a 100644 --- a/trunk/drivers/dma/amba-pl08x.c +++ b/trunk/drivers/dma/amba-pl08x.c @@ -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); }