diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gp10b/fifo_gp10b.c')
-rw-r--r-- | drivers/gpu/nvgpu/gp10b/fifo_gp10b.c | 27 |
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 | ||
150 | static 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 | |||
150 | void gp10b_init_fifo(struct gpu_ops *gops) | 175 | void 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 | } |