Re: [PATCH 4/5] memstick: rtsx_usb_ms: Support runtime power management

From: Ulf Hansson
Date: Fri Aug 24 2018 - 02:30:45 EST


On 23 August 2018 at 10:12, Kai-Heng Feng <kai.heng.feng@xxxxxxxxxxxxx> wrote:
> at 21:29, Ulf Hansson <ulf.hansson@xxxxxxxxxx> wrote:
>
>> [...]
>>
>>> -#ifdef CONFIG_PM_SLEEP
>>> -static int rtsx_usb_ms_suspend(struct device *dev)
>>> +#ifdef CONFIG_PM
>>> +static int rtsx_usb_ms_runtime_suspend(struct device *dev)
>>> {
>>> struct rtsx_usb_ms *host = dev_get_drvdata(dev);
>>> struct memstick_host *msh = host->msh;
>>>
>>> - dev_dbg(ms_dev(host), "--> %s\n", __func__);
>>> -
>>> + host->suspend = true;
>>> memstick_suspend_host(msh);
>>
>>
>> I missed this one. Does this really work? To me, this looks like doing
>> things upside-down.
>>
>> To suspend the host, you first need to runtime resume it, because
>> mmc_suspend_host() calls into one of the host ops and my touch the
>> device, right?
>>
>> If you want to suspend the host (actually the naming is wrong, as it's
>> about suspending/power-iff the memstick card), that should be done via
>> when the memstick core finds that the card is removed or during system
>> wide suspend.
>
>
> Do you mean the logic was wrong even before my modification?

No. I think you should keep the existing callbacks for system sleep,
they seems to do what they should.

Then add new ones for runtime PM.

[...]

Kind regards
Uffe