A question about hot-pluggable PCI.
Bruce M Simpson
bms at spc.org
Mon Apr 11 01:26:08 PDT 2005
I have acquired a Mobility Electronics EasiDock 5000. As some of you may
already know, this is a device which allows you to connect regular PCI
cards to your laptop, using a device called a 'Split Bridge'. (*)
Ok. Cool toy, you may be thinking. Indeed.
But I want to make it work with FreeBSD. (+)
I'd love to hear from anyone who has plans to implement hot-plug in
a BSD, because this is the missing piece of the puzzle currently.
It seems that this device is known to work with Linux, with some further
hacking of support which Magma (who acquired Mobility a few years back)
provide on a 'as is' basis.
So I've begun hacking the pci and pcib drivers from RELENG_5_4 to support
this device. So far, I've been able to probe configuration space. I see
all the devices on the PCI bus inside the expansion chassis.
However I cannot get drivers to attach properly, because resources have
not been assigned to the cards. Normally the BIOS would do this. But
because BIOSes do not normally explore beyond the CardBus bridges, none
of the devices have had their I/O, memory, or interrupt registers set
to non-default values; everything is the same as a pristine bus reset,
even when I boot with the bridge card in a CardBus slot.
In order to get this far I've had to add NEWBUS detach methods to both
pci and pcib, as well as some cleanup in pci_pci.c, and some downright
dirty hacks to deal with subordinate bus numbering which rely on the
current behaviour of our CardBus driver.
I'll post diffs if anyone else is interested; but right now it's pretty
[(*) It is so called because unlike a normal PCI-PCI bridge, the bridge is
'split' in two; there is a CardBus card which goes into your laptop,
to which is connected a proprietary high-speed serial bus cable.
At the other end is a PCI chassis which looks much like any other desktop
PC, which has a jack for the proprietary connector out of the back, wired
up to the other half of the 'split bridge'; this sits on a passive PCI
backplane with several ordinary 33Mhz 32-bit-wide PCI slots.]
[(+) Yes, I know, if OpenCores.org had a PCI IEEE 1394 cell which could just
tunnel arbitrary PCI I/O and configuration transactions, we could implement
this thing using $20 cards from a chain store. If only.]
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Size: 167 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-hackers/attachments/20050411/63e13a3d/attachment.bin
More information about the freebsd-hackers