* Tony Lindgren <tony@xxxxxxxxxxx> [180515 15:46]: > 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. > @@ -180,7 +180,7 @@ static int wl12xx_sdio_power_off(struct wl12xx_sdio_glue *glue) > sdio_release_host(func); > > /* Let runtime PM know the card is powered off */ > - return pm_runtime_put_sync(&card->dev); > + return pm_runtime_put(&card->dev); > } Looks like we can still get -EBUSY here though. I think we can just ignore the return value of pm_runtime_put() here. Regards, Tony