From bc4026bda7b647e65c7e630c1ce1a6926a9138d2 Mon Sep 17 00:00:00 2001 From: Ulf Hansson Date: Fri, 11 Jan 2019 09:30:00 +0100 Subject: [PATCH] mmc: rtsx_usb_sdmmc: Don't runtime resume the device while changing led BugLink: https://bugs.launchpad.net/bugs/1811337 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 Tested-by: Kai-Heng Feng Tested-by: Oleksandr Natalenko (cherry picked from commit 4bfdd76dcb672dd55121b04ed7f1c1ff4343f1ef) Signed-off-by: AceLan Kao Acked-by: Colin Ian King Acked-by: Kai-Heng Feng Signed-off-by: Kleber Sacilotto de Souza --- drivers/mmc/host/rtsx_usb_sdmmc.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/mmc/host/rtsx_usb_sdmmc.c b/drivers/mmc/host/rtsx_usb_sdmmc.c index 78422079ecfa..bb0ec00ef357 100644 --- a/drivers/mmc/host/rtsx_usb_sdmmc.c +++ b/drivers/mmc/host/rtsx_usb_sdmmc.c @@ -1309,14 +1309,18 @@ static void rtsx_usb_update_led(struct work_struct *work) container_of(work, struct rtsx_usb_sdmmc, led_work); struct rtsx_ucr *ucr = host->ucr; - pm_runtime_get_sync(sdmmc_dev(host)); + pm_runtime_get_noresume(sdmmc_dev(host)); mutex_lock(&ucr->dev_mutex); + if (host->power_mode == MMC_POWER_OFF) + goto out; + if (host->led.brightness == LED_OFF) rtsx_usb_turn_off_led(ucr); else rtsx_usb_turn_on_led(ucr); +out: mutex_unlock(&ucr->dev_mutex); pm_runtime_put(sdmmc_dev(host)); } -- 2.39.5