commit: http://blackfin.uclinux.org/git/?p=linux-kernel;a=commitdiff;h=ef563fc46a58bbb960c5df62fe3dd7dcd0997e4f branch: http://blackfin.uclinux.org/git/?p=linux-kernel;a=shortlog;h=refs/heads/trunk
Signed-off-by: Sonic Zhang <[email protected]> Signed-off-by: Bob Liu <[email protected]> --- drivers/char/bfin-dma.c | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/char/bfin-dma.c b/drivers/char/bfin-dma.c index 49f5c5f..ff59c08 100644 --- a/drivers/char/bfin-dma.c +++ b/drivers/char/bfin-dma.c @@ -105,6 +105,9 @@ static inline unsigned long dsc_end(struct dmasg *sg) static irqreturn_t bfin_dma_irq(int irq, void *dev_id) { struct dma_state *state = dev_id; +#ifdef DMA_MMR_SIZE_32 + clear_dma_irqstat(state->chan_src); +#endif clear_dma_irqstat(state->chan_dst); put_user(1, state->user_done); complete(&state->c); @@ -158,8 +161,8 @@ static int bdi_free_dma(struct dma_state *state) atomic_dec(&state->status); return -EBUSY; } - free_dma(state->chan_src); free_dma(state->chan_dst); + free_dma(state->chan_src); atomic_sub(2, &state->status); return 0; } @@ -193,7 +196,7 @@ static int bdi_do_dma(struct dma_state *state, int async) flush_dcache_range(dsc_start(sg), dsc_end(sg)); flush_dcache_range((unsigned)sg, (unsigned)(sg + sizeof(*sg))); - if (!(sg->cfg & 0x7000)) + if (!(sg->cfg & DMAFLOW_LARGE)) break; sg = sg->next_desc_addr; } @@ -204,7 +207,7 @@ static int bdi_do_dma(struct dma_state *state, int async) invalidate_dcache_range(dsc_start(sg), dsc_end(sg)); flush_dcache_range((unsigned)sg, (unsigned)(sg + sizeof(*sg))); - if (!(sg->cfg & 0x7000)) + if (!(sg->cfg & DMAFLOW_LARGE)) break; sg = sg->next_desc_addr; }
_______________________________________________ Linux-kernel-commits mailing list [email protected] https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits
