summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gv11b/ltc_gv11b.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gv11b/ltc_gv11b.c')
-rw-r--r--drivers/gpu/nvgpu/gv11b/ltc_gv11b.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/gv11b/ltc_gv11b.c b/drivers/gpu/nvgpu/gv11b/ltc_gv11b.c
index 3cea4cd4..a040de23 100644
--- a/drivers/gpu/nvgpu/gv11b/ltc_gv11b.c
+++ b/drivers/gpu/nvgpu/gv11b/ltc_gv11b.c
@@ -70,10 +70,13 @@ void gv11b_ltc_init_fs_state(struct gk20a *g)
70 /* Disable LTC interrupts */ 70 /* Disable LTC interrupts */
71 reg = gk20a_readl(g, ltc_ltcs_ltss_intr_r()); 71 reg = gk20a_readl(g, ltc_ltcs_ltss_intr_r());
72 reg &= ~ltc_ltcs_ltss_intr_en_evicted_cb_m(); 72 reg &= ~ltc_ltcs_ltss_intr_en_evicted_cb_m();
73 reg &= ~ltc_ltcs_ltss_intr_en_illegal_compstat_m();
74 reg &= ~ltc_ltcs_ltss_intr_en_illegal_compstat_access_m(); 73 reg &= ~ltc_ltcs_ltss_intr_en_illegal_compstat_access_m();
75 nvgpu_writel_check(g, ltc_ltcs_ltss_intr_r(), reg); 74 nvgpu_writel_check(g, ltc_ltcs_ltss_intr_r(), reg);
76 75
76 if (g->ops.ltc.intr_en_illegal_compstat)
77 g->ops.ltc.intr_en_illegal_compstat(g,
78 g->ltc_intr_en_illegal_compstat);
79
77 /* Enable ECC interrupts */ 80 /* Enable ECC interrupts */
78 ltc_intr = gk20a_readl(g, ltc_ltcs_ltss_intr_r()); 81 ltc_intr = gk20a_readl(g, ltc_ltcs_ltss_intr_r());
79 ltc_intr |= ltc_ltcs_ltss_intr_en_ecc_sec_error_enabled_f() | 82 ltc_intr |= ltc_ltcs_ltss_intr_en_ecc_sec_error_enabled_f() |
@@ -82,6 +85,24 @@ void gv11b_ltc_init_fs_state(struct gk20a *g)
82 ltc_intr); 85 ltc_intr);
83} 86}
84 87
88void gv11b_ltc_intr_en_illegal_compstat(struct gk20a *g, bool enable)
89{
90 u32 val;
91
92 /* disble/enble illegal_compstat interrupt */
93 val = gk20a_readl(g, ltc_ltcs_ltss_intr_r());
94 if (enable)
95 val = set_field(val,
96 ltc_ltcs_ltss_intr_en_illegal_compstat_m(),
97 ltc_ltcs_ltss_intr_en_illegal_compstat_enabled_f());
98 else
99 val = set_field(val,
100 ltc_ltcs_ltss_intr_en_illegal_compstat_m(),
101 ltc_ltcs_ltss_intr_en_illegal_compstat_disabled_f());
102 gk20a_writel(g, ltc_ltcs_ltss_intr_r(), val);
103}
104
105
85void gv11b_ltc_isr(struct gk20a *g) 106void gv11b_ltc_isr(struct gk20a *g)
86{ 107{
87 u32 mc_intr, ltc_intr3; 108 u32 mc_intr, ltc_intr3;