diff options
author | Jassi Brar <jaswinder.singh@linaro.org> | 2013-02-13 05:43:14 -0500 |
---|---|---|
committer | Vinod Koul <vinod.koul@intel.com> | 2013-04-15 00:21:15 -0400 |
commit | 30fb980b99d3896bd891e56fec22191d40007efc (patch) | |
tree | dd52a62bad0a1d7fab1020fe2b3b05acce9e30a8 /drivers/dma/pl330.c | |
parent | 41ef2d5678d83af030125550329b6ae8b74618fa (diff) |
DMA: PL330: allow submitting 2 requests at a time
Fix the logic to allow mc programming of second transfer after first
has been done, by removing immediate return upon success and iterating
until we detect QFull or DMAC dying.
Reported-by: Alvaro Moran <dirac3000@gmail.com>
Tested-by: Alvaro Moran <dirac3000@gmail.com>
Signed-off-by: Jassi Brar <jaswinder.singh@linaro.org>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Diffstat (limited to 'drivers/dma/pl330.c')
-rw-r--r-- | drivers/dma/pl330.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/dma/pl330.c b/drivers/dma/pl330.c index 5dbc5946c4c3..31619c08a760 100644 --- a/drivers/dma/pl330.c +++ b/drivers/dma/pl330.c | |||
@@ -2288,13 +2288,12 @@ static inline void fill_queue(struct dma_pl330_chan *pch) | |||
2288 | 2288 | ||
2289 | /* If already submitted */ | 2289 | /* If already submitted */ |
2290 | if (desc->status == BUSY) | 2290 | if (desc->status == BUSY) |
2291 | break; | 2291 | continue; |
2292 | 2292 | ||
2293 | ret = pl330_submit_req(pch->pl330_chid, | 2293 | ret = pl330_submit_req(pch->pl330_chid, |
2294 | &desc->req); | 2294 | &desc->req); |
2295 | if (!ret) { | 2295 | if (!ret) { |
2296 | desc->status = BUSY; | 2296 | desc->status = BUSY; |
2297 | break; | ||
2298 | } else if (ret == -EAGAIN) { | 2297 | } else if (ret == -EAGAIN) { |
2299 | /* QFull or DMAC Dying */ | 2298 | /* QFull or DMAC Dying */ |
2300 | break; | 2299 | break; |