• Tony Lindgren's avatar
    wlcore: sdio: Fix flakey SDIO runtime PM handling · 728a9dc6
    Tony Lindgren authored
    We can have pm_runtime_get_sync() return 1, and we can have
    pm_runtime_put_sync() return -EBUSY. See rpm_suspend() and
    rpm_resume() for more information.
    
    Fix the issue by returning 0 from wl12xx_sdio_power_on() on success.
    And use pm_runtime_put() instead of pm_runtime_put_sync() for
    wl12xx_sdio_power_off(), then the MMC subsystem will idle the bus
    when suitable.
    
    Otherwise wlcore can sometimes get confused and may report bogus
    errors and WLAN connection can fail.
    
    Note that while wlcore checks the return value for wl1271_power_on(),
    the return value is ignored for wl1271_power_off(). Let's fix them
    both though to avoid further confusion in the future.
    
    Fixes: 60f36637 ("wlcore: sdio: allow pm to handle sdio power")
    Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
    Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
    728a9dc6
sdio.c 11.6 KB