summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu
diff options
context:
space:
mode:
authorKevin Huang <kevinh@nvidia.com>2014-04-29 19:42:48 -0400
committerDan Willemsen <dwillemsen@nvidia.com>2015-03-18 15:09:48 -0400
commit0781b55fc172f5439ee2f3ecd016c5fb4db6ce97 (patch)
treea5ed5464053c1cab1581cfe64102b15a4351d127 /drivers/gpu/nvgpu
parent6c6936858af4902ca0e170da03ddf92e32b74ae1 (diff)
gpu: nvgpu: halize ltc isr
Bug 1507804 Change-Id: I3cca0e83dbf911c94422f8bb0b2df675a170b990 Signed-off-by: Kevin Huang <kevinh@nvidia.com> Reviewed-on: http://git-master/r/403213 Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Tested-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu')
-rw-r--r--drivers/gpu/nvgpu/gk20a/gk20a.c2
-rw-r--r--drivers/gpu/nvgpu/gk20a/gk20a.h1
-rw-r--r--drivers/gpu/nvgpu/gk20a/ltc_gk20a.c10
-rw-r--r--drivers/gpu/nvgpu/gk20a/mm_gk20a.c9
4 files changed, 12 insertions, 10 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.c b/drivers/gpu/nvgpu/gk20a/gk20a.c
index 7617c70a..3fa4f0c6 100644
--- a/drivers/gpu/nvgpu/gk20a/gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/gk20a.c
@@ -567,7 +567,7 @@ static irqreturn_t gk20a_intr_thread_stall(int irq, void *dev_id)
567 if (mc_intr_0 & mc_intr_0_priv_ring_pending_f()) 567 if (mc_intr_0 & mc_intr_0_priv_ring_pending_f())
568 gk20a_priv_ring_isr(g); 568 gk20a_priv_ring_isr(g);
569 if (mc_intr_0 & mc_intr_0_ltc_pending_f()) 569 if (mc_intr_0 & mc_intr_0_ltc_pending_f())
570 gk20a_mm_ltc_isr(g); 570 g->ops.ltc.isr(g);
571 if (mc_intr_0 & mc_intr_0_pbus_pending_f()) 571 if (mc_intr_0 & mc_intr_0_pbus_pending_f())
572 gk20a_pbus_isr(g); 572 gk20a_pbus_isr(g);
573 573
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h
index 13d385f5..366ee5a7 100644
--- a/drivers/gpu/nvgpu/gk20a/gk20a.h
+++ b/drivers/gpu/nvgpu/gk20a/gk20a.h
@@ -82,6 +82,7 @@ struct gpu_ops {
82 void (*sync_debugfs)(struct gk20a *g); 82 void (*sync_debugfs)(struct gk20a *g);
83 void (*init_fs_state)(struct gk20a *g); 83 void (*init_fs_state)(struct gk20a *g);
84 void (*elpg_flush)(struct gk20a *g); 84 void (*elpg_flush)(struct gk20a *g);
85 void (*isr)(struct gk20a *g);
85 } ltc; 86 } ltc;
86 struct { 87 struct {
87 int (*init_fs_state)(struct gk20a *g); 88 int (*init_fs_state)(struct gk20a *g);
diff --git a/drivers/gpu/nvgpu/gk20a/ltc_gk20a.c b/drivers/gpu/nvgpu/gk20a/ltc_gk20a.c
index f5c6d7e7..c1ba2aee 100644
--- a/drivers/gpu/nvgpu/gk20a/ltc_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/ltc_gk20a.c
@@ -203,6 +203,15 @@ static void gk20a_ltc_init_fs_state(struct gk20a *g)
203 g->max_ltc_count = g->ltc_count = 1; 203 g->max_ltc_count = g->ltc_count = 1;
204} 204}
205 205
206void gk20a_ltc_isr(struct gk20a *g)
207{
208 u32 intr;
209
210 intr = gk20a_readl(g, ltc_ltc0_ltss_intr_r());
211 gk20a_err(dev_from_gk20a(g), "ltc: %08x\n", intr);
212 gk20a_writel(g, ltc_ltc0_ltss_intr_r(), intr);
213}
214
206void gk20a_init_ltc(struct gpu_ops *gops) 215void gk20a_init_ltc(struct gpu_ops *gops)
207{ 216{
208 gops->ltc.determine_L2_size_bytes = gk20a_determine_L2_size_bytes; 217 gops->ltc.determine_L2_size_bytes = gk20a_determine_L2_size_bytes;
@@ -220,4 +229,5 @@ void gk20a_init_ltc(struct gpu_ops *gops)
220#endif 229#endif
221 gops->ltc.elpg_flush = gk20a_mm_g_elpg_flush_locked; 230 gops->ltc.elpg_flush = gk20a_mm_g_elpg_flush_locked;
222 gops->ltc.init_fs_state = gk20a_ltc_init_fs_state; 231 gops->ltc.init_fs_state = gk20a_ltc_init_fs_state;
232 gops->ltc.isr = gk20a_ltc_isr;
223} 233}
diff --git a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c
index 624eec94..be22e4a0 100644
--- a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c
@@ -2996,15 +2996,6 @@ int gk20a_mm_suspend(struct gk20a *g)
2996 return 0; 2996 return 0;
2997} 2997}
2998 2998
2999void gk20a_mm_ltc_isr(struct gk20a *g)
3000{
3001 u32 intr;
3002
3003 intr = gk20a_readl(g, ltc_ltc0_ltss_intr_r());
3004 gk20a_err(dev_from_gk20a(g), "ltc: %08x\n", intr);
3005 gk20a_writel(g, ltc_ltc0_ltss_intr_r(), intr);
3006}
3007
3008bool gk20a_mm_mmu_debug_mode_enabled(struct gk20a *g) 2999bool gk20a_mm_mmu_debug_mode_enabled(struct gk20a *g)
3009{ 3000{
3010 u32 debug_ctrl = gk20a_readl(g, fb_mmu_debug_ctrl_r()); 3001 u32 debug_ctrl = gk20a_readl(g, fb_mmu_debug_ctrl_r());