diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/fifo_gk20a.c | 14 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a.h | 1 |
2 files changed, 10 insertions, 5 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c b/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c index 194d5e3c..b14b2a27 100644 --- a/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c | |||
@@ -815,11 +815,15 @@ int gk20a_init_fifo_reset_enable_hw(struct gk20a *g) | |||
815 | if (g->ops.fifo.apply_pb_timeout) | 815 | if (g->ops.fifo.apply_pb_timeout) |
816 | g->ops.fifo.apply_pb_timeout(g); | 816 | g->ops.fifo.apply_pb_timeout(g); |
817 | 817 | ||
818 | timeout = GRFIFO_TIMEOUT_CHECK_PERIOD_US; | 818 | if (g->ops.fifo.apply_ctxsw_timeout_intr) |
819 | timeout = scale_ptimer(timeout, | 819 | g->ops.fifo.apply_ctxsw_timeout_intr(g); |
820 | ptimer_scalingfactor10x(g->ptimer_src_freq)); | 820 | else { |
821 | timeout |= fifo_eng_timeout_detection_enabled_f(); | 821 | timeout = GRFIFO_TIMEOUT_CHECK_PERIOD_US; |
822 | gk20a_writel(g, fifo_eng_timeout_r(), timeout); | 822 | timeout = scale_ptimer(timeout, |
823 | ptimer_scalingfactor10x(g->ptimer_src_freq)); | ||
824 | timeout |= fifo_eng_timeout_detection_enabled_f(); | ||
825 | gk20a_writel(g, fifo_eng_timeout_r(), timeout); | ||
826 | } | ||
823 | 827 | ||
824 | /* clear and enable pbdma interrupt */ | 828 | /* clear and enable pbdma interrupt */ |
825 | for (i = 0; i < host_num_pbdma; i++) { | 829 | for (i = 0; i < host_num_pbdma; i++) { |
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h index 9d51be59..d9a8396f 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/gk20a.h | |||
@@ -531,6 +531,7 @@ struct gpu_ops { | |||
531 | void (*get_mmu_fault_info)(struct gk20a *g, u32 mmu_fault_id, | 531 | void (*get_mmu_fault_info)(struct gk20a *g, u32 mmu_fault_id, |
532 | struct mmu_fault_info *mmfault); | 532 | struct mmu_fault_info *mmfault); |
533 | void (*apply_pb_timeout)(struct gk20a *g); | 533 | void (*apply_pb_timeout)(struct gk20a *g); |
534 | void (*apply_ctxsw_timeout_intr)(struct gk20a *g); | ||
534 | int (*wait_engine_idle)(struct gk20a *g); | 535 | int (*wait_engine_idle)(struct gk20a *g); |
535 | u32 (*get_num_fifos)(struct gk20a *g); | 536 | u32 (*get_num_fifos)(struct gk20a *g); |
536 | u32 (*get_pbdma_signature)(struct gk20a *g); | 537 | u32 (*get_pbdma_signature)(struct gk20a *g); |