diff options
author | Vinod Koul <vinod.koul@intel.com> | 2011-06-09 22:07:05 +0530 |
---|---|---|
committer | Vinod Koul <vinod.koul@intel.com> | 2011-06-09 22:07:05 +0530 |
commit | 4b28d81a7ed82b906f1fdec0133d597b9cf57f85 (patch) | |
tree | fc722c2bafb704c0db35599392d8f8dddbb4e36d /drivers/dma | |
parent | 114df7d66efd5c23561782f38e97c48fb30d4f5d (diff) | |
parent | 626a96db11698119a67eeda130488e869aa6f14e (diff) |
Merge remote branch 'gpio/ep93xx-dma' into next
Diffstat (limited to 'drivers/dma')
-rw-r--r-- | drivers/dma/shdma.c | 9 |
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); |