drm/tegra: Resume device frequency with Fmax

Avoid using suspend_freq to set the Fmax for the device, since it will
re-enable the actmon watermark interrupts again if the suspend_freq is
not zero in the devfreq_suspend_device call.

Since we want to make sure device is running at Fmax but avoid using
suspend_freq, we can forcelly override the resume_freq with the
scaling_max_freq to reach the same effect.

Bug 4271562

Signed-off-by: Johnny Liu <johnliu@nvidia.com>
Change-Id: Ia19a7ef9de14643abf1b174b6180e40a847de132
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/2974074
Reviewed-by: Mikko Perttunen <mperttunen@nvidia.com>
GVS: Gerrit_Virtual_Submit <buildbot_gerritrpt@nvidia.com>
This commit is contained in:
Johnny Liu
2023-09-05 10:01:45 +00:00
committed by mobile promotions
parent ebf51c43ae
commit 837b275df5
4 changed files with 8 additions and 4 deletions

View File

@@ -289,7 +289,6 @@ static int nvdec_devfreq_init(struct nvdec *nvdec)
if (IS_ERR(devfreq))
return PTR_ERR(devfreq);
devfreq->suspend_freq = max_rate;
nvdec->devfreq = devfreq;
return 0;
@@ -581,6 +580,8 @@ static __maybe_unused int nvdec_runtime_resume(struct device *dev)
goto disable;
}
/* Forcely set frequency as Fmax when device is resumed back */
nvdec->devfreq->resume_freq = nvdec->devfreq->scaling_max_freq;
err = devfreq_resume_device(nvdec->devfreq);
if (err < 0)
goto disable;

View File

@@ -213,7 +213,6 @@ static int nvenc_devfreq_init(struct nvenc *nvenc)
if (IS_ERR(devfreq))
return PTR_ERR(devfreq);
devfreq->suspend_freq = max_rate;
nvenc->devfreq = devfreq;
return 0;
@@ -471,6 +470,8 @@ static __maybe_unused int nvenc_runtime_resume(struct device *dev)
if (err < 0)
goto disable;
/* Forcely set frequency as Fmax when device is resumed back */
nvenc->devfreq->resume_freq = nvenc->devfreq->scaling_max_freq;
err = devfreq_resume_device(nvenc->devfreq);
if (err < 0)
goto disable;

View File

@@ -212,7 +212,6 @@ static int nvjpg_devfreq_init(struct nvjpg *nvjpg)
if (IS_ERR(devfreq))
return PTR_ERR(devfreq);
devfreq->suspend_freq = max_rate;
nvjpg->devfreq = devfreq;
return 0;
@@ -470,6 +469,8 @@ static __maybe_unused int nvjpg_runtime_resume(struct device *dev)
if (err < 0)
goto disable;
/* Forcely set frequency as Fmax when device is resumed back */
nvjpg->devfreq->resume_freq = nvjpg->devfreq->scaling_max_freq;
err = devfreq_resume_device(nvjpg->devfreq);
if (err < 0)
goto disable;

View File

@@ -231,7 +231,6 @@ static int vic_devfreq_init(struct vic *vic)
if (IS_ERR(devfreq))
return PTR_ERR(devfreq);
devfreq->suspend_freq = max_rate;
vic->devfreq = devfreq;
return 0;
@@ -528,6 +527,8 @@ static int __maybe_unused vic_runtime_resume(struct device *dev)
if (err < 0)
goto assert;
/* Forcely set frequency as Fmax when device is resumed back */
vic->devfreq->resume_freq = vic->devfreq->scaling_max_freq;
err = devfreq_resume_device(vic->devfreq);
if (err < 0)
goto assert;