diff options
author | Terje Bergstrom <tbergstrom@nvidia.com> | 2016-04-06 16:10:46 -0400 |
---|---|---|
committer | Deepak Nibade <dnibade@nvidia.com> | 2016-12-27 04:52:12 -0500 |
commit | 342d45e060ba9c6a7815633c351ec8d95422dcbb (patch) | |
tree | 032902b9a45c379826a5206307007f59fce6aee3 /drivers/gpu/nvgpu/gp10b/hal_gp10b.c | |
parent | b268c9103760fd26706cb3a5b651b82fb82fb105 (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.c | 74 |
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 | ||
103 | static 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 | |||
102 | int gp10b_init_hal(struct gk20a *g) | 175 | int 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; |