media: venus: core: remove CNOC voting while device suspend
authorMansur Alisha Shaik <mansur@codeaurora.org>
Fri, 10 Apr 2020 07:17:25 +0000 (09:17 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Tue, 14 Apr 2020 10:39:14 +0000 (12:39 +0200)
The Venus driver is voting Configuration NoC during .probe but not clear
voting in .suspend. Because of this NoC is up during shutdown also. As a
consequence the whole device could leak energy while in .suspend.

So correct this by moving voting in .resume and unvoting
in .suspend

Signed-off-by: Mansur Alisha Shaik <mansur@codeaurora.org>
Signed-off-by: Stanimir Varbanov <stanimir.varbanov@linaro.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/media/platform/qcom/venus/core.c

index 12688f0..4395cb9 100644 (file)
@@ -244,10 +244,6 @@ static int venus_probe(struct platform_device *pdev)
        if (ret)
                return ret;
 
-       ret = icc_set_bw(core->cpucfg_path, 0, kbps_to_icc(1000));
-       if (ret)
-               return ret;
-
        ret = hfi_create(core, &venus_core_ops);
        if (ret)
                return ret;
@@ -353,6 +349,10 @@ static __maybe_unused int venus_runtime_suspend(struct device *dev)
        if (ret)
                return ret;
 
+       ret = icc_set_bw(core->cpucfg_path, 0, 0);
+       if (ret)
+               return ret;
+
        if (pm_ops->core_power)
                ret = pm_ops->core_power(dev, POWER_OFF);
 
@@ -371,6 +371,10 @@ static __maybe_unused int venus_runtime_resume(struct device *dev)
                        return ret;
        }
 
+       ret = icc_set_bw(core->cpucfg_path, 0, kbps_to_icc(1000));
+       if (ret)
+               return ret;
+
        return hfi_core_resume(core, false);
 }