Myles Watson napsal(a):
On Mon, Mar 16, 2009 at 1:23 PM, Rudolf Marek r.marek@assembler.cz wrote:
Hi,
All of the other interrupts from 0x0-0xf are set as Edge triggered in the mptable, so that seems likely.
Fine. Second reason might be that the ExtInt pin is wrong for the APIC. I mean it is set wrongly. To which pin sets the original BIOS the ExtInt IRQ?
Do I need to decode the mptable to know that? Is there a utility to do that? I've gotten as far as "ISA is bus 86", but I'm struggling to find ExtINT in there. I don't see anything that matches what I expect.
It should be the interrupt type 3 maybe you can dump the table somewhere?
mp_ExtINT Looking into the mptable for yhe 2895 seems that extint is not pin0 but pin2!
Maybe you can change the code here:
--- ck804_lpc.c (revision 3613) +++ ck804_lpc.c (working copy) @@ -43,9 +43,9 @@ #define INT (1 << 8) /* IO-APIC virtual wire mode configuration */ /* mask, trigger, polarity, destination, delivery, vector */ - { 0, ENABLED | TRIGGER_EDGE | POLARITY_HIGH | PHYSICAL_DEST | ExtINT, NONE}, + { 0, DISABLED, NONE}, { 1, DISABLED, NONE}, - { 2, DISABLED, NONE}, + { 2, ENABLED | TRIGGER_EDGE | POLARITY_HIGH | PHYSICAL_DEST | ExtINT, NONE}, { 3, DISABLED, NONE}, { 4, DISABLED, NONE}, { 5, DISABLED, NONE},
04d0: 20 0c
IRQ 7, IRQ a, IRQ b are edge?
Nope IRQ5 and IRQ10 and IRQ11 are edge.
But I think that linux trusts more the APIC conf and not the MPTable so, after you fix it it may actually start to work.
Rudolf