mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-04 18:19:28 +09:00
memstick: Prevent memstick host from getting runtime suspended during card detection
[ Upstream commit e03e303edf ]
We can use MEMSTICK_POWER_{ON,OFF} along with pm_runtime_{get,put}
helpers to let memstick host support runtime pm.
The rpm count may go down to zero before the memstick host powers on, so
the host can be runtime suspended.
So before doing card detection, increment the rpm count to avoid the
host gets runtime suspended. Balance the rpm count after card detection
is done.
Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
Tested-by: Oleksandr Natalenko <oleksandr@natalenko.name>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
35e580cb6b
commit
759e641acd
@@ -18,6 +18,7 @@
|
||||
#include <linux/delay.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/pm_runtime.h>
|
||||
|
||||
#define DRIVER_NAME "memstick"
|
||||
|
||||
@@ -436,6 +437,7 @@ static void memstick_check(struct work_struct *work)
|
||||
struct memstick_dev *card;
|
||||
|
||||
dev_dbg(&host->dev, "memstick_check started\n");
|
||||
pm_runtime_get_noresume(host->dev.parent);
|
||||
mutex_lock(&host->lock);
|
||||
if (!host->card) {
|
||||
if (memstick_power_on(host))
|
||||
@@ -479,6 +481,7 @@ out_power_off:
|
||||
host->set_param(host, MEMSTICK_POWER, MEMSTICK_POWER_OFF);
|
||||
|
||||
mutex_unlock(&host->lock);
|
||||
pm_runtime_put(host->dev.parent);
|
||||
dev_dbg(&host->dev, "memstick_check finished\n");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user