Skip to contentSkip to conversation

intel_mid_dma: fix runtime pm issues

PATCH Applied [email protected] 2 participants 2 messages Mar 31, 2011 – Apr 1, 2011 dmaengine

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 intel_mid_dma: fix runtime pm issues

From: Kristen Carlson Accardi <[email protected]>

Use the correct api in probe to enable runtime pm for this driver. Additionally, do not just call legacy suspend for runtime_suspend, as this duplicates some work the pci core does for you.

---
 drivers/dma/intel_mid_dma.c |   17 +++++++++++++----
 1 files changed, 13 insertions(+), 4 deletions(-)
drivers/dma/intel_mid_dma.c +13 -4
index 798f46a..f153adf 100644
@@ -1292,8 +1292,7 @@ static int __devinit intel_mid_dma_probe(struct pci_dev *pdev,
 	if (err)
 		goto err_dma;
 
-	pm_runtime_set_active(&pdev->dev);
-	pm_runtime_enable(&pdev->dev);
+	pm_runtime_put_noidle(&pdev->dev);
 	pm_runtime_allow(&pdev->dev);
 	return 0;
 
@@ -1322,6 +1321,9 @@ err_enable_device:
 static void __devexit intel_mid_dma_remove(struct pci_dev *pdev)
 {
 	struct middma_device *device = pci_get_drvdata(pdev);
+
+	pm_runtime_get_noresume(&pdev->dev);
+	pm_runtime_forbid(&pdev->dev);
 	middma_shutdown(pdev);
 	pci_dev_put(pdev);
 	kfree(device);
@@ -1385,13 +1387,20 @@ int dma_resume(struct pci_dev *pci)
 static int dma_runtime_suspend(struct device *dev)
 {
 	struct pci_dev *pci_dev = to_pci_dev(dev);
-	return dma_suspend(pci_dev, PMSG_SUSPEND);
+	struct middma_device *device = pci_get_drvdata(pci_dev);
+
+	device->state = SUSPENDED;
+	return 0;
 }
 
 static int dma_runtime_resume(struct device *dev)
 {
 	struct pci_dev *pci_dev = to_pci_dev(dev);
-	return dma_resume(pci_dev);
+	struct middma_device *device = pci_get_drvdata(pci_dev);
+
+	device->state = RUNNING;
+	iowrite32(REG_BIT0, device->dma_base + DMA_CFG);
+	return 0;
 }
 
 static int dma_runtime_idle(struct device *dev)
Signature · 1 line
1.7.3.1
Applied
#1 lore raw
Quoted 11 lines · On Thu, 2011-03-31 at 11:02 -0700, [email protected] wrote:

From: Kristen Carlson Accardi <[email protected]>

Use the correct api in probe to enable runtime pm for this driver. Additionally, do not just call legacy suspend for runtime_suspend, as this duplicates some work the pci core does for you.

---
 drivers/dma/intel_mid_dma.c |   17 +++++++++++++----
 1 files changed, 13 insertions(+), 4 deletions(-)

Applied, Thanks

Signature · 1 line
~Vinod