summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gm20b/hal_gm20b.c
diff options
context:
space:
mode:
authorTerje Bergstrom <tbergstrom@nvidia.com>2016-04-06 16:10:32 -0400
committerTerje Bergstrom <tbergstrom@nvidia.com>2016-04-15 11:48:20 -0400
commit6839341bf8ffafa115cfc0427bba694ee1d131f3 (patch)
tree1f9369a3bacf0f1a2cc23371f5de988efdc07c31 /drivers/gpu/nvgpu/gm20b/hal_gm20b.c
parent61e009c0f8874898335e6c47a610233c3382be47 (diff)
gpu: nvgpu: 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: I2a2730fce14010924d2507f6fa15cc2ea0795113 Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-on: http://git-master/r/1121383
Diffstat (limited to 'drivers/gpu/nvgpu/gm20b/hal_gm20b.c')
-rw-r--r--drivers/gpu/nvgpu/gm20b/hal_gm20b.c74
1 files changed, 74 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gm20b/hal_gm20b.c b/drivers/gpu/nvgpu/gm20b/hal_gm20b.c
index 559fee61..df25be5e 100644
--- a/drivers/gpu/nvgpu/gm20b/hal_gm20b.c
+++ b/drivers/gpu/nvgpu/gm20b/hal_gm20b.c
@@ -34,6 +34,7 @@
34#include "debug_gm20b.h" 34#include "debug_gm20b.h"
35#include "cde_gm20b.h" 35#include "cde_gm20b.h"
36#include "therm_gm20b.h" 36#include "therm_gm20b.h"
37#include "hw_proj_gm20b.h"
37 38
38#define FUSE_OPT_PRIV_SEC_DIS_0 0x264 39#define FUSE_OPT_PRIV_SEC_DIS_0 0x264
39#define PRIV_SECURITY_DISABLE 0x01 40#define PRIV_SECURITY_DISABLE 0x01
@@ -89,6 +90,78 @@ static struct gpu_ops gm20b_ops = {
89 }, 90 },
90}; 91};
91 92
93static int gm20b_get_litter_value(struct gk20a *g,
94 enum nvgpu_litter_value value)
95{
96 int ret = EINVAL;
97 switch (value) {
98 case GPU_LIT_NUM_GPCS:
99 ret = proj_scal_litter_num_gpcs_v();
100 break;
101 case GPU_LIT_NUM_PES_PER_GPC:
102 ret = proj_scal_litter_num_pes_per_gpc_v();
103 break;
104 case GPU_LIT_NUM_ZCULL_BANKS:
105 ret = proj_scal_litter_num_zcull_banks_v();
106 break;
107 case GPU_LIT_NUM_TPC_PER_GPC:
108 ret = proj_scal_litter_num_tpc_per_gpc_v();
109 break;
110 case GPU_LIT_NUM_FBPS:
111 ret = proj_scal_litter_num_fbps_v();
112 break;
113 case GPU_LIT_GPC_BASE:
114 ret = proj_gpc_base_v();
115 break;
116 case GPU_LIT_GPC_STRIDE:
117 ret = proj_gpc_stride_v();
118 break;
119 case GPU_LIT_GPC_SHARED_BASE:
120 ret = proj_gpc_shared_base_v();
121 break;
122 case GPU_LIT_TPC_IN_GPC_BASE:
123 ret = proj_tpc_in_gpc_base_v();
124 break;
125 case GPU_LIT_TPC_IN_GPC_STRIDE:
126 ret = proj_tpc_in_gpc_stride_v();
127 break;
128 case GPU_LIT_TPC_IN_GPC_SHARED_BASE:
129 ret = proj_tpc_in_gpc_shared_base_v();
130 break;
131 case GPU_LIT_PPC_IN_GPC_STRIDE:
132 ret = proj_ppc_in_gpc_stride_v();
133 break;
134 case GPU_LIT_ROP_BASE:
135 ret = proj_rop_base_v();
136 break;
137 case GPU_LIT_ROP_STRIDE:
138 ret = proj_rop_stride_v();
139 break;
140 case GPU_LIT_ROP_SHARED_BASE:
141 ret = proj_rop_shared_base_v();
142 break;
143 case GPU_LIT_HOST_NUM_PBDMA:
144 ret = proj_host_num_pbdma_v();
145 break;
146 case GPU_LIT_LTC_STRIDE:
147 ret = proj_ltc_stride_v();
148 break;
149 case GPU_LIT_LTS_STRIDE:
150 ret = proj_lts_stride_v();
151 break;
152 case GPU_LIT_NUM_FBPAS:
153 ret = proj_scal_litter_num_fbpas_v();
154 break;
155 case GPU_LIT_FBPA_STRIDE:
156 ret = proj_fbpa_stride_v();
157 break;
158 default:
159 break;
160 }
161
162 return ret;
163}
164
92int gm20b_init_hal(struct gk20a *g) 165int gm20b_init_hal(struct gk20a *g)
93{ 166{
94 struct gpu_ops *gops = &g->ops; 167 struct gpu_ops *gops = &g->ops;
@@ -140,6 +213,7 @@ int gm20b_init_hal(struct gk20a *g)
140 gm20b_init_therm_ops(gops); 213 gm20b_init_therm_ops(gops);
141 gops->name = "gm20b"; 214 gops->name = "gm20b";
142 gops->chip_init_gpu_characteristics = gk20a_init_gpu_characteristics; 215 gops->chip_init_gpu_characteristics = gk20a_init_gpu_characteristics;
216 gops->get_litter_value = gm20b_get_litter_value;
143 217
144 c->twod_class = FERMI_TWOD_A; 218 c->twod_class = FERMI_TWOD_A;
145 c->threed_class = MAXWELL_B; 219 c->threed_class = MAXWELL_B;