SDIO firmware download error

Alagu Sankar alagusankar at
Thu Mar 11 03:19:40 EST 2010

Trying my luck with a different subject as the previous one was rejected..

I am in the process of adding SDIO Support for Davinci and using the
Libertas SDIO driver as my standard test setup.  I am using the Linux
2.6.33-rc6 Linux kernel and the associated libertas driver. I have
access to 8385, 8686 and 8688 cards from different vendors, with
diferent firmware versions. I would like to get some inputs from the
list for the following issue that I am facing.

When I use the libertas driver as is, the helper download is always
successful, but the primary firmware loading fails after the first
transfer.  I get a req_size of 17 after the initial 16 byte transfer,
indicating that the error bit is set. For a typical working setup,
there is a 16 byte transfer, followed by a 12 byte transfer and so on.
 If I introduce a delay of 2 milli-seconds between each transfer of
the helper firmware, then there is no problem in downloading the
primary firmware.  Even enabling the debug message
"lbs_deb_sdio("sending %d bytes chunk\n", chunk_size);" alone would
result in successful firmware download.

Except for this 2ms delay during the helper firmware download,
eveything else remains the same and the driver works perfectly fine
afterwards.  With this delay I have a 100% success rate with
8385/8686/8688 cards and associated firmwares.  Without the delay
there is a 100% failure for 8385/8686 cards, but 70%success rate for
8688 card. i.e even without the delay the 8688 firmware dowload would
be succesfull 7 out of 10 times.

The problem could be in the davinci host driver that i have modified,
but I would like to know what can trigger an error during the firmware
download, so that I focus on the right place.  There are absolutely no
SD bus errors during any of the transfers.  Tried both Davinci DM355
and DM365 EVM platforms with the same result. Any help from the group
is appreciated.

- Alagu

More information about the libertas-dev mailing list