On Oct 17, 2006, at 4:05 AM, Smith Marc wrote:

U-Boot 1.1.4 (May 23 2006 - 12:47:17)


that's a pretty old version of u-boot, but I don't think anything's changed in u-boot since then which would affect the wifi-CF card.  You won't be able to access CF from within u-boot with that u-boot, but linux should still be able to do its CF stuff OK.

CPLD responded with: c2
pccard: PCMCIA card inserted into slot 0
pcmcia: registering new device pcmcia0.0
cfio: module license 'unspecified' taints kernel.
Before register driver
Entering cf_attach()
BasePort1=0xc4860000, AssignedIRQ=49
After calling wlan_add_card function
After register driver

This part looks good -- it detected the dual-CF CPLD correctly, and so knows that there are supposed to be 2 CF "slots", ie one slot, one wifi module.  It then correctly detects the wifi module and loads the driver for it.  Everything looks good so far....

NET: Registered protocol family 17
udhcpc (v0.9.9-pre) started
Dec 31 16:01:21 udhcpc[251]: udhcpc (v0.9.9-pre) started


A hang here make me think that the problem is the order of loading the pcmcia vs smc91x drivers.  I'm going to guess that you have an "auto eth0" line in /etc/network/interfaces, and that's causing the scm91x driver to get loaded after pcmcia is already loaded.  smc91x tries to probe for up to 2 smc91x controllers, one of which controllers conflicts with the GPIO lines which are already allocated by the pcmcia driver.  So the smc91x probe is breaking the pcmcia.  To resolve this, you have 2 choices:

1. Do not attempt to load the smc91x driver
2. Load the smc91x driver *before* loading the pcmcia driver.

#2 is the better "general purpose" solution here, achieved by adding "smc91x" ahead of "pcmcia" in /etc/modules.  In your particular case though with the wifi-CF card, you won't need the smc91x driver (since you have no ethernet by definition), so #1 can be achieved by just removing "auto eth0" from /etc/network/interfaces without modifying /etc/modules.

To edit either file, you can modify the bootargs in u-boot temporarily for one boot.  Interrupt the u-boot countdown and do:

GUM> set bootargs=$bootargs init=/bin/sh
GUM> bootd

Now linux will boot into a single-user shell instead of starting init and all the stuff init kicks off.  Then you can use vi to edit /etc/modules or /etc/network/interfaces, then reboot to get back into multi-user mode under init.