summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/mc_gk20a.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/mc_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/mc_gk20a.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/mc_gk20a.c b/drivers/gpu/nvgpu/gk20a/mc_gk20a.c
index 4d176403..899eeff7 100644
--- a/drivers/gpu/nvgpu/gk20a/mc_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/mc_gk20a.c
@@ -137,9 +137,27 @@ void mc_gk20a_intr_enable(struct gk20a *g)
137 mc_intr_en_0_inta_hardware_f()); 137 mc_intr_en_0_inta_hardware_f());
138} 138}
139 139
140void mc_gk20a_intr_unit_config(struct gk20a *g, bool enable,
141 bool is_stalling, u32 mask)
142{
143 u32 mask_reg = (is_stalling ? mc_intr_mask_0_r() :
144 mc_intr_mask_1_r());
145
146 if (enable) {
147 gk20a_writel(g, mask_reg,
148 gk20a_readl(g, mask_reg) |
149 mask);
150 } else {
151 gk20a_writel(g, mask_reg,
152 gk20a_readl(g, mask_reg) &
153 ~mask);
154 }
155}
156
140void gk20a_init_mc(struct gpu_ops *gops) 157void gk20a_init_mc(struct gpu_ops *gops)
141{ 158{
142 gops->mc.intr_enable = mc_gk20a_intr_enable; 159 gops->mc.intr_enable = mc_gk20a_intr_enable;
160 gops->mc.intr_unit_config = mc_gk20a_intr_unit_config;
143 gops->mc.isr_stall = mc_gk20a_isr_stall; 161 gops->mc.isr_stall = mc_gk20a_isr_stall;
144 gops->mc.isr_nonstall = mc_gk20a_isr_nonstall; 162 gops->mc.isr_nonstall = mc_gk20a_isr_nonstall;
145 gops->mc.isr_thread_stall = mc_gk20a_intr_thread_stall; 163 gops->mc.isr_thread_stall = mc_gk20a_intr_thread_stall;