diff options
Diffstat (limited to 'drivers/gpu/nvgpu')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a.h | 2 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gr_gk20a.c | 7 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gm20b/gr_gm20b.c | 1 |
3 files changed, 7 insertions, 3 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h index 67a6123e..d77a9df2 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/gk20a.h | |||
@@ -173,6 +173,8 @@ struct gpu_ops { | |||
173 | u32 (*get_max_lts_per_ltc)(struct gk20a *g); | 173 | u32 (*get_max_lts_per_ltc)(struct gk20a *g); |
174 | u32* (*get_rop_l2_en_mask)(struct gk20a *g); | 174 | u32* (*get_rop_l2_en_mask)(struct gk20a *g); |
175 | void (*init_sm_dsm_reg_info)(void); | 175 | void (*init_sm_dsm_reg_info)(void); |
176 | int (*wait_empty)(struct gk20a *g, unsigned long end_jiffies, | ||
177 | u32 expect_delay); | ||
176 | } gr; | 178 | } gr; |
177 | const char *name; | 179 | const char *name; |
178 | struct { | 180 | struct { |
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c index 78f81513..7c007622 100644 --- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c | |||
@@ -3475,7 +3475,7 @@ void gr_gk20a_pmu_save_zbc(struct gk20a *g, u32 entries) | |||
3475 | return; | 3475 | return; |
3476 | } | 3476 | } |
3477 | 3477 | ||
3478 | ret = gr_gk20a_wait_idle(g, end_jiffies, GR_IDLE_CHECK_DEFAULT); | 3478 | ret = g->ops.gr.wait_empty(g, end_jiffies, GR_IDLE_CHECK_DEFAULT); |
3479 | if (ret) { | 3479 | if (ret) { |
3480 | gk20a_err(dev_from_gk20a(g), | 3480 | gk20a_err(dev_from_gk20a(g), |
3481 | "failed to idle graphics\n"); | 3481 | "failed to idle graphics\n"); |
@@ -3758,7 +3758,7 @@ static int _gk20a_gr_zbc_set_table(struct gk20a *g, struct gr_gk20a *gr, | |||
3758 | } | 3758 | } |
3759 | 3759 | ||
3760 | end_jiffies = jiffies + msecs_to_jiffies(gk20a_get_gr_idle_timeout(g)); | 3760 | end_jiffies = jiffies + msecs_to_jiffies(gk20a_get_gr_idle_timeout(g)); |
3761 | ret = gr_gk20a_wait_idle(g, end_jiffies, GR_IDLE_CHECK_DEFAULT); | 3761 | ret = g->ops.gr.wait_empty(g, end_jiffies, GR_IDLE_CHECK_DEFAULT); |
3762 | if (ret) { | 3762 | if (ret) { |
3763 | gk20a_err(dev_from_gk20a(g), | 3763 | gk20a_err(dev_from_gk20a(g), |
3764 | "failed to idle graphics\n"); | 3764 | "failed to idle graphics\n"); |
@@ -5641,7 +5641,7 @@ int gk20a_gr_suspend(struct gk20a *g) | |||
5641 | 5641 | ||
5642 | gk20a_dbg_fn(""); | 5642 | gk20a_dbg_fn(""); |
5643 | 5643 | ||
5644 | ret = gr_gk20a_wait_idle(g, end_jiffies, GR_IDLE_CHECK_DEFAULT); | 5644 | ret = g->ops.gr.wait_empty(g, end_jiffies, GR_IDLE_CHECK_DEFAULT); |
5645 | if (ret) | 5645 | if (ret) |
5646 | return ret; | 5646 | return ret; |
5647 | 5647 | ||
@@ -7329,4 +7329,5 @@ void gk20a_init_gr_ops(struct gpu_ops *gops) | |||
7329 | gops->gr.get_max_lts_per_ltc = gr_gk20a_get_max_lts_per_ltc; | 7329 | gops->gr.get_max_lts_per_ltc = gr_gk20a_get_max_lts_per_ltc; |
7330 | gops->gr.get_rop_l2_en_mask = gr_gk20a_rop_l2_en_mask; | 7330 | gops->gr.get_rop_l2_en_mask = gr_gk20a_rop_l2_en_mask; |
7331 | gops->gr.init_sm_dsm_reg_info = gr_gk20a_init_sm_dsm_reg_info; | 7331 | gops->gr.init_sm_dsm_reg_info = gr_gk20a_init_sm_dsm_reg_info; |
7332 | gops->gr.wait_empty = gr_gk20a_wait_idle; | ||
7332 | } | 7333 | } |
diff --git a/drivers/gpu/nvgpu/gm20b/gr_gm20b.c b/drivers/gpu/nvgpu/gm20b/gr_gm20b.c index 1fa1eb24..8351b554 100644 --- a/drivers/gpu/nvgpu/gm20b/gr_gm20b.c +++ b/drivers/gpu/nvgpu/gm20b/gr_gm20b.c | |||
@@ -1117,4 +1117,5 @@ void gm20b_init_gr(struct gpu_ops *gops) | |||
1117 | gops->gr.get_rop_l2_en_mask = gr_gm20b_rop_l2_en_mask; | 1117 | gops->gr.get_rop_l2_en_mask = gr_gm20b_rop_l2_en_mask; |
1118 | gops->gr.get_max_fbps_count = gr_gm20b_get_max_fbps_count; | 1118 | gops->gr.get_max_fbps_count = gr_gm20b_get_max_fbps_count; |
1119 | gops->gr.init_sm_dsm_reg_info = gr_gm20b_init_sm_dsm_reg_info; | 1119 | gops->gr.init_sm_dsm_reg_info = gr_gm20b_init_sm_dsm_reg_info; |
1120 | gops->gr.wait_empty = gr_gk20a_wait_idle; | ||
1120 | } | 1121 | } |