diff options
author | Yuriy Kolerov <yuriy.kolerov@synopsys.com> | 2017-02-01 14:00:30 -0500 |
---|---|---|
committer | Vineet Gupta <vgupta@synopsys.com> | 2017-02-06 12:37:57 -0500 |
commit | fc73965ed0aa360d1c1813fcdb078533cbab03e3 (patch) | |
tree | 82e901c9352be28e26622c8b355b5b1911abf884 | |
parent | 6f0310a126f1a46cac366327751bb7eb8941bdde (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.c | 12 |
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 | ||
159 | static void idu_irq_mask(struct irq_data *data) | 159 | static 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 | ||
168 | static void idu_irq_mask(struct irq_data *data) | ||
169 | { | ||
170 | idu_irq_mask_raw(data->hwirq); | ||
171 | } | ||
172 | |||
168 | static void idu_irq_unmask(struct irq_data *data) | 173 | static 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 |