Search Linux Wireless

Re: [v2] rsi: sdio suspend and resume support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Sep 22, 2017 at 2:33 PM, Arend van Spriel
<arend.vanspriel@xxxxxxxxxxxx> wrote:
> On 9/21/2017 4:32 PM, Amitkumar Karwar wrote:
>>
>> On Thu, Sep 21, 2017 at 7:08 PM, Souptick Joarder <jrdr.linux@xxxxxxxxx>
>> wrote:
>>>
>>> On Thu, Sep 21, 2017 at 6:21 PM, Amitkumar Karwar <amitkarwar@xxxxxxxxx>
>>> wrote:
>>>>
>>>> From: Karun Eagalapati <karun256@xxxxxxxxx>
>>>>
>>>> SDIO suspend and resume handlers are implemented and verified
>>>> that device works after suspend/resume cycle.
>>>>
>>>> Signed-off-by: Karun Eagalapati <karun256@xxxxxxxxx>
>>>> Signed-off-by: Amitkumar Karwar <amit.karwar@xxxxxxxxxxxxxxxxxx>
>>>> ---
>>>> v2: Replaced never ending while loop with 20msecs loop(Kalle Valo)
>>>> ---
>>>>   drivers/net/wireless/rsi/rsi_91x_sdio.c | 128
>>>> +++++++++++++++++++++++++++++++-
>>>>   drivers/net/wireless/rsi/rsi_sdio.h     |   2 +
>>>>   2 files changed, 126 insertions(+), 4 deletions(-)
>>>>
>>>> diff --git a/drivers/net/wireless/rsi/rsi_91x_sdio.c
>>>> b/drivers/net/wireless/rsi/rsi_91x_sdio.c
>>>> index 8d3a483..b3f8006 100644
>>>> --- a/drivers/net/wireless/rsi/rsi_91x_sdio.c
>>>> +++ b/drivers/net/wireless/rsi/rsi_91x_sdio.c
>>>> @@ -1059,16 +1059,136 @@ static void rsi_disconnect(struct sdio_func
>>>> *pfunction)
>
>
> [...]
>
>
>>>>   static int rsi_suspend(struct device *dev)
>>>>   {
>>>> -       /* Not yet implemented */
>>>> -       return -ENOSYS;
>>>> +       int ret;
>>>> +       struct sdio_func *pfunction = dev_to_sdio_func(dev);
>>>> +       struct rsi_hw *adapter = sdio_get_drvdata(pfunction);
>>>> +       struct rsi_common *common;
>>>> +
>>>> +       if (!adapter) {
>>>> +               rsi_dbg(ERR_ZONE, "Device is not ready\n");
>>>> +               return -ENODEV;
>>>> +       }
>>>> +       common = adapter->priv;
>>>> +       rsi_sdio_disable_interrupts(pfunction);
>>>> +
>>>> +       ret = rsi_set_sdio_pm_caps(adapter);
>>>> +       if (ret)
>>>> +               rsi_dbg(INFO_ZONE,
>>>> +                       "Setting power management caps failed\n");
>>>> +       common->fsm_state = FSM_CARD_NOT_READY;
>>>> +
>>>> +       return 0;
>>>
>>>
>>> I think it should be return ret if rsi_set_sdio_pm_caps() fails.
>>
>>
>> This is intentional. We don't want to return error and abort system
>> suspend operation due to this.
>
>
> Has it been verified that powering down the SDIO bus during the suspend
> works for you device. In other words  does the claim in the commit message
> apply to a sdio host controller not supporting the KEEP_POWER flag as well?

Yes. It is verified. In this case, chip gets re enumerated and
firmware will be re-downloaded after resume.

Regards,
Amitkumar Karwar



[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux