aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYuriy Kolerov <yuriy.kolerov@synopsys.com>2017-02-01 14:00:30 -0500
committerVineet Gupta <vgupta@synopsys.com>2017-02-06 12:37:57 -0500
commitfc73965ed0aa360d1c1813fcdb078533cbab03e3 (patch)
tree82e901c9352be28e26622c8b355b5b1911abf884
parent6f0310a126f1a46cac366327751bb7eb8941bdde (diff)
ARCv2: IDU-intc: mask all common interrupts by default
Signed-off-by: Yuriy Kolerov <yuriy.kolerov@synopsys.com> Signed-off-by: Vineet Gupta <vgupta@synopsys.com> [vgupta: broken off from a bigger patch]
-rw-r--r--arch/arc/kernel/mcip.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/arch/arc/kernel/mcip.c b/arch/arc/kernel/mcip.c
index 21dc89704113..b91d833ea6bb 100644
--- a/arch/arc/kernel/mcip.c
+++ b/arch/arc/kernel/mcip.c
@@ -156,15 +156,20 @@ static void idu_set_mode(unsigned int cmn_irq, unsigned int lvl,
156 __mcip_cmd_data(CMD_IDU_SET_MODE, cmn_irq, data.word); 156 __mcip_cmd_data(CMD_IDU_SET_MODE, cmn_irq, data.word);
157} 157}
158 158
159static void idu_irq_mask(struct irq_data *data) 159static void idu_irq_mask_raw(irq_hw_number_t hwirq)
160{ 160{
161 unsigned long flags; 161 unsigned long flags;
162 162
163 raw_spin_lock_irqsave(&mcip_lock, flags); 163 raw_spin_lock_irqsave(&mcip_lock, flags);
164 __mcip_cmd_data(CMD_IDU_SET_MASK, data->hwirq, 1); 164 __mcip_cmd_data(CMD_IDU_SET_MASK, hwirq, 1);
165 raw_spin_unlock_irqrestore(&mcip_lock, flags); 165 raw_spin_unlock_irqrestore(&mcip_lock, flags);
166} 166}
167 167
168static void idu_irq_mask(struct irq_data *data)
169{
170 idu_irq_mask_raw(data->hwirq);
171}
172
168static void idu_irq_unmask(struct irq_data *data) 173static void idu_irq_unmask(struct irq_data *data)
169{ 174{
170 unsigned long flags; 175 unsigned long flags;
@@ -301,6 +306,9 @@ idu_of_init(struct device_node *intc, struct device_node *parent)
301 /* Parent interrupts (core-intc) are already mapped */ 306 /* Parent interrupts (core-intc) are already mapped */
302 307
303 for (i = 0; i < nr_irqs; i++) { 308 for (i = 0; i < nr_irqs; i++) {
309 /* Mask all common interrupts by default */
310 idu_irq_mask_raw(i);
311
304 /* 312 /*
305 * Return parent uplink IRQs (towards core intc) 24,25,..... 313 * Return parent uplink IRQs (towards core intc) 24,25,.....
306 * this step has been done before already 314 * this step has been done before already