diff options
Diffstat (limited to 'drivers/bus/omap_l3_noc.c')
-rw-r--r-- | drivers/bus/omap_l3_noc.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/bus/omap_l3_noc.c b/drivers/bus/omap_l3_noc.c index 0691e6d9c1e4..00e4fed4a39b 100644 --- a/drivers/bus/omap_l3_noc.c +++ b/drivers/bus/omap_l3_noc.c | |||
@@ -169,6 +169,9 @@ static irqreturn_t l3_interrupt_handler(int irq, void *_l3) | |||
169 | err_reg = readl_relaxed(base + flag_mux->offset + | 169 | err_reg = readl_relaxed(base + flag_mux->offset + |
170 | L3_FLAGMUX_REGERR0 + (inttype << 3)); | 170 | L3_FLAGMUX_REGERR0 + (inttype << 3)); |
171 | 171 | ||
172 | err_reg &= ~(inttype ? flag_mux->mask_app_bits : | ||
173 | flag_mux->mask_dbg_bits); | ||
174 | |||
172 | /* Get the corresponding error and analyse */ | 175 | /* Get the corresponding error and analyse */ |
173 | if (err_reg) { | 176 | if (err_reg) { |
174 | /* Identify the source from control status register */ | 177 | /* Identify the source from control status register */ |
@@ -193,6 +196,12 @@ static irqreturn_t l3_interrupt_handler(int irq, void *_l3) | |||
193 | mask_val = readl_relaxed(mask_reg); | 196 | mask_val = readl_relaxed(mask_reg); |
194 | mask_val &= ~(1 << err_src); | 197 | mask_val &= ~(1 << err_src); |
195 | writel_relaxed(mask_val, mask_reg); | 198 | writel_relaxed(mask_val, mask_reg); |
199 | |||
200 | /* Mark these bits as to be ignored */ | ||
201 | if (inttype) | ||
202 | flag_mux->mask_app_bits |= 1 << err_src; | ||
203 | else | ||
204 | flag_mux->mask_dbg_bits |= 1 << err_src; | ||
196 | } | 205 | } |
197 | 206 | ||
198 | /* Error found so break the for loop */ | 207 | /* Error found so break the for loop */ |