summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a')
-rw-r--r--drivers/gpu/nvgpu/gk20a/gk20a.h4
-rw-r--r--drivers/gpu/nvgpu/gk20a/gr_gk20a.c18
2 files changed, 22 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h
index c8d06b4f..96ca69a3 100644
--- a/drivers/gpu/nvgpu/gk20a/gk20a.h
+++ b/drivers/gpu/nvgpu/gk20a/gk20a.h
@@ -194,6 +194,8 @@ struct gpu_ops {
194 void (*set_circular_buffer_size)(struct gk20a *g, u32 data); 194 void (*set_circular_buffer_size)(struct gk20a *g, u32 data);
195 void (*enable_hww_exceptions)(struct gk20a *g); 195 void (*enable_hww_exceptions)(struct gk20a *g);
196 bool (*is_valid_class)(struct gk20a *g, u32 class_num); 196 bool (*is_valid_class)(struct gk20a *g, u32 class_num);
197 bool (*is_valid_gfx_class)(struct gk20a *g, u32 class_num);
198 bool (*is_valid_compute_class)(struct gk20a *g, u32 class_num);
197 void (*get_sm_dsm_perf_regs)(struct gk20a *g, 199 void (*get_sm_dsm_perf_regs)(struct gk20a *g,
198 u32 *num_sm_dsm_perf_regs, 200 u32 *num_sm_dsm_perf_regs,
199 u32 **sm_dsm_perf_regs, 201 u32 **sm_dsm_perf_regs,
@@ -354,6 +356,8 @@ struct gpu_ops {
354 struct nvgpu_mem *mem, u64 gpu_va); 356 struct nvgpu_mem *mem, u64 gpu_va);
355 void (*write_pm_ptr)(struct gk20a *g, 357 void (*write_pm_ptr)(struct gk20a *g,
356 struct nvgpu_mem *mem, u64 gpu_va); 358 struct nvgpu_mem *mem, u64 gpu_va);
359 void (*write_preemption_ptr)(struct gk20a *g,
360 struct nvgpu_mem *mem, u64 gpu_va);
357 void (*init_elcg_mode)(struct gk20a *g, u32 mode, u32 engine); 361 void (*init_elcg_mode)(struct gk20a *g, u32 mode, u32 engine);
358 void (*load_tpc_mask)(struct gk20a *g); 362 void (*load_tpc_mask)(struct gk20a *g);
359 int (*inval_icache)(struct gk20a *g, struct channel_gk20a *ch); 363 int (*inval_icache)(struct gk20a *g, struct channel_gk20a *ch);
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
index 3140c285..77a947de 100644
--- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
@@ -3113,6 +3113,22 @@ static bool gr_gk20a_is_valid_class(struct gk20a *g, u32 class_num)
3113 return valid; 3113 return valid;
3114} 3114}
3115 3115
3116static bool gr_gk20a_is_valid_gfx_class(struct gk20a *g, u32 class_num)
3117{
3118 if (class_num == KEPLER_C)
3119 return true;
3120 else
3121 return false;
3122}
3123
3124static bool gr_gk20a_is_valid_compute_class(struct gk20a *g, u32 class_num)
3125{
3126 if (class_num == KEPLER_COMPUTE_A)
3127 return true;
3128 else
3129 return false;
3130}
3131
3116int gk20a_alloc_obj_ctx(struct channel_gk20a *c, 3132int gk20a_alloc_obj_ctx(struct channel_gk20a *c,
3117 struct nvgpu_alloc_obj_ctx_args *args) 3133 struct nvgpu_alloc_obj_ctx_args *args)
3118{ 3134{
@@ -9462,6 +9478,8 @@ void gk20a_init_gr_ops(struct gpu_ops *gops)
9462 gk20a_gr_set_alpha_circular_buffer_size; 9478 gk20a_gr_set_alpha_circular_buffer_size;
9463 gops->gr.enable_hww_exceptions = gr_gk20a_enable_hww_exceptions; 9479 gops->gr.enable_hww_exceptions = gr_gk20a_enable_hww_exceptions;
9464 gops->gr.is_valid_class = gr_gk20a_is_valid_class; 9480 gops->gr.is_valid_class = gr_gk20a_is_valid_class;
9481 gops->gr.is_valid_gfx_class = gr_gk20a_is_valid_gfx_class;
9482 gops->gr.is_valid_compute_class = gr_gk20a_is_valid_compute_class;
9465 gops->gr.get_sm_dsm_perf_regs = gr_gk20a_get_sm_dsm_perf_regs; 9483 gops->gr.get_sm_dsm_perf_regs = gr_gk20a_get_sm_dsm_perf_regs;
9466 gops->gr.get_sm_dsm_perf_ctrl_regs = gr_gk20a_get_sm_dsm_perf_ctrl_regs; 9484 gops->gr.get_sm_dsm_perf_ctrl_regs = gr_gk20a_get_sm_dsm_perf_ctrl_regs;
9467 gops->gr.init_fs_state = gr_gk20a_init_fs_state; 9485 gops->gr.init_fs_state = gr_gk20a_init_fs_state;