PCI interrupt lost

From: Dimitris Lampridis
Date: Mon Dec 13 2004 - 07:51:30 EST


Hi,
I'm writing a device driver for an embedded USB controller (philips
ISP116x). I'm using the evaluation board provided by philips for my
work. This board is a PCI board featuring the Host Controller ISP1160
and a PCI bridge by PLX.

The bad news (for me) is that I don't get to see any interrupts from my
device.

The good news is that I've managed to narrow down the problem. Here is
my case:
1) The Host Controller is configured and operating and is producing
interrupts (I used a logic Analyzer and saw it happening).
2) The driver never services these interrupts. The exact behaviour is
dictated by the "trigger" setting of the INT pin. If it is
edge-triggered, the interrupts keep on coming from the HC. If it is
level-triggered, only one interrupt happens and since it is never
serviced, it keeps on forever, blocking any further signals.
3) The driver IS ABLE to service interrupts. The ISR is installed and
functioning (I was able to see that, when the device was sharing the IRQ
and the ISR was called only to return IRQ_NONE, nevertheless showing
that IF an interrupt was to be received, coming from the Host
Controller, the routine would be called, thus clearing the interrupt on
the controller).

So, to make things short, my device is generating interrupts, my code
has a functioning and registered interrupt routine (/proc/interrupts
agrees as well but interrupt count is 0 for the specific IRQ), but no
interrupt is ever received from the PCI card.

What is wrong here? I'm having trouble coming with any new ideas, so I
thought that maybe someone can help me.
I would appreciate any help, please CC me personally as I'm not yet
subscribed to the list, or find me at the linux-usb-devel list.

Thanx in advance,
--
Dimitris Lampridis <labis@xxxxxxxxxx>

Attachment: signature.asc
Description: This is a digitally signed message part