libertas sdio on bf548 w/ uclinux

Nick Moszer nick.moszer at packetdigital.com
Mon Apr 14 11:56:32 EDT 2008


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 blackfin.uclinux.org svn.
The card is a EWWMGMR05KIT-SDIO-US from embeddedworks.net:
http://www.embeddedworks.net/wlan/oem_sdio_80211g.html

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 linux.intel.com>
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. 

I came across this thread from last December:
http://lists.infradead.org/pipermail/libertas-dev/2007-December/001085.html

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:
http://linux.derkeiler.com/Mailing-Lists/Kernel/2007-11/msg04115.html

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!





More information about the libertas-dev mailing list