Libetas can not reload modules

Jonathan Cameron jic23 at
Mon Jun 15 07:39:35 EDT 2009

lijinlei1 wrote:
> I have the same problem, waiting for follow-ups.
> ----- Original Message ----- 
> From: "Dongas" <dongas86 at>
> To: "Jonathan Cameron" <jic23 at>
> Cc: <libertas-dev at>
> Sent: Sunday, June 14, 2009 12:44 PM
> Subject: Re: Libetas can not reload modules
> 2009/6/13 Jonathan Cameron <jic23 at>:
>> Dongas wrote:
>>> Dear ALL,
>>> The issue i encounterred is that libertas modules can not be reloaed.
>>> (It works well when i first insmod them)
>>> I want to rmmod them and do the re-insmod, but the error message is
>>> shown as follows:
>>> # insmod libertas_sdio.ko
>>> libertas_sdio: Libertas SDIO driver
>>> libertas_sdio: Copyright Pierre Ossman
>>> ……
>>> libertas: failed to load helper firmware
>>> libertas leave: if_sdio_prog_helper(), ret -110
>>> After digging in the code, i found that the libertas driver will check
>>> IF_SDIO_IO_RDY and IF_SDIO_DL_RDY bit in IF_SDIO_STATUS register for
>>> the firmware downloading(CMD53 write) operation.
>>> However, the SDIO status read back of mine card indicated that the
>>> card IF_SDIO_DL_RDY bit was alway not set during the module reload
>>> operation.Then the timeout happened with '-ETIMEDOUT' returned.
>>> Is there any body know why?
>> This turns up on the mailing list from time to time.
>> I think the firmware still still doesn't play ball.
> Jonathan , thanks for your reply.
> (I havn't searched out many related mails failed by this issue in the maillist.)
> Could you please clarify a bit more?

I think the last discussion about this was the one following on from...
> Why the firmware still still doesn't play ball?
Don't know. Unfortunately I wasn't in a position to run Marvell's driver and find
out whether their reset code actually works, but we never managed to replicate it
using the in kernel code.
> Is there any way to fix this issue?
We never really managed to isolate the cause I'm afraid.


>>> BTW, i saw some code in if_sdio_prog_firmware funtion as follows.
>>> ---------------------------------------------------------------------------------------------------
>>> if (scratch == IF_SDIO_FIRMWARE_OK) {
>>> lbs_deb_sdio("firmware already loaded\n");
>>> goto success;
>>> }
>>> -----------------------------------------------------------------------------------------------------
>> Someone else may correct me on this, but I think that will only be true
>> immediately after driver load. From then on there is no easy
>> way of finding out what state the card is in.
>>> It seems the driver doesn't need to re-load the firmware if the
>>> firmware is already loaded, right?
>>> In my case, during the first insmod of libertas modules, the driver
>>> works well and i can assume the firmware is already loaded.
>>> But when i reload modules, why the driver still needs to do firmware
>>> reloading rather than skip it as above code said?
>>> (My card is based on Marvell 8686 chipset and kernel is 2.6.29)
>>> Thanks
>>> Regards
>>> Dongas
>>> _______________________________________________
>>> libertas-dev mailing list
>>> libertas-dev at
> _______________________________________________
> libertas-dev mailing list
> libertas-dev at

More information about the libertas-dev mailing list