diff options
author | Seema Khowala <seemaj@nvidia.com> | 2017-03-21 14:22:57 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-03-23 12:34:13 -0400 |
commit | 40d2f609032a5b492decd0da4c5f50e00f765f37 (patch) | |
tree | ac3d783272ba0d00d7f00decbc3e9dff7fdf3a6b /drivers/gpu/nvgpu | |
parent | d409d7ebc136470906b861f3bebb7da63e1557e6 (diff) |
gpu: nvgpu: gv11b: implement init_pbdma_intr_desc fifo ops
Init device_fatal, channel_fatal and restartable fifo intr pbdma s/w
variables for pbdma_intr_0 interrupt masks.
pbdma_intr_0 field changes for gv11b:-
bit 8(lbreq) does not exists in hw.
bit 28 (syncpoint_illegal)is removed in hw.
bit 20 is reused for clear_faulted_error in hw.
bit 24 (eng_reset) and bit 25 (semaphore) always existed in hw
but never handled in s/w. These are added as channel fatal.
JIRA GPUT19X-47
Change-Id: I13673430408f1cf7ef762075a29b94196f79a349
Signed-off-by: Seema Khowala <seemaj@nvidia.com>
Reviewed-on: http://git-master/r/1325401
Reviewed-by: svccoveritychecker <svccoveritychecker@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu')
-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 | } |