summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/channel_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/channel_gk20a.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
index 2421307f..53b85ad8 100644
--- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
@@ -446,6 +446,34 @@ void channel_gk20a_disable(struct channel_gk20a *ch)
446 ccsr_channel_enable_clr_true_f()); 446 ccsr_channel_enable_clr_true_f());
447} 447}
448 448
449int gk20a_enable_channel_tsg(struct gk20a *g, struct channel_gk20a *ch)
450{
451 struct tsg_gk20a *tsg;
452
453 if (gk20a_is_channel_marked_as_tsg(ch)) {
454 tsg = &g->fifo.tsg[ch->tsgid];
455 gk20a_enable_tsg(tsg);
456 } else {
457 g->ops.fifo.enable_channel(ch);
458 }
459
460 return 0;
461}
462
463int gk20a_disable_channel_tsg(struct gk20a *g, struct channel_gk20a *ch)
464{
465 struct tsg_gk20a *tsg;
466
467 if (gk20a_is_channel_marked_as_tsg(ch)) {
468 tsg = &g->fifo.tsg[ch->tsgid];
469 gk20a_disable_tsg(tsg);
470 } else {
471 g->ops.fifo.disable_channel(ch);
472 }
473
474 return 0;
475}
476
449void gk20a_channel_abort(struct channel_gk20a *ch, bool channel_preempt) 477void gk20a_channel_abort(struct channel_gk20a *ch, bool channel_preempt)
450{ 478{
451 struct channel_gk20a_job *job, *n; 479 struct channel_gk20a_job *job, *n;