Message ID | 1581940891-2376-1-git-send-email-mansur@codeaurora.org |
---|---|
State | New |
Headers | show |
Series | venus: core: remove CNOC voting while device suspend | expand |
Hi Mansur, The patch looks fine and correct but the description should be better. On 2/17/20 2:01 PM, Mansur Alisha Shaik wrote: > video driver is voting for CNOC during probe and not clear > while device suspend. Because of which XO shutdown is > happing(BCM42: VALID: 0x1 VOTE_X: 0x0000 VOTE_Y: 0x0004). > > So, clearing CNOC voting while device suspend. Maybe something like this ? The Venus driver is voting Configuration NoC during .probe but not clear voting in .suspend. As a consequence the whole device could leak energy while in suspend. Correct this by moving voting in .resume and unvoting in .suspend. > > Signed-off-by: Mansur Alisha Shaik <mansur@codeaurora.org> > --- > drivers/media/platform/qcom/venus/core.c | 12 ++++++++---- > 1 file changed, 8 insertions(+), 4 deletions(-) > > diff --git a/drivers/media/platform/qcom/venus/core.c b/drivers/media/platform/qcom/venus/core.c > index e7995cb..153effe 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); > } > >
diff --git a/drivers/media/platform/qcom/venus/core.c b/drivers/media/platform/qcom/venus/core.c index e7995cb..153effe 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); }
video driver is voting for CNOC during probe and not clear while device suspend. Because of which XO shutdown is happing(BCM42: VALID: 0x1 VOTE_X: 0x0000 VOTE_Y: 0x0004). So, clearing CNOC voting while device suspend. Signed-off-by: Mansur Alisha Shaik <mansur@codeaurora.org> --- drivers/media/platform/qcom/venus/core.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-)