diff options
author | Deepak Nibade <dnibade@nvidia.com> | 2016-06-08 08:22:30 -0400 |
---|---|---|
committer | Terje Bergstrom <tbergstrom@nvidia.com> | 2016-06-27 12:14:04 -0400 |
commit | 61d4e27607c0ce4080ef02daeb09200181662337 (patch) | |
tree | 3dd3e7428e1d9c5c32c29062f96de4fa1e77d054 /drivers/gpu/nvgpu/gk20a/platform_gk20a.h | |
parent | a445a678bcf480bde01ab784ab050096fd5725eb (diff) |
gpu: nvgpu: add QoS notifier for common clk framework
Define specific QoS notifier for common clk framework
and protect it with CONFIG_COMMON_CLK
This new API will first get min/max requirements from
pm_qos and set min/max freq values in devfreq
A call to update_devfreq() will then ensure that
new estimated frequency is clipped appropriately
between min and max values
This also ensures that frequency is set along with
all the book-keeping
Add below platform specific notifier callback and use it
with pm_qos_add_notifier()
int (*qos_notify)()
If qos_notify is set, then only register the callback
We currently support only one qos_id which is treated
as notifier for min frequency
Remove dependency on qos_id, and use appropriate QoS
APIs like pm_qos_read_min/max_bound()
Store devfreq's min/max frequency in struct gk20a
for reference
Bug 1772462
Change-Id: I63d6d17451d19c9d376b67df7db775b38929287d
Signed-off-by: Deepak Nibade <dnibade@nvidia.com>
Reviewed-on: http://git-master/r/1161161
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Tested-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/platform_gk20a.h')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/platform_gk20a.h | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/platform_gk20a.h b/drivers/gpu/nvgpu/gk20a/platform_gk20a.h index 66d97915..a753201b 100644 --- a/drivers/gpu/nvgpu/gk20a/platform_gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/platform_gk20a.h | |||
@@ -181,10 +181,11 @@ struct gk20a_platform { | |||
181 | * this governor to be used in scaling */ | 181 | * this governor to be used in scaling */ |
182 | const char *devfreq_governor; | 182 | const char *devfreq_governor; |
183 | 183 | ||
184 | /* Quality of service id. If this is set, the scaling routines | 184 | /* Quality of service notifier callback. If this is set, the scaling |
185 | * will register a callback to id. Each time we receive a new value, | 185 | * routines will register a callback to Qos. Each time we receive |
186 | * the postscale callback gets called. */ | 186 | * a new value, this callback gets called. */ |
187 | int qos_id; | 187 | int (*qos_notify)(struct notifier_block *nb, |
188 | unsigned long n, void *p); | ||
188 | 189 | ||
189 | /* Called as part of debug dump. If the gpu gets hung, this function | 190 | /* Called as part of debug dump. If the gpu gets hung, this function |
190 | * is responsible for delivering all necessary debug data of other | 191 | * is responsible for delivering all necessary debug data of other |