SDIO firmware download error

Alagu Sankar Vellaichamy alagusankar at
Tue Mar 30 03:02:06 EDT 2010

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
firsttransfer.  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 download would
be successful 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