Questions about request_irq and reading PCI_INTERRUPT_LINE
From: Le Wen
Date: Fri Mar 18 2005 - 13:19:33 EST
Hi, there,
I have problem to grab video from my ati all-in-wonder card. The card is in
a PII Celeron machine with an on board video card (ATI Technologies Inc 3D
Rage IIC AGP). there is no monitor connected with the on board video card. I
only hook my AIW card with a monitor.
I use km-0.6 from gatos project. I load this km_drv module, but kernel
always complains:
km: IRQ 0 busy
I checked code:
km_probe(struct pci_dev *dev, const struct pci_device_id *pci_id)
here dev->irq with a value 0.
When km_probe gets called, it try to request an IRQ0 returns a -EBUSY:
kms_irq=dev.irq;
result=request_irq(kms->irq, handler, SA_SHIRQ, tag, (void *)kms);
if(result==-EBUSY){
printk(KERN_ERR "km: IRQ %ld busy\n", kms->irq);
goto fail;
}
So I tried to get right IRQ number using:
u8 myirq;
int rtn=pci_read_config_byte(dev,PCI_INTERRUPT_LINE, &myirq);
dev->irq=myirq;
kms->irq=dev_irq;
result=request_irq(kms->irq, handler, SA_SHIRQ, tag, (void *)kms);
if(result==-EBUSY){
printk(KERN_ERR "km: IRQ %ld busy\n", kms->irq);
goto fail;
}
if(result<0){
printk(KERN_ERR "km: could not install irq handler:
result=%d\n",result);
goto fail;
}
But this time I got:
km: kms->irq=24
km: could not install irq handler: result=-38
My questions are:
1. I don't know why dev->irq has value of 0?
2. Is an IRQ number of 24 valid for a Intel PII Celeron?
3. What does this result=-38 mean?
Wen, Le
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/