|
@@ -0,0 +1,96 @@
|
|
|
+From 39f1332c526cd9d6de59a72520e8334e54b62cda Mon Sep 17 00:00:00 2001
|
|
|
+From: Amitkumar Karwar <[email protected]>
|
|
|
+Date: Wed, 1 Nov 2017 17:42:44 +0530
|
|
|
+Subject: rsi: move rsi_sdio_reinit_device() out of CONFIG_PM
|
|
|
+
|
|
|
+This function is generic. It doesn't contain wowlan specific code.
|
|
|
+It should not be under CONFIG_PM. This patch resolves compilation
|
|
|
+errors observed when CONFIG_PM flag is disabled.
|
|
|
+
|
|
|
+Reported-by: kbuild test robot <[email protected]>
|
|
|
+Fixes: ef71ed0608c ("rsi: sdio: Add WOWLAN support for S5 shutdown state")
|
|
|
+Fixes: a24e35fcee0 ("rsi: sdio: Add WOWLAN support for S4 hibernate state")
|
|
|
+Fixes: e1ced6422a3 ("rsi: sdio: add WOWLAN support for S3 suspend state")
|
|
|
+Signed-off-by: Amitkumar Karwar <[email protected]>
|
|
|
+Signed-off-by: Kalle Valo <[email protected]>
|
|
|
+---
|
|
|
+ drivers/net/wireless/rsi/rsi_91x_sdio.c | 52 ++++++++++++++++-----------------
|
|
|
+ drivers/net/wireless/rsi/rsi_sdio.h | 1 -
|
|
|
+ 2 files changed, 26 insertions(+), 27 deletions(-)
|
|
|
+
|
|
|
+--- a/drivers/net/wireless/rsi/rsi_91x_sdio.c
|
|
|
++++ b/drivers/net/wireless/rsi/rsi_91x_sdio.c
|
|
|
+@@ -871,6 +871,32 @@ fail:
|
|
|
+ return status;
|
|
|
+ }
|
|
|
+
|
|
|
++static int rsi_sdio_reinit_device(struct rsi_hw *adapter)
|
|
|
++{
|
|
|
++ struct rsi_91x_sdiodev *sdev = adapter->rsi_dev;
|
|
|
++ struct sdio_func *pfunction = sdev->pfunction;
|
|
|
++ int ii;
|
|
|
++
|
|
|
++ for (ii = 0; ii < NUM_SOFT_QUEUES; ii++)
|
|
|
++ skb_queue_purge(&adapter->priv->tx_queue[ii]);
|
|
|
++
|
|
|
++ /* Initialize device again */
|
|
|
++ sdio_claim_host(pfunction);
|
|
|
++
|
|
|
++ sdio_release_irq(pfunction);
|
|
|
++ rsi_reset_card(pfunction);
|
|
|
++
|
|
|
++ sdio_enable_func(pfunction);
|
|
|
++ rsi_setupcard(adapter);
|
|
|
++ rsi_init_sdio_slave_regs(adapter);
|
|
|
++ sdio_claim_irq(pfunction, rsi_handle_interrupt);
|
|
|
++ rsi_hal_device_init(adapter);
|
|
|
++
|
|
|
++ sdio_release_host(pfunction);
|
|
|
++
|
|
|
++ return 0;
|
|
|
++}
|
|
|
++
|
|
|
+ static struct rsi_host_intf_ops sdio_host_intf_ops = {
|
|
|
+ .write_pkt = rsi_sdio_host_intf_write_pkt,
|
|
|
+ .read_pkt = rsi_sdio_host_intf_read_pkt,
|
|
|
+@@ -1281,32 +1307,6 @@ static void rsi_shutdown(struct device *
|
|
|
+ rsi_dbg(INFO_ZONE, "***** RSI module shut down *****\n");
|
|
|
+ }
|
|
|
+
|
|
|
+-int rsi_sdio_reinit_device(struct rsi_hw *adapter)
|
|
|
+-{
|
|
|
+- struct rsi_91x_sdiodev *sdev = adapter->rsi_dev;
|
|
|
+- struct sdio_func *pfunction = sdev->pfunction;
|
|
|
+- int ii;
|
|
|
+-
|
|
|
+- for (ii = 0; ii < NUM_SOFT_QUEUES; ii++)
|
|
|
+- skb_queue_purge(&adapter->priv->tx_queue[ii]);
|
|
|
+-
|
|
|
+- /* Initialize device again */
|
|
|
+- sdio_claim_host(pfunction);
|
|
|
+-
|
|
|
+- sdio_release_irq(pfunction);
|
|
|
+- rsi_reset_card(pfunction);
|
|
|
+-
|
|
|
+- sdio_enable_func(pfunction);
|
|
|
+- rsi_setupcard(adapter);
|
|
|
+- rsi_init_sdio_slave_regs(adapter);
|
|
|
+- sdio_claim_irq(pfunction, rsi_handle_interrupt);
|
|
|
+- rsi_hal_device_init(adapter);
|
|
|
+-
|
|
|
+- sdio_release_host(pfunction);
|
|
|
+-
|
|
|
+- return 0;
|
|
|
+-}
|
|
|
+-
|
|
|
+ static int rsi_restore(struct device *dev)
|
|
|
+ {
|
|
|
+ struct sdio_func *pfunction = dev_to_sdio_func(dev);
|
|
|
+--- a/drivers/net/wireless/rsi/rsi_sdio.h
|
|
|
++++ b/drivers/net/wireless/rsi/rsi_sdio.h
|
|
|
+@@ -131,5 +131,4 @@ int rsi_sdio_master_access_msword(struct
|
|
|
+ void rsi_sdio_ack_intr(struct rsi_hw *adapter, u8 int_bit);
|
|
|
+ int rsi_sdio_determine_event_timeout(struct rsi_hw *adapter);
|
|
|
+ int rsi_sdio_check_buffer_status(struct rsi_hw *adapter, u8 q_num);
|
|
|
+-int rsi_sdio_reinit_device(struct rsi_hw *adapter);
|
|
|
+ #endif
|