summaryrefslogtreecommitdiffstats
path: root/drivers/mmc
diff options
context:
space:
mode:
authorUlf Hansson <ulf.hansson@linaro.org>2018-05-31 05:40:39 -0400
committerUlf Hansson <ulf.hansson@linaro.org>2018-12-17 02:26:24 -0500
commit4bfdd76dcb672dd55121b04ed7f1c1ff4343f1ef (patch)
tree88c058370737106b9b4a2fa19547e8c49d7f68a6 /drivers/mmc
parent7d5ef512575663695cf85f3aeb985a0aeb03e364 (diff)
mmc: rtsx_usb_sdmmc: Don't runtime resume the device while changing led
In case the card has been powered off, it seems silly to continue to allow the led to be updated. Instead let's forbid that, as it enables us to prevent runtime resuming the device and thus avoids wasting energy. Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org> Tested-by: Kai-Heng Feng <kai.heng.feng@canonical.com> Tested-by: Oleksandr Natalenko <oleksandr@natalenko.name>
Diffstat (limited to 'drivers/mmc')
-rw-r--r--drivers/mmc/host/rtsx_usb_sdmmc.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/mmc/host/rtsx_usb_sdmmc.c b/drivers/mmc/host/rtsx_usb_sdmmc.c
index 9a3ff22dd0fe..14b4a4e13fe6 100644
--- a/drivers/mmc/host/rtsx_usb_sdmmc.c
+++ b/drivers/mmc/host/rtsx_usb_sdmmc.c
@@ -1297,14 +1297,18 @@ static void rtsx_usb_update_led(struct work_struct *work)
1297 container_of(work, struct rtsx_usb_sdmmc, led_work); 1297 container_of(work, struct rtsx_usb_sdmmc, led_work);
1298 struct rtsx_ucr *ucr = host->ucr; 1298 struct rtsx_ucr *ucr = host->ucr;
1299 1299
1300 pm_runtime_get_sync(sdmmc_dev(host)); 1300 pm_runtime_get_noresume(sdmmc_dev(host));
1301 mutex_lock(&ucr->dev_mutex); 1301 mutex_lock(&ucr->dev_mutex);
1302 1302
1303 if (host->power_mode == MMC_POWER_OFF)
1304 goto out;
1305
1303 if (host->led.brightness == LED_OFF) 1306 if (host->led.brightness == LED_OFF)
1304 rtsx_usb_turn_off_led(ucr); 1307 rtsx_usb_turn_off_led(ucr);
1305 else 1308 else
1306 rtsx_usb_turn_on_led(ucr); 1309 rtsx_usb_turn_on_led(ucr);
1307 1310
1311out:
1308 mutex_unlock(&ucr->dev_mutex); 1312 mutex_unlock(&ucr->dev_mutex);
1309 pm_runtime_put(sdmmc_dev(host)); 1313 pm_runtime_put(sdmmc_dev(host));
1310} 1314}