CardBus support on G3 Blue&White

Pavel Roskin proski at
Sun May 23 16:20:02 EDT 2004


I'm trying to use a CardBus card D-Link DWL-650g (prism54 chipset) on an
Apple PowerPC machine known as Blue&White.  It's a desktop system and it
has no native CardBus slots.  I installed TI PCI1410 bridge on it.

16-bit PCMCIA are working just fine.  However, the CardBus card is not
detected.  There are no error messages in the kernel log.  The card just
doesn't appear in the lspci output.

Debugging shows that cb_alloc() is called.  It calls pci_scan_slot(),
which fails to find any devices.  Ultimately, it's pci_scan_device() that
fails to read the vendor ID for the device 02:00.0.

pci_bus_read_config_dword() returns 0xffffffff.  The function that reads
PCI configuration space is indirect_read_config() PowerPC specific.  It's
used both for bus 1 on which the bridge is located and bus 2 for the
devices behind the bridge.

I looked at the PowerPC specific code and found that the main PCI bridge
on that machine is limited to buses 0 and 1.  Those values are read by the
kernel from the open firmware.  Corresponding file is
/proc/device-tree/pci at 80000000/bus-range

This is also confirmed by this message in the kernel log:
Found Grackle (MPC106) PCI host bridge at 0x80000000. Firmware bus number: 0->1

I'm just trying to understand if anything can be done about it.  Maybe
there is some other way to access PCI configuration registers behind the
bridge?  After all, the card is accessed through a PCI device that we can

I cannot find anything like that in the documentation for TI PCI1410.
Maybe other bridges support alternative ways for accessing the
configuration space on the subordinate bus?

Another idea - maybe the subordinate bus could have the same number 1 as
the bus on which the bridge is located?

I'm using Linux 2.6.6-bk9.  I put more information about the system here:

Pavel Roskin

More information about the linux-pcmcia mailing list