summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/nvgpu/gv11b/mc_gv11b.c25
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
23static 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
23void gv11b_init_mc(struct gpu_ops *gops) 47void 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}