Re: Can multiple device drivers *share* a PCI bridge?

From: H. Peter Anvin (hpa@zytor.com)
Date: Thu Apr 26 2001 - 16:10:14 EST


Followup to: <AF6E1CA59D6AD1119C3A00A0C9893C9A04F57136@cninexchsrv01.crane.navy.mil>
By author: Friedrich Steven E CONT CNIN <friedrich_s@crane.navy.mil>
In newsgroup: linux.dev.kernel
>
> I have 5 IP modules (Industry Pak I/O) that plug onto an IP carrier. The
> carrier has a bridge that gets found via vendor ID/device ID, but the *sub*
> devices don't show up as distinct pci devices. I'm using the *new*
> approach, i.e., defining a pci_device_id struct that has been initialized
> with vendirID/deviceID pairs I'm supporting.
>
> When my module loads, the kernel calls my probe routine. If my probe
> routine returns 0, then this pci device is essentially locked to my device
> driver. How can I share that pci device with multiple drivers? My current
> thoughts are to simply make a *unified* driver that supports the various IP
> modules. That unified driver is not a general solution, but it would be ok
> for this project. I'm curious about how to develop a general solution to
> this problem. I believe any user of these IP modules would want to be able
> to mix-n-match IP modules at will, merely adding device drivers, not having
> a unified driver.
>

A properly designed device should have a separate PCI function (with
its own VID/DID) for each of the subdevices. That's what the PCI
functions are all about. Your device is doing something nonstandard,
so you need a shim device to handle its nonstandard decoding.

        -hpa

-- 
<hpa@transmeta.com> at work, <hpa@zytor.com> in private!
"Unix gives you enough rope to shoot yourself in the foot."
http://www.zytor.com/~hpa/puzzle.txt
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Mon Apr 30 2001 - 21:00:16 EST