summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gp10b/fifo_gp10b.c
diff options
context:
space:
mode:
authorTerje Bergstrom <tbergstrom@nvidia.com>2015-02-23 18:20:36 -0500
committerDeepak Nibade <dnibade@nvidia.com>2016-12-27 04:52:05 -0500
commit607b8649768ff32ce435cbf5726c9d185a68cd85 (patch)
treeb839362f2d12b2a268ddef82731940ad224de3e4 /drivers/gpu/nvgpu/gp10b/fifo_gp10b.c
parentd2a5cf6e80a65366bc2ba78303cb8ef1f12f1596 (diff)
gpu: nvgpu: Implement syncpt protection
Change-Id: I05b2554588e5e1001cdbb54551cf8a064ea531bd Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-on: http://git-master/r/711303 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Seshendra Gadagottu <sgadagottu@nvidia.com> Reviewed-by: Deepak Nibade <dnibade@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gp10b/fifo_gp10b.c')
-rw-r--r--drivers/gpu/nvgpu/gp10b/fifo_gp10b.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/gp10b/fifo_gp10b.c b/drivers/gpu/nvgpu/gp10b/fifo_gp10b.c
index 59f7deef..08f1c13c 100644
--- a/drivers/gpu/nvgpu/gp10b/fifo_gp10b.c
+++ b/drivers/gpu/nvgpu/gp10b/fifo_gp10b.c
@@ -147,10 +147,35 @@ static u32 gp10b_fifo_get_pbdma_signature(struct gk20a *g)
147 | pbdma_signature_sw_zero_f(); 147 | pbdma_signature_sw_zero_f();
148} 148}
149 149
150static int gp10b_fifo_resetup_ramfc(struct channel_gk20a *c)
151{
152 int syncpt_id;
153 void *inst_ptr;
154
155 gk20a_dbg_fn("");
156
157 inst_ptr = c->inst_block.cpu_va;
158 if (c->sync) {
159 u32 v = pbdma_allowed_syncpoints_0_valid_f(1);
160
161 syncpt_id = c->sync->syncpt_id(c->sync);
162 gk20a_dbg_info("Channel %d, syncpt id %d\n",
163 c->hw_chid, syncpt_id);
164
165 v |= pbdma_allowed_syncpoints_0_index_f(syncpt_id);
166
167 gk20a_mem_wr32(inst_ptr, ram_fc_allowed_syncpoints_w(), v);
168 }
169
170 gk20a_dbg_fn("done");
171
172 return 0;
173}
174
150void gp10b_init_fifo(struct gpu_ops *gops) 175void gp10b_init_fifo(struct gpu_ops *gops)
151{ 176{
152 gm20b_init_fifo(gops); 177 gm20b_init_fifo(gops);
153 gops->fifo.setup_ramfc = channel_gp10b_setup_ramfc; 178 gops->fifo.setup_ramfc = channel_gp10b_setup_ramfc;
154 gops->fifo.get_pbdma_signature = gp10b_fifo_get_pbdma_signature; 179 gops->fifo.get_pbdma_signature = gp10b_fifo_get_pbdma_signature;
155 180 gops->fifo.resetup_ramfc = gp10b_fifo_resetup_ramfc;
156} 181}