Skip to contentSkip to conversation

3.18 SDIO driver re-attach issue

DISCUSSION Ben Dooks 2 participants 2 messages Jun 10, 2015 – Jun 17, 2015 MMC, SD and SDIO

lore
Share & tools
lore

Ben Dooks

author
#0 lore raw

We are having an issue with 3.18 on an OMAP3517 and a TI WL1271 Wifi SDIO card attached to an hsmmc port. The module is powered from the main 3.3/1.8V supply rails so cannot be powered down.

The wifi driver is built as a module, and when the module is unloaded and then reloaded the driver attach fails. The issue is sdio_bus_probe() calls the sdio_set_block_size(, func, 0) which fails with -110 (ETIMEDOUT) on the second load.

Is it possible we need to either ignore the error, or try and re-set the function when either the driver un-binds / if the first sdio_set_block_size(, func, 0) call happens?

Currently we ignore the error and the wifi driver seems to be working with the device. If there is a better fix then we would like to know so it can be fixed properly up-stream.

Signature · 2 lines
Ben Dooks				http://www.codethink.co.uk/
Senior Engineer				Codethink - Providing Genius
#1 lore raw
Quoted 9 lines · Ben Dooks

We are having an issue with 3.18 on an OMAP3517 and a TI WL1271 Wifi SDIO card attached to an hsmmc port. The module is powered from the main 3.3/1.8V supply rails so cannot be powered down.

The wifi driver is built as a module, and when the module is unloaded and then reloaded the driver attach fails. The issue is sdio_bus_probe() calls the sdio_set_block_size(, func, 0) which fails with -110 (ETIMEDOUT) on the second load.

Quoted 7 lines

Is it possible we need to either ignore the error, or try and re-set the function when either the driver un-binds / if the first sdio_set_block_size(, func, 0) call happens?

Currently we ignore the error and the wifi driver seems to be working with the device. If there is a better fix then we would like to know so it can be fixed properly up-stream.

I don't think it should fail. So instead of applying a workaround (ignoring/re-setting/re-trying), I would rather try to find the reason to *why* the error occurs.

Just a simple test you could do is to *not* call sdio_set_block_size() the second time in ->probe(), and see if that will give you other issues.

Kind regards
Uffe