rmmod libertas_sdio and reinsert causes problems with firmware upload.

Jonathan Cameron jic23 at cam.ac.uk
Tue Sep 2 13:19:02 EDT 2008


Hi Pierre,
>> On Mon, 2008-09-01 at 16:24 +0100, Jonathan Cameron wrote:
> 
> *snip*
> 
>>> 	ret = sdio_writesb(card->func, card->ioport,
>>> 			   packet->buffer, packet->nb);
>>> 	if (ret)
>>> 		printk("failed?\n");
>>> 	printk("I think I've reset the card by here?\n");
> 
> You might want to try this here:
> 
> sdio_func_disable(card->func);
> sdio_func_enable(card->func);
> 
> Possibly also with a slight delay between the two. If the chip is
> sanely designed, that should power down everything but the SDIO
> frontend.
No luck unfortunately. 

I'm still getting a time out when I try to read the scratch pad after doing
this.

Can someone with the relevant firmware docs (anything more recent that 5.1
- using 9.70.3) confirm the form of the command is correct.

The command definition in hostcmd.h has an action field whereas the 5.1
firmware spec claims there are no data fields at all.  Would make life easier
to know which is correct
> 
>>> 	sdio_release_host(card->func);
>>> 	msleep(2000);
>>> release:
> 
> This should be further up or you can exit with the lock held.
Good point!

thanks,

Jonathan



More information about the libertas-dev mailing list