summaryrefslogtreecommitdiffstats
path: root/drivers/dma
diff options
context:
space:
mode:
authorVinod Koul <vinod.koul@intel.com>2011-06-09 22:07:05 +0530
committerVinod Koul <vinod.koul@intel.com>2011-06-09 22:07:05 +0530
commit4b28d81a7ed82b906f1fdec0133d597b9cf57f85 (patch)
treefc722c2bafb704c0db35599392d8f8dddbb4e36d /drivers/dma
parent114df7d66efd5c23561782f38e97c48fb30d4f5d (diff)
parent626a96db11698119a67eeda130488e869aa6f14e (diff)
Merge remote branch 'gpio/ep93xx-dma' into next
Diffstat (limited to 'drivers/dma')
-rw-r--r--drivers/dma/shdma.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/dma/shdma.c b/drivers/dma/shdma.c
index 636e40925b1..2a638f9f09a 100644
--- a/drivers/dma/shdma.c
+++ b/drivers/dma/shdma.c
@@ -343,7 +343,7 @@ static int sh_dmae_alloc_chan_resources(struct dma_chan *chan)
dmae_set_dmars(sh_chan, cfg->mid_rid);
dmae_set_chcr(sh_chan, cfg->chcr);
- } else if ((sh_dmae_readl(sh_chan, CHCR) & 0xf00) != 0x400) {
+ } else {
dmae_init(sh_chan);
}
@@ -1144,6 +1144,8 @@ static int __init sh_dmae_probe(struct platform_device *pdev)
/* platform data */
shdev->pdata = pdata;
+ platform_set_drvdata(pdev, shdev);
+
pm_runtime_enable(&pdev->dev);
pm_runtime_get_sync(&pdev->dev);
@@ -1256,7 +1258,6 @@ static int __init sh_dmae_probe(struct platform_device *pdev)
pm_runtime_put(&pdev->dev);
- platform_set_drvdata(pdev, shdev);
dma_async_device_register(&shdev->common);
return err;
@@ -1278,6 +1279,8 @@ rst_err:
if (dmars)
iounmap(shdev->dmars);
+
+ platform_set_drvdata(pdev, NULL);
emapdmars:
iounmap(shdev->chan_reg);
synchronize_rcu();
@@ -1316,6 +1319,8 @@ static int __exit sh_dmae_remove(struct platform_device *pdev)
iounmap(shdev->dmars);
iounmap(shdev->chan_reg);
+ platform_set_drvdata(pdev, NULL);
+
synchronize_rcu();
kfree(shdev);