IDE driver support in PPC440
Eugene Surovegin
ebs at ebshome.net
Thu May 15 02:57:51 EST 2003
At 08:20 AM 5/14/2003, Xupei Liang wrote:
>Hi, Eugene,
>
>The IRQ7 is setup as level trigger and active low.
<snip>
>This time, ppc405_pic_get_irq() returns irq 64 because
>the routine knows that all interrupts have been
>disabled (I have looked at UIC_ER0 and UIC_ER1
>and verified that is the case).
No, this is not correct, it should return -1.
Otherwise do_IRQ will spin forever (see arch/ppc/kernel/irq.c)
Here is the code in question:
int
ppc405_pic_get_irq(struct pt_regs *regs)
{
........
if (irq == (NR_UIC_IRQS * NR_UICS))
irq = -1;
#ifdef UIC_DEBUG
printk("ppc405_pic_get_irq - irq %d bit 0x%x\n", irq, bits);
#endif
return (irq);
}
Check, that NR_UIC_IRQS == 32 (defined in include/arch-ppc/irq.h)
and NR_UICS == 2 (defined in /include/arch-ppc/ibm440.h) in your tree.
They weren't set correctly in some early versions of 440GP code.
Eugene
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
More information about the Linuxppc-embedded
mailing list