summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/fifo_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/fifo_gk20a.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c b/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c
index 88ce6a83..2cc5e4cd 100644
--- a/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c
@@ -2671,6 +2671,21 @@ void gk20a_fifo_set_runlist_state(struct gk20a *g, u32 runlists_mask,
2671 gk20a_dbg_fn("done"); 2671 gk20a_dbg_fn("done");
2672} 2672}
2673 2673
2674void gk20a_fifo_enable_tsg_sched(struct gk20a *g, struct tsg_gk20a *tsg)
2675{
2676 gk20a_fifo_set_runlist_state(g, fifo_sched_disable_runlist_m(
2677 tsg->runlist_id), RUNLIST_ENABLED,
2678 !RUNLIST_INFO_MUTEX_LOCKED);
2679
2680}
2681
2682void gk20a_fifo_disable_tsg_sched(struct gk20a *g, struct tsg_gk20a *tsg)
2683{
2684 gk20a_fifo_set_runlist_state(g, fifo_sched_disable_runlist_m(
2685 tsg->runlist_id), RUNLIST_DISABLED,
2686 !RUNLIST_INFO_MUTEX_LOCKED);
2687}
2688
2674int gk20a_fifo_enable_engine_activity(struct gk20a *g, 2689int gk20a_fifo_enable_engine_activity(struct gk20a *g,
2675 struct fifo_engine_info_gk20a *eng_info) 2690 struct fifo_engine_info_gk20a *eng_info)
2676{ 2691{
@@ -3413,6 +3428,27 @@ const char *gk20a_decode_pbdma_chan_eng_ctx_status(u32 index)
3413 return pbdma_chan_eng_ctx_status_str[index]; 3428 return pbdma_chan_eng_ctx_status_str[index];
3414} 3429}
3415 3430
3431bool gk20a_fifo_channel_status_is_next(struct gk20a *g, u32 chid)
3432{
3433 u32 channel = gk20a_readl(g, ccsr_channel_r(chid));
3434
3435 return ccsr_channel_next_v(channel) == ccsr_channel_next_true_v();
3436}
3437
3438bool gk20a_fifo_channel_status_is_ctx_reload(struct gk20a *g, u32 chid)
3439{
3440 u32 channel = gk20a_readl(g, ccsr_channel_r(chid));
3441 u32 status = ccsr_channel_status_v(channel);
3442
3443 return (status == ccsr_channel_status_pending_ctx_reload_v() ||
3444 status == ccsr_channel_status_pending_acq_ctx_reload_v() ||
3445 status == ccsr_channel_status_on_pbdma_ctx_reload_v() ||
3446 status == ccsr_channel_status_on_pbdma_and_eng_ctx_reload_v() ||
3447 status == ccsr_channel_status_on_eng_ctx_reload_v() ||
3448 status == ccsr_channel_status_on_eng_pending_ctx_reload_v() ||
3449 status == ccsr_channel_status_on_eng_pending_acq_ctx_reload_v());
3450}
3451
3416void gk20a_dump_channel_status_ramfc(struct gk20a *g, 3452void gk20a_dump_channel_status_ramfc(struct gk20a *g,
3417 struct gk20a_debug_output *o, 3453 struct gk20a_debug_output *o,
3418 u32 chid, 3454 u32 chid,