summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/gr_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/gr_gk20a.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
index 2c62c790..da257cd4 100644
--- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
@@ -3490,6 +3490,27 @@ int gr_gk20a_get_zcull_info(struct gk20a *g, struct gr_gk20a *gr,
3490 return 0; 3490 return 0;
3491} 3491}
3492 3492
3493static void gr_gk20a_detect_sm_arch(struct gk20a *g)
3494{
3495 u32 v = gk20a_readl(g, gr_gpc0_tpc0_sm_arch_r());
3496
3497 u32 raw_version = gr_gpc0_tpc0_sm_arch_spa_version_v(v);
3498 u32 version = 0;
3499
3500 if (raw_version == gr_gpc0_tpc0_sm_arch_spa_version_smkepler_lp_v())
3501 version = 0x320; /* SM 3.2 */
3502 else
3503 gk20a_err(dev_from_gk20a(g), "Unknown SM version 0x%x\n",
3504 raw_version);
3505
3506 /* on Kepler, SM version == SPA version */
3507 g->gpu_characteristics.sm_arch_spa_version = version;
3508 g->gpu_characteristics.sm_arch_sm_version = version;
3509
3510 g->gpu_characteristics.sm_arch_warp_count =
3511 gr_gpc0_tpc0_sm_arch_warp_count_v(v);
3512}
3513
3493static int gr_gk20a_add_zbc_color(struct gk20a *g, struct gr_gk20a *gr, 3514static int gr_gk20a_add_zbc_color(struct gk20a *g, struct gr_gk20a *gr,
3494 struct zbc_entry *color_val, u32 index) 3515 struct zbc_entry *color_val, u32 index)
3495{ 3516{
@@ -7328,5 +7349,6 @@ void gk20a_init_gr_ops(struct gpu_ops *gops)
7328 gops->gr.get_zcull_info = gr_gk20a_get_zcull_info; 7349 gops->gr.get_zcull_info = gr_gk20a_get_zcull_info;
7329 gops->gr.is_tpc_addr = gr_gk20a_is_tpc_addr; 7350 gops->gr.is_tpc_addr = gr_gk20a_is_tpc_addr;
7330 gops->gr.get_tpc_num = gr_gk20a_get_tpc_num; 7351 gops->gr.get_tpc_num = gr_gk20a_get_tpc_num;
7352 gops->gr.detect_sm_arch = gr_gk20a_detect_sm_arch;
7331} 7353}
7332 7354