gpu: nvgpu: skip power device programming if missing

Monitoring INA3221 is currently missing on some customer
designs. If power device is missing, skip programming
of power device and power policy in PMU. Also clear
related features in GPU characterictics (get voltage,
current and power features are not supported).

Bug 1903258

Change-Id: Ibd9d89e5833afb350c52b76527c54923055aee5e
Signed-off-by: Thomas Fleury <tfleury@nvidia.com>
Reviewed-on: http://git-master/r/1459919
(cherry picked from commit e7e21c451843bddb8e8ac9e3db3b1d4b4a4c272c)
Reviewed-on: http://git-master/r/1463105
Reviewed-by: svccoveritychecker <svccoveritychecker@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
This commit is contained in:
Thomas Fleury
2017-04-10 13:37:40 -07:00
committed by mobile promotions
parent 90a249b598
commit 0a6b585dbf
3 changed files with 20 additions and 0 deletions

View File

@@ -207,6 +207,13 @@ int gp106_init_gpu_characteristics(struct gk20a *g)
NVGPU_GPU_FLAGS_SUPPORT_DEVICE_EVENTS | NVGPU_GPU_FLAGS_SUPPORT_DEVICE_EVENTS |
NVGPU_GPU_FLAGS_SUPPORT_SET_THERM_ALERT_LIMIT; NVGPU_GPU_FLAGS_SUPPORT_SET_THERM_ALERT_LIMIT;
/* WAR for missing INA3221 on HW2.5 RevA */
if (g->power_sensor_missing) {
gpu->flags &= ~(NVGPU_GPU_FLAGS_SUPPORT_GET_VOLTAGE |
NVGPU_GPU_FLAGS_SUPPORT_GET_CURRENT |
NVGPU_GPU_FLAGS_SUPPORT_GET_POWER);
}
return 0; return 0;
} }

View File

@@ -488,6 +488,12 @@ u32 pmgr_send_pmgr_tables_to_pmu(struct gk20a *g)
} }
} }
/* WAR for missing INA3221 on HW2.5 RevA */
if (g->power_sensor_missing) {
nvgpu_warn(g, "no power device found, skipping power policy");
goto exit;
}
if (!(BOARDOBJGRP_IS_EMPTY( if (!(BOARDOBJGRP_IS_EMPTY(
&g->pmgr_pmu.pmgr_policyobjs.pwr_policies.super)) || &g->pmgr_pmu.pmgr_policyobjs.pwr_policies.super)) ||
!(BOARDOBJGRP_IS_EMPTY( !(BOARDOBJGRP_IS_EMPTY(

View File

@@ -297,6 +297,13 @@ u32 pmgr_device_sw_setup(struct gk20a *g)
/* Override the Interfaces */ /* Override the Interfaces */
pboardobjgrp->pmudatainstget = _pwr_device_pmudata_instget; pboardobjgrp->pmudatainstget = _pwr_device_pmudata_instget;
/* WAR for missing INA3221 on HW2.5 RevA */
if (g->power_sensor_missing) {
gk20a_warn(dev_from_gk20a(g),
"no power sensor, monitoring disabled");
goto done;
}
status = devinit_get_pwr_device_table(g, ppwrdeviceobjs); status = devinit_get_pwr_device_table(g, ppwrdeviceobjs);
if (status) if (status)
goto done; goto done;