summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gm20b/gr_gm20b.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gm20b/gr_gm20b.c')
-rw-r--r--drivers/gpu/nvgpu/gm20b/gr_gm20b.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gm20b/gr_gm20b.c b/drivers/gpu/nvgpu/gm20b/gr_gm20b.c
index 87cf3f01..56ebc8ca 100644
--- a/drivers/gpu/nvgpu/gm20b/gr_gm20b.c
+++ b/drivers/gpu/nvgpu/gm20b/gr_gm20b.c
@@ -1542,6 +1542,24 @@ static void gm20b_gr_clear_sm_hww(struct gk20a *g, u32 gpc, u32 tpc, u32 sm,
1542 gk20a_writel(g, gr_gpc0_tpc0_sm_hww_warp_esr_r() + offset, 0); 1542 gk20a_writel(g, gr_gpc0_tpc0_sm_hww_warp_esr_r() + offset, 0);
1543} 1543}
1544 1544
1545/*
1546 * Disable both surface and LG coalesce.
1547 */
1548void gm20a_gr_disable_rd_coalesce(struct gk20a *g)
1549{
1550 u32 dbg2_reg;
1551
1552 dbg2_reg = gk20a_readl(g, gr_gpcs_tpcs_tex_m_dbg2_r());
1553 dbg2_reg = set_field(dbg2_reg,
1554 gr_gpcs_tpcs_tex_m_dbg2_lg_rd_coalesce_en_m(),
1555 gr_gpcs_tpcs_tex_m_dbg2_lg_rd_coalesce_en_f(0));
1556 dbg2_reg = set_field(dbg2_reg,
1557 gr_gpcs_tpcs_tex_m_dbg2_su_rd_coalesce_en_m(),
1558 gr_gpcs_tpcs_tex_m_dbg2_su_rd_coalesce_en_f(0));
1559
1560 gk20a_writel(g, gr_gpcs_tpcs_tex_m_dbg2_r(), dbg2_reg);
1561}
1562
1545void gm20b_init_gr(struct gk20a *g) 1563void gm20b_init_gr(struct gk20a *g)
1546{ 1564{
1547 struct gpu_ops *gops = &g->ops; 1565 struct gpu_ops *gops = &g->ops;
@@ -1657,4 +1675,5 @@ void gm20b_init_gr(struct gk20a *g)
1657 gops->gr.clear_sm_hww = gm20b_gr_clear_sm_hww; 1675 gops->gr.clear_sm_hww = gm20b_gr_clear_sm_hww;
1658 gops->gr.init_ovr_sm_dsm_perf = gk20a_gr_init_ovr_sm_dsm_perf; 1676 gops->gr.init_ovr_sm_dsm_perf = gk20a_gr_init_ovr_sm_dsm_perf;
1659 gops->gr.get_ovr_perf_regs = gk20a_gr_get_ovr_perf_regs; 1677 gops->gr.get_ovr_perf_regs = gk20a_gr_get_ovr_perf_regs;
1678 gops->gr.disable_rd_coalesce = gm20a_gr_disable_rd_coalesce;
1660} 1679}