nvgpu: gpu: Implement PMU therm channel get status

Currently nvgpu reads the temperature by reading the
NV_THERM_I2CS_SENSOR_00 register. Below are the issues
with current approach
    1) NV_THERM_I2CS_SENSOR_00 doesn't support
       fractional precision which is POR.
    2) It doesn't support negative temperatures which
       is required for Auto.
    3) It doesn't take into account the right POR
       sensor in VFE VBIOS tables.

From therm channel get status interface we can read the
current temperature from PMU.

NVBUG - 200549047

Change-Id: I2fb21926208876f3d3bebe3f2dee08edafedbc7d
Signed-off-by: rmylavarapu <rmylavarapu@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/2196224
Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Vijayakumar Subbu <vsubbu@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
rmylavarapu
2019-09-12 17:29:52 +05:30
committed by Alex Waterman
parent 59a1838d7d
commit 65a7896987
11 changed files with 164 additions and 26 deletions

View File

@@ -15,6 +15,7 @@
*/
#include <linux/debugfs.h>
#include <nvgpu/pmu/therm.h>
#include "os_linux.h"
@@ -24,10 +25,7 @@ static int therm_get_internal_sensor_curr_temp(void *data, u64 *val)
u32 readval;
int err;
if (!g->ops.therm.get_internal_sensor_curr_temp)
return -EINVAL;
err = g->ops.therm.get_internal_sensor_curr_temp(g, &readval);
err = nvgpu_therm_channel_get_curr_temp(g, &readval);
if (!err)
*val = readval;