Merge tag 'dmaengine-4.19-rc1' of git://git.infradead.org/users/vkoul/slave-dma
[muen/linux.git] / drivers / dma / pl330.c
index de0957fe966821beb79ee1b75470a8834509ef44..88750a34e85987f352ef0e32ded6b22fb8f5115f 100644 (file)
@@ -1046,13 +1046,16 @@ static bool _start(struct pl330_thread *thrd)
 
                if (_state(thrd) == PL330_STATE_KILLING)
                        UNTIL(thrd, PL330_STATE_STOPPED)
+               /* fall through */
 
        case PL330_STATE_FAULTING:
                _stop(thrd);
+               /* fall through */
 
        case PL330_STATE_KILLING:
        case PL330_STATE_COMPLETING:
                UNTIL(thrd, PL330_STATE_STOPPED)
+               /* fall through */
 
        case PL330_STATE_STOPPED:
                return _trigger(thrd);
@@ -1779,8 +1782,6 @@ static inline void _free_event(struct pl330_thread *thrd, int ev)
 
 static void pl330_release_channel(struct pl330_thread *thrd)
 {
-       struct pl330_dmac *pl330;
-
        if (!thrd || thrd->free)
                return;
 
@@ -1789,8 +1790,6 @@ static void pl330_release_channel(struct pl330_thread *thrd)
        dma_pl330_rqcb(thrd->req[1 - thrd->lstenq].desc, PL330_ERR_ABORT);
        dma_pl330_rqcb(thrd->req[thrd->lstenq].desc, PL330_ERR_ABORT);
 
-       pl330 = thrd->dmac;
-
        _free_event(thrd, thrd->ev);
        thrd->free = true;
 }
@@ -2257,13 +2256,14 @@ static int pl330_terminate_all(struct dma_chan *chan)
 
        pm_runtime_get_sync(pl330->ddma.dev);
        spin_lock_irqsave(&pch->lock, flags);
+
        spin_lock(&pl330->lock);
        _stop(pch->thread);
-       spin_unlock(&pl330->lock);
-
        pch->thread->req[0].desc = NULL;
        pch->thread->req[1].desc = NULL;
        pch->thread->req_running = -1;
+       spin_unlock(&pl330->lock);
+
        power_down = pch->active;
        pch->active = false;