From: Marek Szyprowski Date: Wed, 22 Apr 2015 13:34:43 +0000 (+0200) Subject: iommu: exynos: add system suspend/resume support X-Git-Tag: accepted/tizen/common/20161219.151653~1083 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=166f6049fe76c73e7d982937cef44d941896f24a;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 a7093df..6874333 100644 --- a/drivers/iommu/exynos-iommu.c +++ b/drivers/iommu/exynos-iommu.c @@ -695,6 +695,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", }, { }, @@ -705,6 +731,7 @@ static struct platform_driver exynos_sysmmu_driver __refdata = { .driver = { .name = "exynos-sysmmu", .of_match_table = sysmmu_of_match, + .pm = &sysmmu_pm_ops, } };