From bce1425f503877dc7d0002638e31b126f730366d Mon Sep 17 00:00:00 2001 From: Finley Xiao Date: Fri, 5 Jan 2018 16:43:14 +0800 Subject: [PATCH] soc: rockchip: power-domain: export qos save and restore Change-Id: I89af4462f561fa06ace7761e20cf522b5954aaed Signed-off-by: Finley Xiao Signed-off-by: Elaine Zhang --- drivers/soc/rockchip/pm_domains.c | 46 +++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/drivers/soc/rockchip/pm_domains.c b/drivers/soc/rockchip/pm_domains.c index 727af107e6d3..b285f938b540 100644 --- a/drivers/soc/rockchip/pm_domains.c +++ b/drivers/soc/rockchip/pm_domains.c @@ -268,6 +268,52 @@ static int rockchip_pmu_restore_qos(struct rockchip_pm_domain *pd) return 0; } +int rockchip_save_qos(struct device *dev) +{ + struct generic_pm_domain *genpd; + struct rockchip_pm_domain *pd; + int ret; + + if (IS_ERR_OR_NULL(dev)) + return -EINVAL; + + if (IS_ERR_OR_NULL(dev->pm_domain)) + return -EINVAL; + + genpd = pd_to_genpd(dev->pm_domain); + pd = to_rockchip_pd(genpd); + + mutex_lock(&pd->pmu->mutex); + ret = rockchip_pmu_save_qos(pd); + mutex_unlock(&pd->pmu->mutex); + + return ret; +} +EXPORT_SYMBOL(rockchip_save_qos); + +int rockchip_restore_qos(struct device *dev) +{ + struct generic_pm_domain *genpd; + struct rockchip_pm_domain *pd; + int ret; + + if (IS_ERR_OR_NULL(dev)) + return -EINVAL; + + if (IS_ERR_OR_NULL(dev->pm_domain)) + return -EINVAL; + + genpd = pd_to_genpd(dev->pm_domain); + pd = to_rockchip_pd(genpd); + + mutex_lock(&pd->pmu->mutex); + ret = rockchip_pmu_restore_qos(pd); + mutex_unlock(&pd->pmu->mutex); + + return ret; +} +EXPORT_SYMBOL(rockchip_restore_qos); + static bool rockchip_pmu_domain_is_on(struct rockchip_pm_domain *pd) { struct rockchip_pmu *pmu = pd->pmu;