summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTerje Bergstrom <tbergstrom@nvidia.com>2015-09-21 14:10:30 -0400
committerDeepak Nibade <dnibade@nvidia.com>2016-12-27 04:52:08 -0500
commitd1331bd07d9e9b9c6432ec9406db29e197eabd8a (patch)
tree4d98de76cb79032f30227589eb1e8e4c12b417ed
parentc9da53da4e595271fc6a9639cf1907d84061e356 (diff)
gpu: nvgpu: gp10b: Implement SetCoalesceBufferSize
Implement method for setting the coalesce buffer size at runtime. Bug 1681992 Change-Id: Ice6c00a27f642c2d68d6cd0e30c12df2e48f5374 Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-on: http://git-master/r/802366 (cherry picked from commit bd763bc8a16b80ccc8f79b2229eccf2fe2417611) Reviewed-on: http://git-master/r/808239 GVS: Gerrit_Virtual_Submit
-rw-r--r--drivers/gpu/nvgpu/gp10b/gr_gp10b.c17
-rw-r--r--drivers/gpu/nvgpu/gp10b/gr_gp10b.h1
-rw-r--r--drivers/gpu/nvgpu/gp10b/hw_gr_gp10b.h12
3 files changed, 30 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gp10b/gr_gp10b.c b/drivers/gpu/nvgpu/gp10b/gr_gp10b.c
index c339b14d..1a50d29a 100644
--- a/drivers/gpu/nvgpu/gp10b/gr_gp10b.c
+++ b/drivers/gpu/nvgpu/gp10b/gr_gp10b.c
@@ -290,6 +290,20 @@ static void gr_gp10b_set_go_idle_timeout(struct gk20a *g, u32 data)
290 gk20a_writel(g, gr_fe_go_idle_timeout_r(), data); 290 gk20a_writel(g, gr_fe_go_idle_timeout_r(), data);
291} 291}
292 292
293static void gr_gp10b_set_coalesce_buffer_size(struct gk20a *g, u32 data)
294{
295 u32 val;
296
297 gk20a_dbg_fn("");
298
299 val = gk20a_readl(g, gr_gpcs_tc_debug0_r());
300 val = set_field(val, gr_gpcs_tc_debug0_limit_coalesce_buffer_size_m(),
301 gr_gpcs_tc_debug0_limit_coalesce_buffer_size_f(data));
302 gk20a_writel(g, gr_gpcs_tc_debug0_r(), val);
303
304 gk20a_dbg_fn("done");
305}
306
293static int gr_gp10b_handle_sw_method(struct gk20a *g, u32 addr, 307static int gr_gp10b_handle_sw_method(struct gk20a *g, u32 addr,
294 u32 class_num, u32 offset, u32 data) 308 u32 class_num, u32 offset, u32 data)
295{ 309{
@@ -319,6 +333,9 @@ static int gr_gp10b_handle_sw_method(struct gk20a *g, u32 addr,
319 case NVC097_SET_GO_IDLE_TIMEOUT: 333 case NVC097_SET_GO_IDLE_TIMEOUT:
320 gr_gp10b_set_go_idle_timeout(g, data); 334 gr_gp10b_set_go_idle_timeout(g, data);
321 break; 335 break;
336 case NVC097_SET_COALESCE_BUFFER_SIZE:
337 gr_gp10b_set_coalesce_buffer_size(g, data);
338 break;
322 default: 339 default:
323 goto fail; 340 goto fail;
324 } 341 }
diff --git a/drivers/gpu/nvgpu/gp10b/gr_gp10b.h b/drivers/gpu/nvgpu/gp10b/gr_gp10b.h
index 370e0ea3..bf49ba6f 100644
--- a/drivers/gpu/nvgpu/gp10b/gr_gp10b.h
+++ b/drivers/gpu/nvgpu/gp10b/gr_gp10b.h
@@ -27,6 +27,7 @@ enum {
27 27
28#define NVC097_SET_GO_IDLE_TIMEOUT 0x022c 28#define NVC097_SET_GO_IDLE_TIMEOUT 0x022c
29#define NVC097_SET_ALPHA_CIRCULAR_BUFFER_SIZE 0x02dc 29#define NVC097_SET_ALPHA_CIRCULAR_BUFFER_SIZE 0x02dc
30#define NVC097_SET_COALESCE_BUFFER_SIZE 0x1028
30#define NVC097_SET_CIRCULAR_BUFFER_SIZE 0x1280 31#define NVC097_SET_CIRCULAR_BUFFER_SIZE 0x1280
31#define NVC097_SET_SHADER_EXCEPTIONS 0x1528 32#define NVC097_SET_SHADER_EXCEPTIONS 0x1528
32#define NVC0C0_SET_SHADER_EXCEPTIONS 0x1528 33#define NVC0C0_SET_SHADER_EXCEPTIONS 0x1528
diff --git a/drivers/gpu/nvgpu/gp10b/hw_gr_gp10b.h b/drivers/gpu/nvgpu/gp10b/hw_gr_gp10b.h
index 6e4f7d1a..e33f0734 100644
--- a/drivers/gpu/nvgpu/gp10b/hw_gr_gp10b.h
+++ b/drivers/gpu/nvgpu/gp10b/hw_gr_gp10b.h
@@ -3786,4 +3786,16 @@ static inline u32 gr_gpcs_tpcs_sm_disp_ctrl_re_suppress_disable_f(void)
3786{ 3786{
3787 return 0x1000; 3787 return 0x1000;
3788} 3788}
3789static inline u32 gr_gpcs_tc_debug0_r(void)
3790{
3791 return 0x00418708;
3792}
3793static inline u32 gr_gpcs_tc_debug0_limit_coalesce_buffer_size_f(u32 v)
3794{
3795 return (v & 0xff) << 0;
3796}
3797static inline u32 gr_gpcs_tc_debug0_limit_coalesce_buffer_size_m(void)
3798{
3799 return 0xff << 0;
3800}
3789#endif 3801#endif