[9610] ASoC: Changed the sequence in which ABOX enters suspend
authorShinHyung <s47.kang@samsung.com>
Tue, 19 Jun 2018 08:32:26 +0000 (17:32 +0900)
committerYoungmin Nam <youngmin.nam@samsung.com>
Tue, 3 Jul 2018 07:01:28 +0000 (16:01 +0900)
Change-Id: I4e9518c79c20a93d5ebafccb81a0053f44cfd69d
Signed-off-by: ShinHyung <s47.kang@samsung.com>
arch/arm64/boot/dts/exynos/exynos9610-sysmmu.dtsi
drivers/soc/samsung/exynos-pd.c
sound/soc/samsung/abox/abox.c

index 8a1f78f2db7dab67720be07ba43e661a0c29fdf7..e71cd9adcc589efba6cb5f1a4d0a081cb764ca63 100644 (file)
                clock-names = "aclk";
                clocks = <&clock GATE_SMMU_ABOX_QCH>;
                port-name = "ABox";
+               sysmmu,hold-rpm-on-boot;
                sysmmu,no-suspend;
                sysmmu,no-rpm-control;
                sysmmu,tlb_property =
index 8e278da7a388784f0ac2eeff17663c07f022c3e6..fdc8a6a027dded79513d3f1b809de833c3a37565 100644 (file)
@@ -16,6 +16,8 @@
 #include <soc/samsung/bts.h>
 #include <soc/samsung/cal-if.h>
 #include <linux/apm-exynos.h>
+#include <sound/samsung/abox.h>
+
 struct exynos_pm_domain *exynos_pd_lookup_name(const char *domain_name)
 {
        struct exynos_pm_domain *exypd = NULL;
@@ -88,6 +90,9 @@ static void exynos_pd_power_off_pre(struct exynos_pm_domain *pd)
        if(cal_pd_status(pd->cal_pdid) && pd->bcm)
                bcm_pd_sync(pd->bcm, false);
 #endif
+
+       if (!strcmp(pd->name, "pd-dispaud"))
+               abox_poweroff();
 }
 
 static void exynos_pd_power_off_post(struct exynos_pm_domain *pd)
index 05e3a1c6919153b6b3b8836607f2c8847c42c65d..d221fba283a7dfa6858082a29423f452653163aa 100644 (file)
@@ -33,7 +33,7 @@
 #include <sound/pcm_params.h>
 #include <sound/samsung/abox.h>
 #include <sound/samsung/vts.h>
-//#include <linux/exynos_iovmm.h>
+#include <linux/exynos_iovmm.h>
 
 #include <soc/samsung/exynos-pmu.h>
 #include <soc/samsung/exynos-itmon.h>
@@ -5626,15 +5626,14 @@ void abox_poweroff(void)
 
        abox_disable(dev);
 
-       //exynos_sysmmu_control(dev, false);
+       exynos_sysmmu_control(dev, false);
 }
 
 static int abox_runtime_suspend(struct device *dev)
 {
        dev_dbg(dev, "%s\n", __func__);
 
-       //p_abox_data->enabled = false;
-       abox_disable(dev);
+       p_abox_data->enabled = false;
 
        return 0;
 }
@@ -5643,7 +5642,7 @@ static int abox_runtime_resume(struct device *dev)
 {
        dev_dbg(dev, "%s\n", __func__);
 
-       //exynos_sysmmu_control(dev, true);
+       exynos_sysmmu_control(dev, true);
 
        return abox_enable(dev);
 }