libertas sdio on bf548 w/ uclinux

Dan Williams dcbw at
Mon Apr 14 12:06:53 EDT 2008

On Mon, 2008-04-14 at 10:56 -0500, Nick Moszer wrote:
> Hello,
> I've been banging my head against the wall on this one for a few days now. 
> I'm trying to get a sdio wifi card working on a BF548-EZKIT running 
> uclinux w/ 2.6.24 from the svn.
> The card is a EWWMGMR05KIT-SDIO-US from
> On boot the kernel recognizes the card just fine:
> mmc0: new SDIO card at address 0001
> and it's got an entry in /sys/class/mmc_host/mmc0/mmc0:0001:1 that I can 
> poke at.  Also, SD flash cards work just fine.
> I've got the libertas driver building as a module, when I load it I get
> root:/> modprobe 
> libertas_sdio                                                 
> ieee80211: 802.11 data/management/control stack, 
> git-1.1.13                    
> ieee80211: Copyright (C) 2004-2005 Intel Corporation 
> <jketreno at>
> libertas_sdio: Libertas SDIO 
> driver                                            
> libertas_sdio: Copyright Pierre 
> Ossman                                          
> (about a 60 second pause here, then)
> libertas: can't load helper firmware                            
> libertas: failed to load helper 
> firmware                                       
> libertas_sdio: probe of mmc0:0001:1 failed with error -2
> I've got firmware in /lib/firmware as sd8686.bin and sd8686_helper.bin. 

Where did you get the firmware from?  Does the EW card ship with it's
own firmware?

First thing I'd do is turn on libertas debug by setting the
LIBERTAS_DEBUG Kconfig option, or by #define CONFIG_LIBERTAS_DEBUG in

Next, insmod your libertas.ko like so:

insmod ./libertas.ko libertas_debug=0x4863a7

which turns on the debug output for SDIO and firmware loading a few more
things.  That should help figure out where the issue lies.

Second, what specific SD host controller do you have?


> I came across this thread from last December:
> I talked to Hans and he said he was able to get it working by padding 
> the data so size%4 = 0
> in the if_sdio_card_to_host and if_sdio_host_to_card functions of 
> if_sdio.c.
> Just as is mentioned in the source.
> As far as I can tell those functions aren't running for me, I added 
> printk's and they never fire. 
> Once if_sdio_probe is called in if_sdio.c it gets to ret = 
> if_sdio_prog_firmware(card) and never past. 
> This is all with MMC debugging disabled in the kernel and "Enable full 
> debugging output in the Libertas module" enabled.
> When I enable MMC debugging and try again, I get this over and over from 
> dmesg
> mmc0: starting CMD52 arg 00000a00 flags 00000195
> sdh_request enter, mrp:005d3f20, cmd:005d3f54
> sdh_start_cmd enter cmd:0x005d3f54
> sdh_stat_irq enter
> sdh_cmd_done enter cmd:005d3f54
> sdh_finish_request enter
> mmc0: req done (CMD52): 0: 00001000 00000000 00000000 00000000
> sdh_stat_irq exit
> This problem seems similar to this thread from last November as well:
> Is there something obvious here I'm missing?  Been looking at this too 
> long I think.
> Is this the same dumb Marvell firmware problem where one set won't work 
> for all the 8686 chips? 
> I grabbed my firmware from Marvell's site as well.  I don't think 
> embeddedworks provides any. 
> Thanks!
> _______________________________________________
> libertas-dev mailing list
> libertas-dev at

More information about the libertas-dev mailing list