aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/blackfin/mach-common/ints-priority.c41
1 files changed, 28 insertions, 13 deletions
diff --git a/arch/blackfin/mach-common/ints-priority.c b/arch/blackfin/mach-common/ints-priority.c
index c00915156f0c..a233c3ec8824 100644
--- a/arch/blackfin/mach-common/ints-priority.c
+++ b/arch/blackfin/mach-common/ints-priority.c
@@ -176,6 +176,11 @@ static void bfin_internal_mask_irq(unsigned int irq)
176 hard_local_irq_restore(flags); 176 hard_local_irq_restore(flags);
177} 177}
178 178
179static void bfin_internal_mask_irq_chip(struct irq_data *d)
180{
181 bfin_internal_mask_irq(d->irq);
182}
183
179#ifdef CONFIG_SMP 184#ifdef CONFIG_SMP
180static void bfin_internal_unmask_irq_affinity(unsigned int irq, 185static void bfin_internal_unmask_irq_affinity(unsigned int irq,
181 const struct cpumask *affinity) 186 const struct cpumask *affinity)
@@ -211,19 +216,24 @@ static void bfin_internal_unmask_irq(unsigned int irq)
211} 216}
212 217
213#ifdef CONFIG_SMP 218#ifdef CONFIG_SMP
214static void bfin_internal_unmask_irq(unsigned int irq) 219static void bfin_internal_unmask_irq_chip(struct irq_data *d)
215{ 220{
216 struct irq_desc *desc = irq_to_desc(irq); 221 bfin_internal_unmask_irq_affinity(d->irq, d->affinity);
217 bfin_internal_unmask_irq_affinity(irq, desc->affinity);
218} 222}
219 223
220static int bfin_internal_set_affinity(unsigned int irq, const struct cpumask *mask) 224static int bfin_internal_set_affinity(struct irq_data *d,
225 const struct cpumask *mask, bool force)
221{ 226{
222 bfin_internal_mask_irq(irq); 227 bfin_internal_mask_irq(d->irq);
223 bfin_internal_unmask_irq_affinity(irq, mask); 228 bfin_internal_unmask_irq_affinity(d->irq, mask);
224 229
225 return 0; 230 return 0;
226} 231}
232#else
233static void bfin_internal_unmask_irq_chip(struct irq_data *d)
234{
235 bfin_internal_unmask_irq(d->irq);
236}
227#endif 237#endif
228 238
229#ifdef CONFIG_PM 239#ifdef CONFIG_PM
@@ -279,6 +289,11 @@ int bfin_internal_set_wake(unsigned int irq, unsigned int state)
279 289
280 return 0; 290 return 0;
281} 291}
292
293static int bfin_internal_set_wake_chip(struct irq_data *d, unsigned int state)
294{
295 return bfin_internal_set_wake(d->irq, state);
296}
282#endif 297#endif
283 298
284static struct irq_chip bfin_core_irqchip = { 299static struct irq_chip bfin_core_irqchip = {
@@ -291,16 +306,16 @@ static struct irq_chip bfin_core_irqchip = {
291static struct irq_chip bfin_internal_irqchip = { 306static struct irq_chip bfin_internal_irqchip = {
292 .name = "INTN", 307 .name = "INTN",
293 .irq_ack = bfin_ack_noop, 308 .irq_ack = bfin_ack_noop,
294 .mask = bfin_internal_mask_irq, 309 .irq_mask = bfin_internal_mask_irq_chip,
295 .unmask = bfin_internal_unmask_irq, 310 .irq_unmask = bfin_internal_unmask_irq_chip,
296 .mask_ack = bfin_internal_mask_irq, 311 .irq_mask_ack = bfin_internal_mask_irq_chip,
297 .disable = bfin_internal_mask_irq, 312 .irq_disable = bfin_internal_mask_irq_chip,
298 .enable = bfin_internal_unmask_irq, 313 .irq_enable = bfin_internal_unmask_irq_chip,
299#ifdef CONFIG_SMP 314#ifdef CONFIG_SMP
300 .set_affinity = bfin_internal_set_affinity, 315 .irq_set_affinity = bfin_internal_set_affinity,
301#endif 316#endif
302#ifdef CONFIG_PM 317#ifdef CONFIG_PM
303 .set_wake = bfin_internal_set_wake, 318 .irq_set_wake = bfin_internal_set_wake_chip,
304#endif 319#endif
305}; 320};
306 321