summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gm20b/gr_gm20b.c
diff options
context:
space:
mode:
authorsujeet baranwal <sbaranwal@nvidia.com>2015-09-28 18:26:23 -0400
committerTerje Bergstrom <tbergstrom@nvidia.com>2015-09-29 16:15:15 -0400
commitab93322b25c9dd6058fac6523f41571d77eeaeb9 (patch)
treead403ae2dea3fe8842d0c60076ee59c4f5bcb95c /drivers/gpu/nvgpu/gm20b/gr_gm20b.c
parent39e8bff2fc02b4037dc925076e5f42f6519101eb (diff)
gpu: nvgpu: Add CDE bits in FECS header
In case of CDE channel, T1 (Tex) unit needs to be promoted to 128B aligned, otherwise causes a HW deadlock. Gpu driver makes changes in FECS header which FECS uses to configure the T1 promotions to aligned 128B accesses. Bug 200096226 Change-Id: I8a8deaf6fb91f4bbceacd491db7eb6f7bca5001b Signed-off-by: sujeet baranwal <sbaranwal@nvidia.com> Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Signed-off-by: sujeet baranwal <sbaranwal@nvidia.com> Reviewed-on: http://git-master/r/804625 Tested-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gm20b/gr_gm20b.c')
-rw-r--r--drivers/gpu/nvgpu/gm20b/gr_gm20b.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gm20b/gr_gm20b.c b/drivers/gpu/nvgpu/gm20b/gr_gm20b.c
index 17b4b8ea..df7f2af9 100644
--- a/drivers/gpu/nvgpu/gm20b/gr_gm20b.c
+++ b/drivers/gpu/nvgpu/gm20b/gr_gm20b.c
@@ -1052,6 +1052,15 @@ static void gr_gm20b_init_cyclestats(struct gk20a *g)
1052#endif 1052#endif
1053} 1053}
1054 1054
1055void gr_gm20b_enable_cde_in_fecs(void *ctx_ptr)
1056{
1057 u32 cde_v;
1058
1059 cde_v = gk20a_mem_rd32(ctx_ptr + ctxsw_prog_main_image_ctl_o(), 0);
1060 cde_v |= ctxsw_prog_main_image_ctl_cde_enabled_f();
1061 gk20a_mem_wr32(ctx_ptr + ctxsw_prog_main_image_ctl_o(), 0, cde_v);
1062}
1063
1055void gm20b_init_gr(struct gpu_ops *gops) 1064void gm20b_init_gr(struct gpu_ops *gops)
1056{ 1065{
1057 gops->gr.init_gpc_mmu = gr_gm20b_init_gpc_mmu; 1066 gops->gr.init_gpc_mmu = gr_gm20b_init_gpc_mmu;
@@ -1107,4 +1116,5 @@ void gm20b_init_gr(struct gpu_ops *gops)
1107 gops->gr.init_sm_dsm_reg_info = gr_gm20b_init_sm_dsm_reg_info; 1116 gops->gr.init_sm_dsm_reg_info = gr_gm20b_init_sm_dsm_reg_info;
1108 gops->gr.wait_empty = gr_gk20a_wait_idle; 1117 gops->gr.wait_empty = gr_gk20a_wait_idle;
1109 gops->gr.init_cyclestats = gr_gm20b_init_cyclestats; 1118 gops->gr.init_cyclestats = gr_gm20b_init_cyclestats;
1119 gops->gr.enable_cde_in_fecs = gr_gm20b_enable_cde_in_fecs;
1110} 1120}