Re: [PATCH] PCMCIA bug fix

From: Andrey Ulanov
Date: Wed Jun 30 2004 - 00:35:57 EST


Hi, Russell!

On Tue, Jun 29, 2004 at 04:48:32PM +0100, Russell King wrote:
> On Tue, Jun 29, 2004 at 07:38:09PM +0400, Andrey Ulanov wrote:
>> I tested with one of ieee1394+usb2.0 PCMCIA adapters. Worked fine.
>> Without this patch only first device (ieee1394 controller) was
>> detected.
> Can you provide the lspci output, and a better description of the
> problem you're trying to solve please?

OK. Sorry.

This PCMCIA has four devices:

Bus 6, device 0, function 0:
Class 0c00: PCI device 104c:8024 (rev 0).
IRQ 10.
Master Capable. Latency=16.
Non-prefetchable 32 bit memory at 0x11000000 [0x110007ff].
Non-prefetchable 32 bit memory at 0x11004000 [0x11007fff].
Bus 6, device 0, function 4:
Class 0c03: PCI device 104c:0035 (rev 67).
IRQ 10.
Master Capable. Latency=64.
Non-prefetchable 32 bit memory at 0x11001000 [0x11001fff].
Bus 6, device 0, function 5:
Class 0c03: PCI device 104c:0035 (rev 67).
IRQ 10.
Master Capable. Latency=64.
Non-prefetchable 32 bit memory at 0x11002000 [0x11002fff].
Bus 6, device 0, function 6:
Class 0c03: PCI device 104c:00e0 (rev 4).
IRQ 10.
Master Capable. Latency=68.
Non-prefetchable 32 bit memory at 0x11000800 [0x110008ff].

As you can see functions numbers do not form continual sequence
beginning with zero. That's why current implementation do not work for
me. Here is the part of old code:

fn = 1;
if (hdr & 0x80) {
do {
tmp.devfn = fn;
if (pci_readw(&tmp, PCI_VENDOR_ID, &v) || !v || v == 0xffff)
break;
fn++;
} while (fn < 8);
}
s->functions = fn;

I hope now it is obvious that it detects only first one in my case.

--
with best regards, Andrey Ulanov.
-
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/