diff options
Diffstat (limited to 'drivers/gpu/nvgpu')
-rw-r--r-- | drivers/gpu/nvgpu/gv11b/mc_gv11b.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gv11b/mc_gv11b.c b/drivers/gpu/nvgpu/gv11b/mc_gv11b.c index bc0aee2e..0111d6b3 100644 --- a/drivers/gpu/nvgpu/gv11b/mc_gv11b.c +++ b/drivers/gpu/nvgpu/gv11b/mc_gv11b.c | |||
@@ -20,7 +20,32 @@ | |||
20 | #include "gv11b/mc_gv11b.h" | 20 | #include "gv11b/mc_gv11b.h" |
21 | #include "hw_mc_gv11b.h" | 21 | #include "hw_mc_gv11b.h" |
22 | 22 | ||
23 | static void mc_gv11b_intr_enable(struct gk20a *g) | ||
24 | { | ||
25 | u32 eng_intr_mask = gk20a_fifo_engine_interrupt_mask(g); | ||
26 | |||
27 | gk20a_writel(g, mc_intr_en_clear_r(NVGPU_MC_INTR_STALLING), | ||
28 | 0xffffffff); | ||
29 | g->ops.mc.intr_mask_restore[NVGPU_MC_INTR_STALLING] = | ||
30 | mc_intr_pfifo_pending_f() | ||
31 | | eng_intr_mask; | ||
32 | gk20a_writel(g, mc_intr_en_set_r(NVGPU_MC_INTR_STALLING), | ||
33 | g->ops.mc.intr_mask_restore[NVGPU_MC_INTR_STALLING]); | ||
34 | |||
35 | gk20a_writel(g, mc_intr_en_clear_r(NVGPU_MC_INTR_NONSTALLING), | ||
36 | 0xffffffff); | ||
37 | g->ops.mc.intr_mask_restore[NVGPU_MC_INTR_NONSTALLING] = | ||
38 | mc_intr_pfifo_pending_f() | ||
39 | | mc_intr_priv_ring_pending_f() | ||
40 | | mc_intr_ltc_pending_f() | ||
41 | | mc_intr_pbus_pending_f() | ||
42 | | eng_intr_mask; | ||
43 | gk20a_writel(g, mc_intr_en_set_r(NVGPU_MC_INTR_NONSTALLING), | ||
44 | g->ops.mc.intr_mask_restore[NVGPU_MC_INTR_NONSTALLING]); | ||
45 | } | ||
46 | |||
23 | void gv11b_init_mc(struct gpu_ops *gops) | 47 | void gv11b_init_mc(struct gpu_ops *gops) |
24 | { | 48 | { |
25 | gp10b_init_mc(gops); | 49 | gp10b_init_mc(gops); |
50 | gops->mc.intr_enable = mc_gv11b_intr_enable; | ||
26 | } | 51 | } |