diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/channel_gk20a.c')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/channel_gk20a.c | 28 |
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 | ||
449 | int 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 | |||
463 | int 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 | |||
449 | void gk20a_channel_abort(struct channel_gk20a *ch, bool channel_preempt) | 477 | void 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; |