diff options
Diffstat (limited to 'arch/powerpc/platforms/cell/pmu.c')
-rw-r--r-- | arch/powerpc/platforms/cell/pmu.c | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/arch/powerpc/platforms/cell/pmu.c b/arch/powerpc/platforms/cell/pmu.c index f28abf2fc273..99c612025e8f 100644 --- a/arch/powerpc/platforms/cell/pmu.c +++ b/arch/powerpc/platforms/cell/pmu.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <linux/interrupt.h> | 25 | #include <linux/interrupt.h> |
26 | #include <linux/types.h> | 26 | #include <linux/types.h> |
27 | #include <asm/io.h> | 27 | #include <asm/io.h> |
28 | #include <asm/irq_regs.h> | ||
28 | #include <asm/machdep.h> | 29 | #include <asm/machdep.h> |
29 | #include <asm/pmc.h> | 30 | #include <asm/pmc.h> |
30 | #include <asm/reg.h> | 31 | #include <asm/reg.h> |
@@ -375,9 +376,9 @@ void cbe_disable_pm_interrupts(u32 cpu) | |||
375 | } | 376 | } |
376 | EXPORT_SYMBOL_GPL(cbe_disable_pm_interrupts); | 377 | EXPORT_SYMBOL_GPL(cbe_disable_pm_interrupts); |
377 | 378 | ||
378 | static irqreturn_t cbe_pm_irq(int irq, void *dev_id, struct pt_regs *regs) | 379 | static irqreturn_t cbe_pm_irq(int irq, void *dev_id) |
379 | { | 380 | { |
380 | perf_irq(regs); | 381 | perf_irq(get_irq_regs()); |
381 | return IRQ_HANDLED; | 382 | return IRQ_HANDLED; |
382 | } | 383 | } |
383 | 384 | ||
@@ -408,3 +409,21 @@ int __init cbe_init_pm_irq(void) | |||
408 | } | 409 | } |
409 | arch_initcall(cbe_init_pm_irq); | 410 | arch_initcall(cbe_init_pm_irq); |
410 | 411 | ||
412 | void cbe_sync_irq(int node) | ||
413 | { | ||
414 | unsigned int irq; | ||
415 | |||
416 | irq = irq_find_mapping(NULL, | ||
417 | IIC_IRQ_IOEX_PMI | ||
418 | | (node << IIC_IRQ_NODE_SHIFT)); | ||
419 | |||
420 | if (irq == NO_IRQ) { | ||
421 | printk(KERN_WARNING "ERROR, unable to get existing irq %d " \ | ||
422 | "for node %d\n", irq, node); | ||
423 | return; | ||
424 | } | ||
425 | |||
426 | synchronize_irq(irq); | ||
427 | } | ||
428 | EXPORT_SYMBOL_GPL(cbe_sync_irq); | ||
429 | |||