rmmod libertas_sdio and reinsert causes problems with firmwareupload.
Johan Adolfsson
Johan.Adolfsson at axis.com
Tue Sep 2 17:11:41 EDT 2008
----- Original Message -----
From: "Dan Williams" <dcbw at redhat.com>
To: "Jonathan Cameron" <jic23 at cam.ac.uk>
Cc: <libertas-dev at lists.infradead.org>; "Pierre Ossman"
<drzeus-mmc at drzeus.cx>
Sent: Tuesday, September 02, 2008 8:12 PM
Subject: Re: rmmod libertas_sdio and reinsert causes problems with
firmwareupload.
> 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.
Ack, it's not present in the doc for firmware 9 either.
The doc says to wait at least 100 ms before trying to reload the firmware.
I have some similar(?) issues when trying to reload the modules,
even though I attempt to pull the hardware reset line.
Marvell have some app notes and errats explaining some issues with reset
and the critical timing related to the hardware reset.
/Johan
> Dan
>
>> >
>> >>> sdio_release_host(card->func);
>> >>> msleep(2000);
>> >>> release:
>> >
>> > This should be further up or you can exit with the lock held.
>> Good point!
>
>
>
> _______________________________________________
> libertas-dev mailing list
> libertas-dev at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/libertas-dev
>
More information about the libertas-dev
mailing list