Cardbus devices fail probe with error -5 due to NULL archdata.dma_ops. For example in sata_sil.c function sil_init_one rc = pci_set_dma_mask(pdev, ATA_DMA_MASK); which returns -5 (-EIO) because get_dma_ops(&pdev->dev); returns NULL. Adding set_dma_ops(dev, &dma_direct_ops) to the driver fixes the problem, but I don't know if that is the right place to add the call or if that is multi-platform appropriate. Perhaps the cardbus bridge (yenta) should have the call? I think this is the same as https://bugs.launchpad.net/ubuntu/+bug/421940 except that it is a rt2500 card. Also http://bugzilla.kernel.org/show_bug.cgi?id=14121 except that it is for ath5k.
This seems to be fixed in recent kernels (2.6.33-rcX) by means of 2d1c861871d767153538a77c498752b36d4bb4b8 (PCI/cardbus: Add a fixup hook and fix powerpc). Could you confirm this, please?
Fixed for me as of 2.6.32.5