Commit a89634cf authored by Ulf Hansson's avatar Ulf Hansson Committed by Sasha Levin

mmc: rtsx_usb_sdmmc: Handle runtime PM while changing the led

[ Upstream commit 4f48aa7a ]

Accesses of the rtsx sdmmc's parent device, which is the rtsx usb device,
must be done when it's runtime resumed. Currently this isn't case when
changing the led, so let's fix this by adding a pm_runtime_get_sync() and
a pm_runtime_put() around those operations.
Reported-by: default avatarRitesh Raj Sarraf <rrs@researchut.com>
Tested-by: default avatarRitesh Raj Sarraf <rrs@researchut.com>
Cc: <stable@vger.kernel.org>
Cc: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
Signed-off-by: default avatarSasha Levin <alexander.levin@verizon.com>
parent e79c2f2f
...@@ -1309,6 +1309,7 @@ static void rtsx_usb_update_led(struct work_struct *work) ...@@ -1309,6 +1309,7 @@ static void rtsx_usb_update_led(struct work_struct *work)
container_of(work, struct rtsx_usb_sdmmc, led_work); container_of(work, struct rtsx_usb_sdmmc, led_work);
struct rtsx_ucr *ucr = host->ucr; struct rtsx_ucr *ucr = host->ucr;
pm_runtime_get_sync(sdmmc_dev(host));
mutex_lock(&ucr->dev_mutex); mutex_lock(&ucr->dev_mutex);
if (host->led.brightness == LED_OFF) if (host->led.brightness == LED_OFF)
...@@ -1317,6 +1318,7 @@ static void rtsx_usb_update_led(struct work_struct *work) ...@@ -1317,6 +1318,7 @@ static void rtsx_usb_update_led(struct work_struct *work)
rtsx_usb_turn_on_led(ucr); rtsx_usb_turn_on_led(ucr);
mutex_unlock(&ucr->dev_mutex); mutex_unlock(&ucr->dev_mutex);
pm_runtime_put(sdmmc_dev(host));
} }
#endif #endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment