From: Marek Szyprowski Date: Wed, 22 Apr 2015 13:34:43 +0000 (+0200) Subject: iommu: exynos: add system suspend/resume support X-Git-Tag: submit/tizen/20150512.061825~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=02b73fe4c6af4809353077ccbce2bcfa3d34277d;p=platform%2Fkernel%2Flinux-exynos.git iommu: exynos: add system suspend/resume support Signed-off-by: Marek Szyprowski --- diff --git a/drivers/iommu/exynos-iommu.c b/drivers/iommu/exynos-iommu.c index a361cc89bb84..0c4e8fcca334 100644 --- a/drivers/iommu/exynos-iommu.c +++ b/drivers/iommu/exynos-iommu.c @@ -600,6 +600,32 @@ static int __init exynos_sysmmu_probe(struct platform_device *pdev) return 0; } +#ifdef CONFIG_PM_SLEEP +static int exynos_sysmmu_suspend(struct device *dev) +{ + struct sysmmu_drvdata *data = dev_get_drvdata(dev); + + dev_dbg(dev, "suspend\n"); + if (is_sysmmu_active(data)) + __sysmmu_disable_nocount(data); + return 0; +} + +static int exynos_sysmmu_resume(struct device *dev) +{ + struct sysmmu_drvdata *data = dev_get_drvdata(dev); + + dev_dbg(dev, "resume\n"); + if (is_sysmmu_active(data)) + __sysmmu_enable_nocount(data); + return 0; +} +#endif + +static const struct dev_pm_ops sysmmu_pm_ops = { + SET_LATE_SYSTEM_SLEEP_PM_OPS(exynos_sysmmu_suspend, exynos_sysmmu_resume) +}; + static const struct of_device_id sysmmu_of_match[] __initconst = { { .compatible = "samsung,exynos-sysmmu", }, { }, @@ -610,6 +636,7 @@ static struct platform_driver exynos_sysmmu_driver __refdata = { .driver = { .name = "exynos-sysmmu", .of_match_table = sysmmu_of_match, + .pm = &sysmmu_pm_ops, } };