rmmod libertas_sdio and reinsert causes problems with firmware upload.

Dan Williams dcbw at redhat.com
Tue Sep 2 14:12:13 EDT 2008


On Tue, 2008-09-02 at 18:19 +0100, Jonathan Cameron wrote:
> 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

That field isn't set with the 8.0 GPL drivers and I think it's a
holdover from earlier firmware.  I'm pretty sure it's no longer used.

Dan

> > 
> >>> 	sdio_release_host(card->func);
> >>> 	msleep(2000);
> >>> release:
> > 
> > This should be further up or you can exit with the lock held.
> Good point!





More information about the libertas-dev mailing list