Browse Source

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]
Yuriy Kolerov 8 years ago
parent
commit
fc73965ed0
1 changed files with 10 additions and 2 deletions
  1. 10 2
      arch/arc/kernel/mcip.c

+ 10 - 2
arch/arc/kernel/mcip.c

@@ -156,15 +156,20 @@ static void idu_set_mode(unsigned int cmn_irq, unsigned int lvl,
 	__mcip_cmd_data(CMD_IDU_SET_MODE, cmn_irq, data.word);
 	__mcip_cmd_data(CMD_IDU_SET_MODE, cmn_irq, data.word);
 }
 }
 
 
-static void idu_irq_mask(struct irq_data *data)
+static void idu_irq_mask_raw(irq_hw_number_t hwirq)
 {
 {
 	unsigned long flags;
 	unsigned long flags;
 
 
 	raw_spin_lock_irqsave(&mcip_lock, flags);
 	raw_spin_lock_irqsave(&mcip_lock, flags);
-	__mcip_cmd_data(CMD_IDU_SET_MASK, data->hwirq, 1);
+	__mcip_cmd_data(CMD_IDU_SET_MASK, hwirq, 1);
 	raw_spin_unlock_irqrestore(&mcip_lock, flags);
 	raw_spin_unlock_irqrestore(&mcip_lock, flags);
 }
 }
 
 
+static void idu_irq_mask(struct irq_data *data)
+{
+	idu_irq_mask_raw(data->hwirq);
+}
+
 static void idu_irq_unmask(struct irq_data *data)
 static void idu_irq_unmask(struct irq_data *data)
 {
 {
 	unsigned long flags;
 	unsigned long flags;
@@ -301,6 +306,9 @@ idu_of_init(struct device_node *intc, struct device_node *parent)
 	/* Parent interrupts (core-intc) are already mapped */
 	/* Parent interrupts (core-intc) are already mapped */
 
 
 	for (i = 0; i < nr_irqs; i++) {
 	for (i = 0; i < nr_irqs; i++) {
+		/* Mask all common interrupts by default */
+		idu_irq_mask_raw(i);
+
 		/*
 		/*
 		 * Return parent uplink IRQs (towards core intc) 24,25,.....
 		 * Return parent uplink IRQs (towards core intc) 24,25,.....
 		 * this step has been done before already
 		 * this step has been done before already