|
From: Jochen R. <jo...@pa...> - 2002-12-04 11:14:08
|
>
> I have traced the problem when issuing this line:
>
> modprobe cs4232 io=0x830 irq=10 dma=0 dma2=1
>
> till this line of code:
>
> if (request_irq(devc->irq, adintr, 0, devc->name, (void *)my_dev) < 0)
>
> It doesn't come back from the request_irq call, as it starts executing
> adintr again and again in a loop without stopping.
>
Perhaps the interrupt controller is configured for level-sensitive (PCI)
interrupt on irq 10, instead of edge-triggered (ISA).
In arch/ppc/kernel/prep_pci.c, change line 962:
irq_edge_mask_hi = 0xA4; /* irq's 10, 13, 15 level-triggered */
to this:
#ifdef CONFIG_NS1000
irq_edge_mask_hi = 0xA0; /* irq's 13, 15 level-triggered */
#else
irq_edge_mask_hi = 0xA4; /* irq's 10, 13, 15 level-triggered */
#endif
Hope this works.
I will try to put in a dynamic detection for the NS1000 at some point to avoid all
the #ifdef stuff.
Jochen
|