tegra: hwpm: t234: correct ip fs_info status

fix bug where ip status is set as valid even if no instances are
available.
Update floorsweep info computation to left shift calculated floorsweep
mask by number of elements for every instance.

JIRA THWPM-63

Change-Id: I1a51586c44626857e6fae7f46128bedd60fe3c5c
Signed-off-by: Karthik Ramamoorthy <kramamoorthy@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2735968
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com>
Reviewed-by: svc-mobile-cert <svc-mobile-cert@nvidia.com>
Reviewed-by: Vedashree Vidwans <vvidwans@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Seema Khowala <seemaj@nvidia.com>
Reviewed-by: Vasuki Shankar <vasukis@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: Vedashree Vidwans <vvidwans@nvidia.com>
This commit is contained in:
Karthik Ramamoorthy
2022-06-27 15:39:59 +00:00
committed by mobile promotions
parent 56007741bc
commit a90a599fe0

View File

@@ -464,24 +464,21 @@ int t234_hwpm_get_fs_info(struct tegra_soc_hwpm *hwpm,
if (t234_hwpm_is_ip_active(hwpm, ip_enum, &ip_idx)) {
active_chip = hwpm->active_chip;
chip_ip = active_chip->chip_ips[ip_idx];
if (!(chip_ip->override_enable)) {
if (!(chip_ip->override_enable) && chip_ip->inst_fs_mask) {
for (inst_idx = 0U; inst_idx < chip_ip->num_instances;
inst_idx++) {
ip_inst = &chip_ip->ip_inst_static_array[
inst_idx];
element_mask_shift = (inst_idx == 0U ? 0U :
ip_inst->num_core_elements_per_inst);
floorsweep = (floorsweep << element_mask_shift);
if (ip_inst->hw_inst_mask &
chip_ip->inst_fs_mask) {
floorsweep = (floorsweep <<
element_mask_shift);
floorsweep |=
((u64)ip_inst->element_fs_mask);
}
}
*fs_mask = floorsweep;
*ip_status = TEGRA_SOC_HWPM_IP_STATUS_VALID;