diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gp10b/mc_gp10b.c')
-rw-r--r-- | drivers/gpu/nvgpu/gp10b/mc_gp10b.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gp10b/mc_gp10b.c b/drivers/gpu/nvgpu/gp10b/mc_gp10b.c index 56db6750..063bda7c 100644 --- a/drivers/gpu/nvgpu/gp10b/mc_gp10b.c +++ b/drivers/gpu/nvgpu/gp10b/mc_gp10b.c | |||
@@ -32,6 +32,17 @@ | |||
32 | 32 | ||
33 | #include <nvgpu/hw/gp10b/hw_mc_gp10b.h> | 33 | #include <nvgpu/hw/gp10b/hw_mc_gp10b.h> |
34 | 34 | ||
35 | #define MAX_MC_INTR_REGS 2U | ||
36 | |||
37 | void mc_gp10b_intr_mask(struct gk20a *g) | ||
38 | { | ||
39 | nvgpu_writel(g, mc_intr_en_clear_r(NVGPU_MC_INTR_STALLING), | ||
40 | 0xffffffffU); | ||
41 | |||
42 | nvgpu_writel(g, mc_intr_en_clear_r(NVGPU_MC_INTR_NONSTALLING), | ||
43 | 0xffffffffU); | ||
44 | } | ||
45 | |||
35 | void mc_gp10b_intr_enable(struct gk20a *g) | 46 | void mc_gp10b_intr_enable(struct gk20a *g) |
36 | { | 47 | { |
37 | u32 eng_intr_mask = gk20a_fifo_engine_interrupt_mask(g); | 48 | u32 eng_intr_mask = gk20a_fifo_engine_interrupt_mask(g); |
@@ -195,3 +206,17 @@ bool mc_gp10b_is_intr1_pending(struct gk20a *g, | |||
195 | 206 | ||
196 | return is_pending; | 207 | return is_pending; |
197 | } | 208 | } |
209 | |||
210 | void mc_gp10b_log_pending_intrs(struct gk20a *g) | ||
211 | { | ||
212 | u32 i, intr; | ||
213 | |||
214 | for (i = 0; i < MAX_MC_INTR_REGS; i++) { | ||
215 | intr = nvgpu_readl(g, mc_intr_r(i)); | ||
216 | if (intr == 0U) { | ||
217 | continue; | ||
218 | } | ||
219 | nvgpu_info(g, "Pending intr%d=0x%08x", i, intr); | ||
220 | } | ||
221 | |||
222 | } | ||