I'm trying to suspend/resume a 802.11n SDIO module I have connected to mmc1 slot of the IMX28EVK board. The module is externally powered and requires no power from SDIO except for communications. I run Freescale Linux distribution with 2.6.35 kernel, all latest patches applied. When I press "Power" button on the host to suspend the system, it suspends OK, but once I press that button again to resume, I get the following in my terminal (starting from the moment I suspended):
pswitch goto suspend
PM: Syncing filesystems ... done.
Freezing user space processes ... (elapsed 0.01 seconds) done.
Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
Suspending console(s) (use no_console_suspend to debug)
<...PRESSING POWER TO RESUME NOW...>
mmc1:0001:1: cannot remain alive while host is suspended
mmc1: card 0001 removed
PM: suspend of devices complete after 793.252 msecs
PM: late suspend of devices complete after 0.687 msecs
wakeup irq = 6
PM: early resume of devices complete after 0.531 msecs
mmc1: new high speed SDIO card at address 0001
mmc mmc1:0001: parent mmc1 should not be sleeping
PM: resume of devices complete after 461.624 msecs
Restarting tasks ... done.
PHY: 0:00 - Link is Up - 100/Full
wlan_sdio_poll_card_status failed, tries = 100, cs = 0xc
WLAN: FW download with helper poll status timeout @ 0
wlan_dnld_fw fail ret=0xffffffff
WLAN: Download FW with nowwait: 0
Firmware Init Failed
wlan_sdio: probe of mmc1:0001:1 failed with error -1
The 802.11n module then never recovers from suspend and does not work until I reinsert it. The 802.11 module is capable of suspend/resume, and vendor says the board should power down the VDD_SDIO rail - on my board, it does not happen with this module, and VDD_SDIO of 3.3V remains applied to the 802.11n SDIO interface. Interestingly, when I suspend my system, I measure the VDD_SDIO on mmc0 which has my SD card I'm booting from - and in suspend that VDD_SDIO goes down to 3.12V, and comes back to 3.3V on resume. Card obviously continues to work.
Any ideas on what can be wrong with the system? Perhaps some configuration issues with the kernel?
Thanks a lot.