avr32: allow system timer to share interrupt to make OProfile work
The following patch allows the avr32_comparator interrupt to be shared. This is necessary as the avr32 oprofile driver shares the irq group 0 with the timer. To make OProfile actually work on AVR32, a small patch for oprofiled is also needed (posted to the oprofile mailing list). Signed-off-by: Nikolaus Voss <n.voss@weinmann.de> [haavard.skinnemoen@atmel.com: set IRQF_SHARED unconditionally] Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
This commit is contained in:
parent
db6ea2c17c
commit
56d3eef2b4
|
@ -43,6 +43,9 @@ static irqreturn_t timer_interrupt(int irq, void *dev_id)
|
||||||
{
|
{
|
||||||
struct clock_event_device *evdev = dev_id;
|
struct clock_event_device *evdev = dev_id;
|
||||||
|
|
||||||
|
if (unlikely(!(intc_get_pending(0) & 1)))
|
||||||
|
return IRQ_NONE;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Disable the interrupt until the clockevent subsystem
|
* Disable the interrupt until the clockevent subsystem
|
||||||
* reprograms it.
|
* reprograms it.
|
||||||
|
@ -55,7 +58,8 @@ static irqreturn_t timer_interrupt(int irq, void *dev_id)
|
||||||
|
|
||||||
static struct irqaction timer_irqaction = {
|
static struct irqaction timer_irqaction = {
|
||||||
.handler = timer_interrupt,
|
.handler = timer_interrupt,
|
||||||
.flags = IRQF_TIMER | IRQF_DISABLED,
|
/* Oprofile uses the same irq as the timer, so allow it to be shared */
|
||||||
|
.flags = IRQF_TIMER | IRQF_DISABLED | IRQF_SHARED,
|
||||||
.name = "avr32_comparator",
|
.name = "avr32_comparator",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue