summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMansur Alisha Shaik <mansur@codeaurora.org>2020-04-10 09:17:25 +0200
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>2020-04-14 12:39:14 +0200
commit07f8f22a33a9e3e9955e24a84e2f856dcc8c31c4 (patch)
tree835f7280eb71c85d8691b130821a2098648e0726
parent0f61e171e4bbac4595175070c75707f1b12f4e37 (diff)
downloadlinux-07f8f22a33a9e3e9955e24a84e2f856dcc8c31c4.tar.gz
linux-07f8f22a33a9e3e9955e24a84e2f856dcc8c31c4.zip
media: venus: core: remove CNOC voting while device suspend
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>
-rw-r--r--drivers/media/platform/qcom/venus/core.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/media/platform/qcom/venus/core.c b/drivers/media/platform/qcom/venus/core.c
index 12688f04d32c..4395cb96fb04 100644
--- a/drivers/media/platform/qcom/venus/core.c
+++ b/drivers/media/platform/qcom/venus/core.c
@@ -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);
}