[openwrt/openwrt] mac80211: Fix loading of rsi_sdio module

LEDE Commits lede-commits at lists.infradead.org
Wed Apr 18 15:05:04 PDT 2018


hauke pushed a commit to openwrt/openwrt.git, branch master:
https://git.lede-project.org/51e4868fc90e79adf6a58cb3af6ab178b339d84d

commit 51e4868fc90e79adf6a58cb3af6ab178b339d84d
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Wed Apr 18 23:50:25 2018 +0200

    mac80211: Fix loading of rsi_sdio module
    
    When CONFIG_PM was not set rsi_sdio_reinit_device() was not compiled
    into the driver but referenced.
    This is a backport form the mainline Linux kernel.
    
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 ...e-rsi_sdio_reinit_device-out-of-CONFIG_PM.patch | 96 ++++++++++++++++++++++
 1 file changed, 96 insertions(+)

diff --git a/package/kernel/mac80211/patches/971-rsi-move-rsi_sdio_reinit_device-out-of-CONFIG_PM.patch b/package/kernel/mac80211/patches/971-rsi-move-rsi_sdio_reinit_device-out-of-CONFIG_PM.patch
new file mode 100644
index 0000000..499b4ee
--- /dev/null
+++ b/package/kernel/mac80211/patches/971-rsi-move-rsi_sdio_reinit_device-out-of-CONFIG_PM.patch
@@ -0,0 +1,96 @@
+From 39f1332c526cd9d6de59a72520e8334e54b62cda Mon Sep 17 00:00:00 2001
+From: Amitkumar Karwar <amit.karwar at redpinesignals.com>
+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 <fengguang.wu at intel.com>
+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 <amit.karwar at redpinesignals.com>
+Signed-off-by: Kalle Valo <kvalo at codeaurora.org>
+---
+ 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



More information about the lede-commits mailing list