diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-15 15:33:40 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-15 15:33:40 -0500 |
commit | 16c1020362083b320868c0deef492249089c3cd3 (patch) | |
tree | ff200df3502e6010745713275d69fd0a07e399cf /arch/arm/kernel | |
parent | 65e5d002b5ad220db2bf9557f53de5a98f7dab86 (diff) | |
parent | bbba75606963c82febf7bd2761ea848ac5d1a1bb (diff) |
Merge branch 'devel-stable' of master.kernel.org:/home/rmk/linux-2.6-arm
* 'devel-stable' of master.kernel.org:/home/rmk/linux-2.6-arm: (161 commits)
ARM: pxa: fix building issue of missing physmap.h
ARM: mmp: PXA910 drive strength FAST using wrong value
ARM: mmp: MMP2 drive strength FAST using wrong value
ARM: pxa: fix recursive calls in pxa_low_gpio_chip
AT91: Support for gsia18s board
AT91: Acme Systems FOX Board G20 board files
AT91: board-sam9m10g45ek.c: Remove duplicate inclusion of mach/hardware.h
ARM: pxa: fix suspend/resume array index miscalculation
ARM: pxa: use cpu_has_ipr() consistently in irq.c
ARM: pxa: remove unused variable in clock-pxa3xx.c
ARM: pxa: fix warning in zeus.c
ARM: sa1111: fix typo in sa1111_retrigger_lowirq()
ARM mxs: clkdev related compile fixes
ARM i.MX mx31_3ds: Fix MC13783 regulator names
ARM: plat-stmp3xxx: irq_data conversion.
ARM: plat-spear: irq_data conversion.
ARM: plat-orion: irq_data conversion.
ARM: plat-omap: irq_data conversion.
ARM: plat-nomadik: irq_data conversion.
ARM: plat-mxc: irq_data conversion.
...
Fix up trivial conflict in arch/arm/plat-omap/gpio.c (Lennert
Buytenhek's irq_data conversion clashing with some omap irq updates)
Diffstat (limited to 'arch/arm/kernel')
-rw-r--r-- | arch/arm/kernel/ecard.c | 28 | ||||
-rw-r--r-- | arch/arm/kernel/irq.c | 17 |
2 files changed, 24 insertions, 21 deletions
diff --git a/arch/arm/kernel/ecard.c b/arch/arm/kernel/ecard.c index eed2f795e1b3..2ad62df37730 100644 --- a/arch/arm/kernel/ecard.c +++ b/arch/arm/kernel/ecard.c | |||
@@ -443,40 +443,40 @@ static expansioncard_ops_t ecard_default_ops = { | |||
443 | * | 443 | * |
444 | * They are not meant to be called directly, but via enable/disable_irq. | 444 | * They are not meant to be called directly, but via enable/disable_irq. |
445 | */ | 445 | */ |
446 | static void ecard_irq_unmask(unsigned int irqnr) | 446 | static void ecard_irq_unmask(struct irq_data *d) |
447 | { | 447 | { |
448 | ecard_t *ec = slot_to_ecard(irqnr - 32); | 448 | ecard_t *ec = slot_to_ecard(d->irq - 32); |
449 | 449 | ||
450 | if (ec) { | 450 | if (ec) { |
451 | if (!ec->ops) | 451 | if (!ec->ops) |
452 | ec->ops = &ecard_default_ops; | 452 | ec->ops = &ecard_default_ops; |
453 | 453 | ||
454 | if (ec->claimed && ec->ops->irqenable) | 454 | if (ec->claimed && ec->ops->irqenable) |
455 | ec->ops->irqenable(ec, irqnr); | 455 | ec->ops->irqenable(ec, d->irq); |
456 | else | 456 | else |
457 | printk(KERN_ERR "ecard: rejecting request to " | 457 | printk(KERN_ERR "ecard: rejecting request to " |
458 | "enable IRQs for %d\n", irqnr); | 458 | "enable IRQs for %d\n", d->irq); |
459 | } | 459 | } |
460 | } | 460 | } |
461 | 461 | ||
462 | static void ecard_irq_mask(unsigned int irqnr) | 462 | static void ecard_irq_mask(struct irq_data *d) |
463 | { | 463 | { |
464 | ecard_t *ec = slot_to_ecard(irqnr - 32); | 464 | ecard_t *ec = slot_to_ecard(d->irq - 32); |
465 | 465 | ||
466 | if (ec) { | 466 | if (ec) { |
467 | if (!ec->ops) | 467 | if (!ec->ops) |
468 | ec->ops = &ecard_default_ops; | 468 | ec->ops = &ecard_default_ops; |
469 | 469 | ||
470 | if (ec->ops && ec->ops->irqdisable) | 470 | if (ec->ops && ec->ops->irqdisable) |
471 | ec->ops->irqdisable(ec, irqnr); | 471 | ec->ops->irqdisable(ec, d->irq); |
472 | } | 472 | } |
473 | } | 473 | } |
474 | 474 | ||
475 | static struct irq_chip ecard_chip = { | 475 | static struct irq_chip ecard_chip = { |
476 | .name = "ECARD", | 476 | .name = "ECARD", |
477 | .ack = ecard_irq_mask, | 477 | .irq_ack = ecard_irq_mask, |
478 | .mask = ecard_irq_mask, | 478 | .irq_mask = ecard_irq_mask, |
479 | .unmask = ecard_irq_unmask, | 479 | .irq_unmask = ecard_irq_unmask, |
480 | }; | 480 | }; |
481 | 481 | ||
482 | void ecard_enablefiq(unsigned int fiqnr) | 482 | void ecard_enablefiq(unsigned int fiqnr) |
@@ -551,7 +551,7 @@ static void ecard_check_lockup(struct irq_desc *desc) | |||
551 | printk(KERN_ERR "\nInterrupt lockup detected - " | 551 | printk(KERN_ERR "\nInterrupt lockup detected - " |
552 | "disabling all expansion card interrupts\n"); | 552 | "disabling all expansion card interrupts\n"); |
553 | 553 | ||
554 | desc->chip->mask(IRQ_EXPANSIONCARD); | 554 | desc->irq_data.chip->irq_mask(&desc->irq_data); |
555 | ecard_dump_irq_state(); | 555 | ecard_dump_irq_state(); |
556 | } | 556 | } |
557 | } else | 557 | } else |
@@ -574,7 +574,7 @@ ecard_irq_handler(unsigned int irq, struct irq_desc *desc) | |||
574 | ecard_t *ec; | 574 | ecard_t *ec; |
575 | int called = 0; | 575 | int called = 0; |
576 | 576 | ||
577 | desc->chip->mask(irq); | 577 | desc->irq_data.chip->irq_mask(&desc->irq_data); |
578 | for (ec = cards; ec; ec = ec->next) { | 578 | for (ec = cards; ec; ec = ec->next) { |
579 | int pending; | 579 | int pending; |
580 | 580 | ||
@@ -591,7 +591,7 @@ ecard_irq_handler(unsigned int irq, struct irq_desc *desc) | |||
591 | called ++; | 591 | called ++; |
592 | } | 592 | } |
593 | } | 593 | } |
594 | desc->chip->unmask(irq); | 594 | desc->irq_data.chip->irq_unmask(&desc->irq_data); |
595 | 595 | ||
596 | if (called == 0) | 596 | if (called == 0) |
597 | ecard_check_lockup(desc); | 597 | ecard_check_lockup(desc); |
diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c index 8135438b8818..28536e352deb 100644 --- a/arch/arm/kernel/irq.c +++ b/arch/arm/kernel/irq.c | |||
@@ -88,7 +88,7 @@ int show_interrupts(struct seq_file *p, void *v) | |||
88 | seq_printf(p, "%*d: ", prec, i); | 88 | seq_printf(p, "%*d: ", prec, i); |
89 | for_each_present_cpu(cpu) | 89 | for_each_present_cpu(cpu) |
90 | seq_printf(p, "%10u ", kstat_irqs_cpu(i, cpu)); | 90 | seq_printf(p, "%10u ", kstat_irqs_cpu(i, cpu)); |
91 | seq_printf(p, " %10s", desc->chip->name ? : "-"); | 91 | seq_printf(p, " %10s", desc->irq_data.chip->name ? : "-"); |
92 | seq_printf(p, " %s", action->name); | 92 | seq_printf(p, " %s", action->name); |
93 | for (action = action->next; action; action = action->next) | 93 | for (action = action->next; action; action = action->next) |
94 | seq_printf(p, ", %s", action->name); | 94 | seq_printf(p, ", %s", action->name); |
@@ -181,10 +181,11 @@ int __init arch_probe_nr_irqs(void) | |||
181 | 181 | ||
182 | static void route_irq(struct irq_desc *desc, unsigned int irq, unsigned int cpu) | 182 | static void route_irq(struct irq_desc *desc, unsigned int irq, unsigned int cpu) |
183 | { | 183 | { |
184 | pr_debug("IRQ%u: moving from cpu%u to cpu%u\n", irq, desc->node, cpu); | 184 | pr_debug("IRQ%u: moving from cpu%u to cpu%u\n", irq, desc->irq_data.node, cpu); |
185 | 185 | ||
186 | raw_spin_lock_irq(&desc->lock); | 186 | raw_spin_lock_irq(&desc->lock); |
187 | desc->chip->set_affinity(irq, cpumask_of(cpu)); | 187 | desc->irq_data.chip->irq_set_affinity(&desc->irq_data, |
188 | cpumask_of(cpu), false); | ||
188 | raw_spin_unlock_irq(&desc->lock); | 189 | raw_spin_unlock_irq(&desc->lock); |
189 | } | 190 | } |
190 | 191 | ||
@@ -199,16 +200,18 @@ void migrate_irqs(void) | |||
199 | struct irq_desc *desc; | 200 | struct irq_desc *desc; |
200 | 201 | ||
201 | for_each_irq_desc(i, desc) { | 202 | for_each_irq_desc(i, desc) { |
202 | if (desc->node == cpu) { | 203 | struct irq_data *d = &desc->irq_data; |
203 | unsigned int newcpu = cpumask_any_and(desc->affinity, | 204 | |
205 | if (d->node == cpu) { | ||
206 | unsigned int newcpu = cpumask_any_and(d->affinity, | ||
204 | cpu_online_mask); | 207 | cpu_online_mask); |
205 | if (newcpu >= nr_cpu_ids) { | 208 | if (newcpu >= nr_cpu_ids) { |
206 | if (printk_ratelimit()) | 209 | if (printk_ratelimit()) |
207 | printk(KERN_INFO "IRQ%u no longer affine to CPU%u\n", | 210 | printk(KERN_INFO "IRQ%u no longer affine to CPU%u\n", |
208 | i, cpu); | 211 | i, cpu); |
209 | 212 | ||
210 | cpumask_setall(desc->affinity); | 213 | cpumask_setall(d->affinity); |
211 | newcpu = cpumask_any_and(desc->affinity, | 214 | newcpu = cpumask_any_and(d->affinity, |
212 | cpu_online_mask); | 215 | cpu_online_mask); |
213 | } | 216 | } |
214 | 217 | ||