summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/gk20a.h
diff options
context:
space:
mode:
authorTerje Bergstrom <tbergstrom@nvidia.com>2017-05-11 16:12:03 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2017-05-26 06:34:08 -0400
commit726900b8433294fd89a6d730d2fec9de8e33afda (patch)
tree6d6aa5b6e07a792441e43b74ea273f85933eebe0 /drivers/gpu/nvgpu/gk20a/gk20a.h
parent0bb47c3675d2030545d40353931e2b8120541de4 (diff)
gpu: nvgpu: Split stalling interrupt handling
Split handling of stalling interrupt to Linux specific chip agnostic and OS independent chip specific parts. Linux specific chip independent part contains handler for ISR and passing the control to a bottom half. It uses the new MC HALs intr_stall (query interrupt status), intr_pause (pause interrupts) and intr_resume (resume interrupts). MC HAL isr_stall now returns void and gets called in thread context and thus remove isr_thread_stall and replace the implementation with isr_stall. JIRA NVGPU-26 Change-Id: I206f330f6fc4a1f4def47c5f986585ac4080216d Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-on: http://git-master/r/1480243 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/gk20a.h')
-rw-r--r--drivers/gpu/nvgpu/gk20a/gk20a.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h
index ceadbae2..29ac4763 100644
--- a/drivers/gpu/nvgpu/gk20a/gk20a.h
+++ b/drivers/gpu/nvgpu/gk20a/gk20a.h
@@ -812,13 +812,15 @@ struct gpu_ops {
812 void (*intr_enable)(struct gk20a *g); 812 void (*intr_enable)(struct gk20a *g);
813 void (*intr_unit_config)(struct gk20a *g, 813 void (*intr_unit_config)(struct gk20a *g,
814 bool enable, bool is_stalling, u32 unit); 814 bool enable, bool is_stalling, u32 unit);
815 irqreturn_t (*isr_stall)(struct gk20a *g); 815 void (*isr_stall)(struct gk20a *g);
816 irqreturn_t (*isr_nonstall)(struct gk20a *g); 816 irqreturn_t (*isr_nonstall)(struct gk20a *g);
817 irqreturn_t (*isr_thread_stall)(struct gk20a *g);
818 void (*isr_thread_nonstall)(struct gk20a *g, u32 intr); 817 void (*isr_thread_nonstall)(struct gk20a *g, u32 intr);
819 void (*isr_nonstall_cb)(struct work_struct *work); 818 void (*isr_nonstall_cb)(struct work_struct *work);
820 bool (*is_intr_hub_pending)(struct gk20a *g, u32 mc_intr); 819 bool (*is_intr_hub_pending)(struct gk20a *g, u32 mc_intr);
821 u32 intr_mask_restore[4]; 820 u32 intr_mask_restore[4];
821 u32 (*intr_stall)(struct gk20a *g);
822 void (*intr_stall_pause)(struct gk20a *g);
823 void (*intr_stall_resume)(struct gk20a *g);
822 void (*enable)(struct gk20a *g, u32 units); 824 void (*enable)(struct gk20a *g, u32 units);
823 void (*disable)(struct gk20a *g, u32 units); 825 void (*disable)(struct gk20a *g, u32 units);
824 void (*reset)(struct gk20a *g, u32 units); 826 void (*reset)(struct gk20a *g, u32 units);