mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-24 02:22:34 +03:00
gpu: nvgpu: Use queried interrupt ids
Change-Id: I258b54447d09b32adc076de50997d792f0567af5 Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-on: http://git-master/r/601019 Reviewed-by: Automatic_Commit_Validation_User
This commit is contained in:
committed by
Deepak Nibade
parent
7918de1c1b
commit
2d23236ae2
@@ -102,6 +102,14 @@ static inline u32 top_device_info_runlist_enum_v(u32 r)
|
||||
{
|
||||
return (r >> 21) & 0xf;
|
||||
}
|
||||
static inline u32 top_device_info_intr_enum_v(u32 r)
|
||||
{
|
||||
return (r >> 15) & 0x1f;
|
||||
}
|
||||
static inline u32 top_device_info_reset_enum_v(u32 r)
|
||||
{
|
||||
return (r >> 9) & 0x1f;
|
||||
}
|
||||
static inline u32 top_device_info_type_enum_v(u32 r)
|
||||
{
|
||||
return (r >> 2) & 0x1fffffff;
|
||||
|
||||
@@ -21,17 +21,19 @@
|
||||
|
||||
void mc_gp10b_intr_enable(struct gk20a *g)
|
||||
{
|
||||
u32 eng_intr_mask = gk20a_fifo_engine_interrupt_mask(g);
|
||||
|
||||
gk20a_writel(g, mc_intr_en_clear_r(0), 0xffffffff);
|
||||
gk20a_writel(g, mc_intr_en_set_r(0),
|
||||
mc_intr_pfifo_pending_f()
|
||||
| mc_intr_pgraph_pending_f());
|
||||
| eng_intr_mask);
|
||||
gk20a_writel(g, mc_intr_en_clear_r(1), 0xffffffff);
|
||||
gk20a_writel(g, mc_intr_en_set_r(1),
|
||||
mc_intr_pfifo_pending_f()
|
||||
| mc_intr_pgraph_pending_f()
|
||||
| mc_intr_priv_ring_pending_f()
|
||||
| mc_intr_ltc_pending_f()
|
||||
| mc_intr_pbus_pending_f());
|
||||
| mc_intr_pbus_pending_f()
|
||||
| eng_intr_mask);
|
||||
}
|
||||
|
||||
irqreturn_t mc_gp10b_isr_stall(struct gk20a *g)
|
||||
@@ -71,6 +73,7 @@ irqreturn_t mc_gp10b_isr_nonstall(struct gk20a *g)
|
||||
irqreturn_t mc_gp10b_intr_thread_stall(struct gk20a *g)
|
||||
{
|
||||
u32 mc_intr_0;
|
||||
u32 eng_intr_mask = gk20a_fifo_engine_interrupt_mask(g);
|
||||
|
||||
gk20a_dbg(gpu_dbg_intr, "interrupt thread launched");
|
||||
|
||||
@@ -78,7 +81,7 @@ irqreturn_t mc_gp10b_intr_thread_stall(struct gk20a *g)
|
||||
|
||||
gk20a_dbg(gpu_dbg_intr, "stall intr %08x\n", mc_intr_0);
|
||||
|
||||
if (mc_intr_0 & mc_intr_pgraph_pending_f())
|
||||
if (mc_intr_0 & BIT(g->fifo.engine_info[ENGINE_GR_GK20A].intr_id))
|
||||
gr_gk20a_elpg_protected_call(g, gk20a_gr_isr(g));
|
||||
if (mc_intr_0 & mc_intr_pfifo_pending_f())
|
||||
gk20a_fifo_isr(g);
|
||||
@@ -93,7 +96,7 @@ irqreturn_t mc_gp10b_intr_thread_stall(struct gk20a *g)
|
||||
|
||||
gk20a_writel(g, mc_intr_en_set_r(0),
|
||||
mc_intr_pfifo_pending_f()
|
||||
| mc_intr_pgraph_pending_f());
|
||||
| eng_intr_mask);
|
||||
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
@@ -101,6 +104,7 @@ irqreturn_t mc_gp10b_intr_thread_stall(struct gk20a *g)
|
||||
irqreturn_t mc_gp10b_intr_thread_nonstall(struct gk20a *g)
|
||||
{
|
||||
u32 mc_intr_1;
|
||||
u32 eng_intr_mask = gk20a_fifo_engine_interrupt_mask(g);
|
||||
|
||||
gk20a_dbg(gpu_dbg_intr, "interrupt thread launched");
|
||||
|
||||
@@ -110,15 +114,15 @@ irqreturn_t mc_gp10b_intr_thread_nonstall(struct gk20a *g)
|
||||
|
||||
if (mc_intr_1 & mc_intr_pfifo_pending_f())
|
||||
gk20a_fifo_nonstall_isr(g);
|
||||
if (mc_intr_1 & mc_intr_pgraph_pending_f())
|
||||
if (mc_intr_1 & BIT(g->fifo.engine_info[ENGINE_GR_GK20A].intr_id))
|
||||
gk20a_gr_nonstall_isr(g);
|
||||
|
||||
gk20a_writel(g, mc_intr_en_set_r(1),
|
||||
mc_intr_pfifo_pending_f()
|
||||
| mc_intr_pgraph_pending_f()
|
||||
| mc_intr_priv_ring_pending_f()
|
||||
| mc_intr_ltc_pending_f()
|
||||
| mc_intr_pbus_pending_f());
|
||||
| mc_intr_pbus_pending_f()
|
||||
| eng_intr_mask);
|
||||
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user