summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gp10b/hal_gp10b.c
diff options
context:
space:
mode:
authorTerje Bergstrom <tbergstrom@nvidia.com>2016-04-06 16:10:46 -0400
committerDeepak Nibade <dnibade@nvidia.com>2016-12-27 04:52:12 -0500
commit342d45e060ba9c6a7815633c351ec8d95422dcbb (patch)
tree032902b9a45c379826a5206307007f59fce6aee3 /drivers/gpu/nvgpu/gp10b/hal_gp10b.c
parentb268c9103760fd26706cb3a5b651b82fb82fb105 (diff)
gpu: nvgpu: gp10b: Add litter values HAL
Move per-chip constants to be returned by a chip specific function. Implement get_litter_value() for each chip. Change-Id: I8bda9bf99b2cc6aba0fb88a69cc374e0a6abab6b Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-on: http://git-master/r/1121384 GVS: Gerrit_Virtual_Submit Reviewed-by: Konsta Holtta <kholtta@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gp10b/hal_gp10b.c')
-rw-r--r--drivers/gpu/nvgpu/gp10b/hal_gp10b.c74
1 files changed, 74 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gp10b/hal_gp10b.c b/drivers/gpu/nvgpu/gp10b/hal_gp10b.c
index 427936c7..ea5e3f15 100644
--- a/drivers/gpu/nvgpu/gp10b/hal_gp10b.c
+++ b/drivers/gpu/nvgpu/gp10b/hal_gp10b.c
@@ -42,6 +42,7 @@
42#include <linux/tegra-fuse.h> 42#include <linux/tegra-fuse.h>
43 43
44#include "gp10b.h" 44#include "gp10b.h"
45#include "hw_proj_gp10b.h"
45 46
46#define FUSE_OPT_PRIV_SEC_EN_0 0x264 47#define FUSE_OPT_PRIV_SEC_EN_0 0x264
47#define PRIV_SECURITY_ENABLED 0x01 48#define PRIV_SECURITY_ENABLED 0x01
@@ -99,6 +100,78 @@ static struct gpu_ops gp10b_ops = {
99 } 100 }
100}; 101};
101 102
103static int gp10b_get_litter_value(struct gk20a *g,
104 enum nvgpu_litter_value value)
105{
106 int ret = EINVAL;
107 switch (value) {
108 case GPU_LIT_NUM_GPCS:
109 ret = proj_scal_litter_num_gpcs_v();
110 break;
111 case GPU_LIT_NUM_PES_PER_GPC:
112 ret = proj_scal_litter_num_pes_per_gpc_v();
113 break;
114 case GPU_LIT_NUM_ZCULL_BANKS:
115 ret = proj_scal_litter_num_zcull_banks_v();
116 break;
117 case GPU_LIT_NUM_TPC_PER_GPC:
118 ret = proj_scal_litter_num_tpc_per_gpc_v();
119 break;
120 case GPU_LIT_NUM_FBPS:
121 ret = proj_scal_litter_num_fbps_v();
122 break;
123 case GPU_LIT_GPC_BASE:
124 ret = proj_gpc_base_v();
125 break;
126 case GPU_LIT_GPC_STRIDE:
127 ret = proj_gpc_stride_v();
128 break;
129 case GPU_LIT_GPC_SHARED_BASE:
130 ret = proj_gpc_shared_base_v();
131 break;
132 case GPU_LIT_TPC_IN_GPC_BASE:
133 ret = proj_tpc_in_gpc_base_v();
134 break;
135 case GPU_LIT_TPC_IN_GPC_STRIDE:
136 ret = proj_tpc_in_gpc_stride_v();
137 break;
138 case GPU_LIT_TPC_IN_GPC_SHARED_BASE:
139 ret = proj_tpc_in_gpc_shared_base_v();
140 break;
141 case GPU_LIT_PPC_IN_GPC_STRIDE:
142 ret = proj_ppc_in_gpc_stride_v();
143 break;
144 case GPU_LIT_ROP_BASE:
145 ret = proj_rop_base_v();
146 break;
147 case GPU_LIT_ROP_STRIDE:
148 ret = proj_rop_stride_v();
149 break;
150 case GPU_LIT_ROP_SHARED_BASE:
151 ret = proj_rop_shared_base_v();
152 break;
153 case GPU_LIT_HOST_NUM_PBDMA:
154 ret = proj_host_num_pbdma_v();
155 break;
156 case GPU_LIT_LTC_STRIDE:
157 ret = proj_ltc_stride_v();
158 break;
159 case GPU_LIT_LTS_STRIDE:
160 ret = proj_lts_stride_v();
161 break;
162 case GPU_LIT_NUM_FBPAS:
163 ret = proj_scal_litter_num_fbpas_v();
164 break;
165 case GPU_LIT_FBPA_STRIDE:
166 ret = proj_fbpa_stride_v();
167 break;
168 default:
169 break;
170 }
171
172 return ret;
173}
174
102int gp10b_init_hal(struct gk20a *g) 175int gp10b_init_hal(struct gk20a *g)
103{ 176{
104 struct gpu_ops *gops = &g->ops; 177 struct gpu_ops *gops = &g->ops;
@@ -156,6 +229,7 @@ int gp10b_init_hal(struct gk20a *g)
156 gp10b_init_therm_ops(gops); 229 gp10b_init_therm_ops(gops);
157 gops->name = "gp10b"; 230 gops->name = "gp10b";
158 gops->chip_init_gpu_characteristics = gp10b_init_gpu_characteristics; 231 gops->chip_init_gpu_characteristics = gp10b_init_gpu_characteristics;
232 gops->get_litter_value = gp10b_get_litter_value;
159 233
160 c->twod_class = FERMI_TWOD_A; 234 c->twod_class = FERMI_TWOD_A;
161 c->threed_class = PASCAL_A; 235 c->threed_class = PASCAL_A;