Hi,
Dwayne Jacques Fontenot wrote:
> I spent several hours last night moving cards around in my machine
> trying to solve this problem.
>
> The short version is that I need a PCI network and sound card
> that have linux drivers which allow them to share an IRQ.
>
> I currently have a SB PCI64 and a NetGear FA310TX (Tulip based)
> which do not get along on an IRQ.
>
> I need them to share because the BP6 has 5 PCI slots but only 3 IRQs
> among them. It works like this:
>
> AGP INT_0
> PCI1 INT_0
> PCI2 INT_1
> PCI3 INT_2
> PCI4 INT_0
> PCI5 INT_0
>
> INT_3 in the BOIS does not seem to have any effect.
>
> My cards and their constraints are as follows (not in any order):
>
> 1. AGP TNT2 Ultra has an IRQ but does not seem to use it
> 2. PCI TNT requires an IRQ and seems to disturb other cards
> on same IRQ (SB64 has static, FA310TX stops working)
> 3. PCI BT878 TV card driver will not share IRQ (black screen)
> 4. PCI NetGear FA310TX does not work if shared (AFAICT)
> 5. PCI SB64 (es1371) has terrible static if shared with TNT,
> locks when shared with FA310TX
>
> So, my only option is to find a NIC and sound card which will share.
Your current problem is not IRQ sharing, but PCI busmaster sharing.
PCI4 and PCI5 can't be both a PCI busmaster for DMA. So, use for
PCI5 a card which does not tell "Master Capable" with cat /proc/pci
or use the accompanied ISA slot. ;-))
For making the BT878 driver sharing his IRQ, you need nothing but
this little patch:
diff -u -rN linux-2.2.14-ide/drivers/char/bttv.c linux/drivers/char/bttv.c
--- linux-2.2.14-ide/drivers/char/bttv.c Thu Jan 6 13:28:59 2000
+++ linux/drivers/char/bttv.c Mon Feb 7 10:06:00 2000
@@ -3605,7 +3605,7 @@
btwrite(0, BT848_INT_MASK);
result = request_irq(btv->irq, bttv_irq,
- SA_SHIRQ | SA_INTERRUPT,"bttv",(void *)btv);
+ SA_SHIRQ, "bttv",(void *)btv);
if (result==-EINVAL)
{
printk(KERN_ERR "bttv%d: Bad irq number or handler\n",
@@ -3769,7 +3769,7 @@
btv->bt848_mem=ioremap(btv->bt848_adr, 0x1000);
result = request_irq(btv->irq, bttv_irq,
- SA_SHIRQ | SA_INTERRUPT,"bttv",(void *)btv);
+ SA_SHIRQ, "bttv", (void *)btv);
if (result==-EINVAL)
{
printk(KERN_ERR "bttv%d: Bad irq number or handler\n",
Look at this (3 IRQs for PCI):
lxi013:0 23:00:20 ~ # cat /proc/interrupts
CPU0 CPU1
0: 5201242 8787269 IO-APIC-edge timer
1: 1454 1432 IO-APIC-edge keyboard
2: 0 0 XT-PIC cascade
3: 0 1 IO-APIC-edge serial
4: 0 1 IO-APIC-edge serial
5: 1246 1899 IO-APIC-edge wvlan_cs
8: 1 1 IO-APIC-edge rtc
9: 11886 14484 IO-APIC-level es1371, bttv
10: 994098 1018326 IO-APIC-level eth0
11: 34753 33769 IO-APIC-level ide2, ide3, sym53c8xx
12: 10196 9879 IO-APIC-edge PS/2 Mouse
13: 1 0 XT-PIC fpu
14: 59542 87973 IO-APIC-edge ide0
15: 10 4 IO-APIC-edge ide1
NMI: 0
ERR: 0
lxi013:0 23:03:51 ~ #
and show yours.
Cheers -e
--
Eberhard Moenkeberg ([EMAIL PROTECTED], [EMAIL PROTECTED])
--
=- To unsubscribe, email [EMAIL PROTECTED] with the -=
=- body of "unsubscribe linux-abit". -=