dma: ste_dma40: Fixup system suspend/resume
Make sure to handle register context save/restore when needed from system PM callbacks. Previously we solely trusted the device to reside in in-active state while the system suspend callback were invoked, which is just too optimistic. Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org> Acked-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Vinod Koul <vinod.koul@intel.com>
This commit is contained in:
parent
123e4ca172
commit
c906a3ec45
1 changed files with 10 additions and 3 deletions
|
@ -2945,7 +2945,11 @@ static int dma40_suspend(struct device *dev)
|
||||||
{
|
{
|
||||||
struct platform_device *pdev = to_platform_device(dev);
|
struct platform_device *pdev = to_platform_device(dev);
|
||||||
struct d40_base *base = platform_get_drvdata(pdev);
|
struct d40_base *base = platform_get_drvdata(pdev);
|
||||||
int ret = 0;
|
int ret;
|
||||||
|
|
||||||
|
ret = pm_runtime_force_suspend(dev);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
if (base->lcpa_regulator)
|
if (base->lcpa_regulator)
|
||||||
ret = regulator_disable(base->lcpa_regulator);
|
ret = regulator_disable(base->lcpa_regulator);
|
||||||
|
@ -2958,11 +2962,14 @@ static int dma40_resume(struct device *dev)
|
||||||
struct d40_base *base = platform_get_drvdata(pdev);
|
struct d40_base *base = platform_get_drvdata(pdev);
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
if (base->lcpa_regulator)
|
if (base->lcpa_regulator) {
|
||||||
ret = regulator_enable(base->lcpa_regulator);
|
ret = regulator_enable(base->lcpa_regulator);
|
||||||
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return pm_runtime_force_resume(dev);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_PM
|
#ifdef CONFIG_PM
|
||||||
|
|
Loading…
Add table
Reference in a new issue