From 0781b55fc172f5439ee2f3ecd016c5fb4db6ce97 Mon Sep 17 00:00:00 2001 From: Kevin Huang Date: Tue, 29 Apr 2014 16:42:48 -0700 Subject: gpu: nvgpu: halize ltc isr Bug 1507804 Change-Id: I3cca0e83dbf911c94422f8bb0b2df675a170b990 Signed-off-by: Kevin Huang Reviewed-on: http://git-master/r/403213 Reviewed-by: Terje Bergstrom Tested-by: Terje Bergstrom --- drivers/gpu/nvgpu/gk20a/gk20a.c | 2 +- drivers/gpu/nvgpu/gk20a/gk20a.h | 1 + drivers/gpu/nvgpu/gk20a/ltc_gk20a.c | 10 ++++++++++ drivers/gpu/nvgpu/gk20a/mm_gk20a.c | 9 --------- 4 files changed, 12 insertions(+), 10 deletions(-) (limited to 'drivers') 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) if (mc_intr_0 & mc_intr_0_priv_ring_pending_f()) gk20a_priv_ring_isr(g); if (mc_intr_0 & mc_intr_0_ltc_pending_f()) - gk20a_mm_ltc_isr(g); + g->ops.ltc.isr(g); if (mc_intr_0 & mc_intr_0_pbus_pending_f()) gk20a_pbus_isr(g); 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 { void (*sync_debugfs)(struct gk20a *g); void (*init_fs_state)(struct gk20a *g); void (*elpg_flush)(struct gk20a *g); + void (*isr)(struct gk20a *g); } ltc; struct { 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) g->max_ltc_count = g->ltc_count = 1; } +void gk20a_ltc_isr(struct gk20a *g) +{ + u32 intr; + + intr = gk20a_readl(g, ltc_ltc0_ltss_intr_r()); + gk20a_err(dev_from_gk20a(g), "ltc: %08x\n", intr); + gk20a_writel(g, ltc_ltc0_ltss_intr_r(), intr); +} + void gk20a_init_ltc(struct gpu_ops *gops) { gops->ltc.determine_L2_size_bytes = gk20a_determine_L2_size_bytes; @@ -220,4 +229,5 @@ void gk20a_init_ltc(struct gpu_ops *gops) #endif gops->ltc.elpg_flush = gk20a_mm_g_elpg_flush_locked; gops->ltc.init_fs_state = gk20a_ltc_init_fs_state; + gops->ltc.isr = gk20a_ltc_isr; } 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) return 0; } -void gk20a_mm_ltc_isr(struct gk20a *g) -{ - u32 intr; - - intr = gk20a_readl(g, ltc_ltc0_ltss_intr_r()); - gk20a_err(dev_from_gk20a(g), "ltc: %08x\n", intr); - gk20a_writel(g, ltc_ltc0_ltss_intr_r(), intr); -} - bool gk20a_mm_mmu_debug_mode_enabled(struct gk20a *g) { u32 debug_ctrl = gk20a_readl(g, fb_mmu_debug_ctrl_r()); -- cgit v1.2.2