diff options
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/nvgpu/gv11b/fifo_gv11b.c | 48 |
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 | ||
627 | static 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 | |||
627 | void gv11b_init_fifo(struct gpu_ops *gops) | 674 | void 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 | } |