Search Linux Wireless

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

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

 



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?

Regards,
Arend




[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