dmaengine: intel_mid_dma: move pm_runtime_put
authorAdrian Hunter <adrian.hunter@intel.com>
Tue, 31 Jan 2012 10:49:00 +0000 (12:49 +0200)
committerVinod Koul <vinod.koul@linux.intel.com>
Wed, 22 Feb 2012 12:41:48 +0000 (18:11 +0530)
Move pm_runtime_put() to the end of intel_mid_dma_free_chan_resources()
because there is no sense in allowing runtime suspend while the driver
is still accessing the device.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Signed-off-by: Vinod Koul <vinod.koul@linux.intel.com>
drivers/dma/intel_mid_dma.c

index 512e2ab3febb5560385f04f072606f1ca5bf6e1b..923476d74a5d206fcf497ba43a2471446c26c7b5 100644 (file)
@@ -832,7 +832,6 @@ static void intel_mid_dma_free_chan_resources(struct dma_chan *chan)
                /*trying to free ch in use!!!!!*/
                pr_err("ERR_MDMA: trying to free ch in use\n");
        }
-       pm_runtime_put(&mid->pdev->dev);
        spin_lock_bh(&midc->lock);
        midc->descs_allocated = 0;
        list_for_each_entry_safe(desc, _desc, &midc->active_list, desc_node) {
@@ -853,6 +852,7 @@ static void intel_mid_dma_free_chan_resources(struct dma_chan *chan)
        /* Disable CH interrupts */
        iowrite32(MASK_INTR_REG(midc->ch_id), mid->dma_base + MASK_BLOCK);
        iowrite32(MASK_INTR_REG(midc->ch_id), mid->dma_base + MASK_ERR);
+       pm_runtime_put(&mid->pdev->dev);
 }
 
 /**