diff options
author | Vijayakumar <vsubbu@nvidia.com> | 2016-10-27 09:35:13 -0400 |
---|---|---|
committer | Deepak Nibade <dnibade@nvidia.com> | 2016-12-27 04:56:52 -0500 |
commit | 2ebf09920755daeb7e1be71bf317f88ec9d533e1 (patch) | |
tree | c9a376f8fb5f11f0dc39587992b229e1e6b06491 /drivers/gpu/nvgpu/gp106/therm_gp106.c | |
parent | 1f0a38797fbd86b5f5e7f6b43d1c81b2028a82b0 (diff) |
gpu: nvgpu: handle vf curve change due to temp
JIRA DNVGPU-129
1)send 150'c as default temperature to PMU so that PMU will
start reading temperature from sensor to evaluate VFE equations
2)Send GP106's temp min and max range for GPU sensor so that PMU
will read right temperature
3)PMU will send event whenever temperature goes above +ve hysteresis
or goes below -ve hysteresis. Call the Arbiter's VF re-evaluation
function in the event handler.
Change-Id: Iaebc0655f60e17998f0864824095f4fc8bba5b62
Signed-off-by: Vijayakumar <vsubbu@nvidia.com>
Reviewed-on: http://git-master/r/1245392
(cherry picked from commit 7e59d0faa8cee6aace5524c724001e88248b2da7)
Reviewed-on: http://git-master/r/1268062
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Tested-by: Thomas Fleury <tfleury@nvidia.com>
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gp106/therm_gp106.c')
-rw-r--r-- | drivers/gpu/nvgpu/gp106/therm_gp106.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gp106/therm_gp106.c b/drivers/gpu/nvgpu/gp106/therm_gp106.c index 15aff89c..7bdf0b9e 100644 --- a/drivers/gpu/nvgpu/gp106/therm_gp106.c +++ b/drivers/gpu/nvgpu/gp106/therm_gp106.c | |||
@@ -15,6 +15,12 @@ | |||
15 | #include <linux/debugfs.h> | 15 | #include <linux/debugfs.h> |
16 | #include "hw_therm_gp106.h" | 16 | #include "hw_therm_gp106.h" |
17 | 17 | ||
18 | static void gp106_get_internal_sensor_limits(s32 *max_24_8, s32 *min_24_8) | ||
19 | { | ||
20 | *max_24_8 = (0x87 << 8); | ||
21 | *min_24_8 = ((-216) << 8); | ||
22 | } | ||
23 | |||
18 | static int gp106_get_internal_sensor_curr_temp(struct gk20a *g, u32 *temp_f24_8) | 24 | static int gp106_get_internal_sensor_curr_temp(struct gk20a *g, u32 *temp_f24_8) |
19 | { | 25 | { |
20 | int err = 0; | 26 | int err = 0; |
@@ -117,4 +123,6 @@ void gp106_init_therm_ops(struct gpu_ops *gops) { | |||
117 | #endif | 123 | #endif |
118 | gops->therm.elcg_init_idle_filters = gp106_elcg_init_idle_filters; | 124 | gops->therm.elcg_init_idle_filters = gp106_elcg_init_idle_filters; |
119 | gops->therm.get_internal_sensor_curr_temp = gp106_get_internal_sensor_curr_temp; | 125 | gops->therm.get_internal_sensor_curr_temp = gp106_get_internal_sensor_curr_temp; |
126 | gops->therm.get_internal_sensor_limits = | ||
127 | gp106_get_internal_sensor_limits; | ||
120 | } | 128 | } |