summaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/nvgpu/gv11b/fifo_gv11b.c48
1 files changed, 48 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c b/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c
index b671628a..7e310984 100644
--- a/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c
+++ b/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c
@@ -624,6 +624,53 @@ static int gv11b_fifo_preempt_ch_tsg(struct gk20a *g, u32 id,
624 return ret; 624 return ret;
625} 625}
626 626
627static void gv11b_fifo_init_pbdma_intr_descs(struct fifo_gk20a *f)
628{
629 /*
630 * These are all errors which indicate something really wrong
631 * going on in the device
632 */
633 f->intr.pbdma.device_fatal_0 =
634 pbdma_intr_0_memreq_pending_f() |
635 pbdma_intr_0_memack_timeout_pending_f() |
636 pbdma_intr_0_memack_extra_pending_f() |
637 pbdma_intr_0_memdat_timeout_pending_f() |
638 pbdma_intr_0_memdat_extra_pending_f() |
639 pbdma_intr_0_memflush_pending_f() |
640 pbdma_intr_0_memop_pending_f() |
641 pbdma_intr_0_lbconnect_pending_f() |
642 pbdma_intr_0_lback_timeout_pending_f() |
643 pbdma_intr_0_lback_extra_pending_f() |
644 pbdma_intr_0_lbdat_timeout_pending_f() |
645 pbdma_intr_0_lbdat_extra_pending_f() |
646 pbdma_intr_0_pri_pending_f();
647
648 /*
649 * These are data parsing, framing errors or others which can be
650 * recovered from with intervention... or just resetting the
651 * channel
652 */
653 f->intr.pbdma.channel_fatal_0 =
654 pbdma_intr_0_gpfifo_pending_f() |
655 pbdma_intr_0_gpptr_pending_f() |
656 pbdma_intr_0_gpentry_pending_f() |
657 pbdma_intr_0_gpcrc_pending_f() |
658 pbdma_intr_0_pbptr_pending_f() |
659 pbdma_intr_0_pbentry_pending_f() |
660 pbdma_intr_0_pbcrc_pending_f() |
661 pbdma_intr_0_method_pending_f() |
662 pbdma_intr_0_methodcrc_pending_f() |
663 pbdma_intr_0_pbseg_pending_f() |
664 pbdma_intr_0_clear_faulted_error_pending_f() |
665 pbdma_intr_0_eng_reset_pending_f() |
666 pbdma_intr_0_semaphore_pending_f() |
667 pbdma_intr_0_signature_pending_f();
668
669 /* Can be used for sw-methods, or represents a recoverable timeout. */
670 f->intr.pbdma.restartable_0 =
671 pbdma_intr_0_device_pending_f();
672}
673
627void gv11b_init_fifo(struct gpu_ops *gops) 674void gv11b_init_fifo(struct gpu_ops *gops)
628{ 675{
629 gp10b_init_fifo(gops); 676 gp10b_init_fifo(gops);
@@ -651,4 +698,5 @@ void gv11b_init_fifo(struct gpu_ops *gops)
651 gops->fifo.preempt_tsg = gv11b_fifo_preempt_tsg; 698 gops->fifo.preempt_tsg = gv11b_fifo_preempt_tsg;
652 gops->fifo.is_preempt_pending = gv11b_fifo_is_preempt_pending; 699 gops->fifo.is_preempt_pending = gv11b_fifo_is_preempt_pending;
653 gops->fifo.preempt_ch_tsg = gv11b_fifo_preempt_ch_tsg; 700 gops->fifo.preempt_ch_tsg = gv11b_fifo_preempt_ch_tsg;
701 gops->fifo.init_pbdma_intr_descs = gv11b_fifo_init_pbdma_intr_descs;
654} 702}