diff options
Diffstat (limited to 'drivers/dma/k3dma.c')
| -rw-r--r-- | drivers/dma/k3dma.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/drivers/dma/k3dma.c b/drivers/dma/k3dma.c index 01e25c68dd5a..01d2a750a621 100644 --- a/drivers/dma/k3dma.c +++ b/drivers/dma/k3dma.c | |||
| @@ -223,7 +223,6 @@ static irqreturn_t k3_dma_int_handler(int irq, void *dev_id) | |||
| 223 | if (c && (tc1 & BIT(i))) { | 223 | if (c && (tc1 & BIT(i))) { |
| 224 | spin_lock_irqsave(&c->vc.lock, flags); | 224 | spin_lock_irqsave(&c->vc.lock, flags); |
| 225 | vchan_cookie_complete(&p->ds_run->vd); | 225 | vchan_cookie_complete(&p->ds_run->vd); |
| 226 | WARN_ON_ONCE(p->ds_done); | ||
| 227 | p->ds_done = p->ds_run; | 226 | p->ds_done = p->ds_run; |
| 228 | p->ds_run = NULL; | 227 | p->ds_run = NULL; |
| 229 | spin_unlock_irqrestore(&c->vc.lock, flags); | 228 | spin_unlock_irqrestore(&c->vc.lock, flags); |
| @@ -274,13 +273,14 @@ static int k3_dma_start_txd(struct k3_dma_chan *c) | |||
| 274 | */ | 273 | */ |
| 275 | list_del(&ds->vd.node); | 274 | list_del(&ds->vd.node); |
| 276 | 275 | ||
| 277 | WARN_ON_ONCE(c->phy->ds_run); | ||
| 278 | WARN_ON_ONCE(c->phy->ds_done); | ||
| 279 | c->phy->ds_run = ds; | 276 | c->phy->ds_run = ds; |
| 277 | c->phy->ds_done = NULL; | ||
| 280 | /* start dma */ | 278 | /* start dma */ |
| 281 | k3_dma_set_desc(c->phy, &ds->desc_hw[0]); | 279 | k3_dma_set_desc(c->phy, &ds->desc_hw[0]); |
| 282 | return 0; | 280 | return 0; |
| 283 | } | 281 | } |
| 282 | c->phy->ds_run = NULL; | ||
| 283 | c->phy->ds_done = NULL; | ||
| 284 | return -EAGAIN; | 284 | return -EAGAIN; |
| 285 | } | 285 | } |
| 286 | 286 | ||
| @@ -722,11 +722,7 @@ static int k3_dma_terminate_all(struct dma_chan *chan) | |||
| 722 | k3_dma_free_desc(&p->ds_run->vd); | 722 | k3_dma_free_desc(&p->ds_run->vd); |
| 723 | p->ds_run = NULL; | 723 | p->ds_run = NULL; |
| 724 | } | 724 | } |
| 725 | if (p->ds_done) { | 725 | p->ds_done = NULL; |
| 726 | k3_dma_free_desc(&p->ds_done->vd); | ||
| 727 | p->ds_done = NULL; | ||
| 728 | } | ||
| 729 | |||
| 730 | } | 726 | } |
| 731 | spin_unlock_irqrestore(&c->vc.lock, flags); | 727 | spin_unlock_irqrestore(&c->vc.lock, flags); |
| 732 | vchan_dma_desc_free_list(&c->vc, &head); | 728 | vchan_dma_desc_free_list(&c->vc, &head); |
