diff options
Diffstat (limited to 'drivers/net/wireless/wl12xx')
-rw-r--r-- | drivers/net/wireless/wl12xx/sdio.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/drivers/net/wireless/wl12xx/sdio.c b/drivers/net/wireless/wl12xx/sdio.c index 6b60caf7e3ed..25215199049f 100644 --- a/drivers/net/wireless/wl12xx/sdio.c +++ b/drivers/net/wireless/wl12xx/sdio.c | |||
@@ -161,10 +161,12 @@ static int wl1271_sdio_power_on(struct wl1271 *wl) | |||
161 | struct sdio_func *func = wl_to_func(wl); | 161 | struct sdio_func *func = wl_to_func(wl); |
162 | int ret; | 162 | int ret; |
163 | 163 | ||
164 | /* Make sure the card will not be powered off by runtime PM */ | 164 | /* If enabled, tell runtime PM not to power off the card */ |
165 | ret = pm_runtime_get_sync(&func->dev); | 165 | if (pm_runtime_enabled(&func->dev)) { |
166 | if (ret < 0) | 166 | ret = pm_runtime_get_sync(&func->dev); |
167 | goto out; | 167 | if (ret) |
168 | goto out; | ||
169 | } | ||
168 | 170 | ||
169 | /* Runtime PM might be disabled, so power up the card manually */ | 171 | /* Runtime PM might be disabled, so power up the card manually */ |
170 | ret = mmc_power_restore_host(func->card->host); | 172 | ret = mmc_power_restore_host(func->card->host); |
@@ -191,8 +193,11 @@ static int wl1271_sdio_power_off(struct wl1271 *wl) | |||
191 | if (ret < 0) | 193 | if (ret < 0) |
192 | return ret; | 194 | return ret; |
193 | 195 | ||
194 | /* Let runtime PM know the card is powered off */ | 196 | /* If enabled, let runtime PM know the card is powered off */ |
195 | return pm_runtime_put_sync(&func->dev); | 197 | if (pm_runtime_enabled(&func->dev)) |
198 | ret = pm_runtime_put_sync(&func->dev); | ||
199 | |||
200 | return ret; | ||
196 | } | 201 | } |
197 | 202 | ||
198 | static int wl1271_sdio_set_power(struct wl1271 *wl, bool enable) | 203 | static int wl1271_sdio_set_power(struct wl1271 *wl, bool enable) |