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