diff options
author | Terje Bergstrom <tbergstrom@nvidia.com> | 2016-04-06 16:10:32 -0400 |
---|---|---|
committer | Terje Bergstrom <tbergstrom@nvidia.com> | 2016-04-15 11:48:20 -0400 |
commit | 6839341bf8ffafa115cfc0427bba694ee1d131f3 (patch) | |
tree | 1f9369a3bacf0f1a2cc23371f5de988efdc07c31 /drivers/gpu/nvgpu/gm20b/hal_gm20b.c | |
parent | 61e009c0f8874898335e6c47a610233c3382be47 (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.c | 74 |
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 | ||
93 | static 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 | |||
92 | int gm20b_init_hal(struct gk20a *g) | 165 | int 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; |