aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/bus/omap_l3_noc.c9
-rw-r--r--drivers/bus/omap_l3_noc.h4
2 files changed, 13 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 */
diff --git a/drivers/bus/omap_l3_noc.h b/drivers/bus/omap_l3_noc.h
index ea2f51c984f1..4e18307470f6 100644
--- a/drivers/bus/omap_l3_noc.h
+++ b/drivers/bus/omap_l3_noc.h
@@ -66,11 +66,15 @@ struct l3_target_data {
66 * target data. unsupported ones are marked with 66 * target data. unsupported ones are marked with
67 * L3_TARGET_NOT_SUPPORTED 67 * L3_TARGET_NOT_SUPPORTED
68 * @num_targ_data: number of entries in target data 68 * @num_targ_data: number of entries in target data
69 * @mask_app_bits: ignore these from raw application irq status
70 * @mask_dbg_bits: ignore these from raw debug irq status
69 */ 71 */
70struct l3_flagmux_data { 72struct l3_flagmux_data {
71 u32 offset; 73 u32 offset;
72 struct l3_target_data *l3_targ; 74 struct l3_target_data *l3_targ;
73 u8 num_targ_data; 75 u8 num_targ_data;
76 u32 mask_app_bits;
77 u32 mask_dbg_bits;
74}; 78};
75 79
76 80