summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gp106/hal_gp106.c
diff options
context:
space:
mode:
authorDivya Singhatwaria <dsinghatwari@nvidia.com>2019-07-23 01:13:35 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2019-08-02 15:57:24 -0400
commitae175e45edc5807131dfb1b63d3e4795e96a3f86 (patch)
treec209caf5a5804f250be83e4a68295daa64d6cfb5 /drivers/gpu/nvgpu/gp106/hal_gp106.c
parent47f6bc0c2e85d0a8ff943b88c81108ca1bfc588e (diff)
gpu: nvgpu: Use TPC_PG_MASK to powergate the TPC
- In GV11B, read fuse_status_opt_tpc_gpc register to read which TPCs are floorswept. - The driver will also read sysfs node: tpc_pg_mask - Based on these two values "can_tpc_powergate" will be set to true or false and mask will be used to write to fuse_ctrl_opt_tpc_gpc register to powergate the TPC. - can_tpc_powergate = true indicates that the mask value sent from userspace is valid and can be used to power gate the desired TPC - can_tpc_powergate = false indicates that the mask value sent from userspace is not valid and cannot be used to power gate the desired TPC. Bug 200532639 Change-Id: Ib0806e4c96305a13b3574e8063ad8e16770aa7cd Signed-off-by: Divya Singhatwaria <dsinghatwari@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/2159219 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gp106/hal_gp106.c')
-rw-r--r--drivers/gpu/nvgpu/gp106/hal_gp106.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gp106/hal_gp106.c b/drivers/gpu/nvgpu/gp106/hal_gp106.c
index 86a133d5..d033a516 100644
--- a/drivers/gpu/nvgpu/gp106/hal_gp106.c
+++ b/drivers/gpu/nvgpu/gp106/hal_gp106.c
@@ -815,6 +815,9 @@ static const struct gpu_ops gp106_ops = {
815 .acr = { 815 .acr = {
816 .acr_sw_init = nvgpu_gp106_acr_sw_init, 816 .acr_sw_init = nvgpu_gp106_acr_sw_init,
817 }, 817 },
818 .tpc = {
819 .tpc_powergate = NULL,
820 },
818 .get_litter_value = gp106_get_litter_value, 821 .get_litter_value = gp106_get_litter_value,
819 .chip_init_gpu_characteristics = gp106_init_gpu_characteristics, 822 .chip_init_gpu_characteristics = gp106_init_gpu_characteristics,
820}; 823};
@@ -870,6 +873,7 @@ int gp106_init_hal(struct gk20a *g)
870 gops->falcon = gp106_ops.falcon; 873 gops->falcon = gp106_ops.falcon;
871 gops->priv_ring = gp106_ops.priv_ring; 874 gops->priv_ring = gp106_ops.priv_ring;
872 gops->fuse = gp106_ops.fuse; 875 gops->fuse = gp106_ops.fuse;
876 gops->tpc = gp106_ops.tpc;
873 gops->acr = gp106_ops.acr; 877 gops->acr = gp106_ops.acr;
874 878
875 /* Lone functions */ 879 /* Lone functions */