x86: mrst: Set vRTC's IRQ to level trigger type

When setting up the mpc_intsrc structure for vRTC's IRQ,
we need to set its irqflag to level trigger, otherwise
it will be taken as edge triggered and the vRTC IRQ will
fire only once, as there is never a EOI issued from the
IA core for it.

The original code worked in previous kernel. This is because it
was configured to level trigger type by luck. It fell
into the default PCI trigger category which is level triggered.

Signed-off-by: Feng Tang <feng.tang@intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
LKML-Reference: <20101111155019.12924.569.stgit@localhost.localdomain>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>

authored by

Feng Tang and committed by
Thomas Gleixner
6f207e9b 86071535

+1 -1
+1 -1
arch/x86/platform/mrst/mrst.c
··· 195 totallen, (u32)pentry->phys_addr, pentry->irq); 196 mp_irq.type = MP_IOAPIC; 197 mp_irq.irqtype = mp_INT; 198 - mp_irq.irqflag = 0; 199 mp_irq.srcbus = 0; 200 mp_irq.srcbusirq = pentry->irq; /* IRQ */ 201 mp_irq.dstapic = MP_APIC_ALL;
··· 195 totallen, (u32)pentry->phys_addr, pentry->irq); 196 mp_irq.type = MP_IOAPIC; 197 mp_irq.irqtype = mp_INT; 198 + mp_irq.irqflag = 0xf; /* level trigger and active low */ 199 mp_irq.srcbus = 0; 200 mp_irq.srcbusirq = pentry->irq; /* IRQ */ 201 mp_irq.dstapic = MP_APIC_ALL;