aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFeng Tang <feng.tang@intel.com>2010-12-09 10:37:45 +0000
committerAlan Cox <alan@linux.intel.com>2010-12-09 10:37:45 +0000
commit5d06b97ab272feb860f0bff35d4e0d7ad266bdee (patch)
treef3a61ad5dd01355f2b80eb688445714b90ef58b7
parent96ed38607f2c400539b9fe5cda881737ba668b52 (diff)
downloadmrst-s0i3-test-5d06b97ab272feb860f0bff35d4e0d7ad266bdee.tar.gz
mrst-s0i3-test-5d06b97ab272feb860f0bff35d4e0d7ad266bdee.tar.xz
mrst-s0i3-test-5d06b97ab272feb860f0bff35d4e0d7ad266bdee.zip
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 taken as edge triggered and cause the issue that vRTC can only fire IRQ once, as there is never a EOI issued from IA core for it. The original code worked in previous kernel is because it was configured to level trigger type by luck, as it falled into default PCI's trigger categary which is level trigger. Signed-off-by: Feng Tang <feng.tang@intel.com> Signed-off-by: Alan Cox <alan@linux.intel.com>
-rw-r--r--arch/x86/platform/mrst/mrst.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/x86/platform/mrst/mrst.c b/arch/x86/platform/mrst/mrst.c
index 7282f637071..febfeb273b7 100644
--- a/arch/x86/platform/mrst/mrst.c
+++ b/arch/x86/platform/mrst/mrst.c
@@ -200,7 +200,7 @@ int __init sfi_parse_mrtc(struct sfi_table_header *table)
totallen, (u32)pentry->phys_addr, pentry->irq);
mp_irq.type = MP_IOAPIC;
mp_irq.irqtype = mp_INT;
- mp_irq.irqflag = 0;
+ mp_irq.irqflag = 0xf; /* level trigger and active low */
mp_irq.srcbus = 0;
mp_irq.srcbusirq = pentry->irq; /* IRQ */
mp_irq.dstapic = MP_APIC_ALL;