mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-29 10:08:59 +00:00
f5317ed5d2
This prepares brcmfmac for better country handling and fixes BCM4360 support which was always failing with: [ 13.249195] brcmfmac: brcmf_pcie_download_fw_nvram: FW failed to initialize Signed-off-by: Rafał Miłecki <zajec5@gmail.com> SVN-Revision: 48959
136 lines
3.9 KiB
Diff
136 lines
3.9 KiB
Diff
From: Hante Meuleman <meuleman@broadcom.com>
|
|
Date: Wed, 17 Feb 2016 11:27:02 +0100
|
|
Subject: [PATCH] brcmfmac: move module init and exit to common
|
|
|
|
In preparation of module parameters for all devices the module init
|
|
and exit routines are moved to the common file.
|
|
|
|
Reviewed-by: Arend Van Spriel <arend@broadcom.com>
|
|
Reviewed-by: Franky (Zhenhui) Lin <frankyl@broadcom.com>
|
|
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
|
|
Signed-off-by: Hante Meuleman <meuleman@broadcom.com>
|
|
Signed-off-by: Arend van Spriel <arend@broadcom.com>
|
|
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
---
|
|
|
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
|
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
|
|
@@ -28,6 +28,10 @@
|
|
#include "tracepoint.h"
|
|
#include "common.h"
|
|
|
|
+MODULE_AUTHOR("Broadcom Corporation");
|
|
+MODULE_DESCRIPTION("Broadcom 802.11 wireless LAN fullmac driver.");
|
|
+MODULE_LICENSE("Dual BSD/GPL");
|
|
+
|
|
const u8 ALLFFMAC[ETH_ALEN] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
|
|
|
|
#define BRCMF_DEFAULT_SCAN_CHANNEL_TIME 40
|
|
@@ -221,7 +225,7 @@ void __brcmf_dbg(u32 level, const char *
|
|
}
|
|
#endif
|
|
|
|
-void brcmf_mp_attach(void)
|
|
+static void brcmf_mp_attach(void)
|
|
{
|
|
strlcpy(brcmf_mp_global.firmware_path, brcmf_firmware_path,
|
|
BRCMF_FW_ALTPATH_LEN);
|
|
@@ -249,3 +253,33 @@ void brcmf_mp_device_detach(struct brcmf
|
|
kfree(drvr->settings);
|
|
}
|
|
|
|
+static int __init brcmfmac_module_init(void)
|
|
+{
|
|
+ int err;
|
|
+
|
|
+ /* Initialize debug system first */
|
|
+ brcmf_debugfs_init();
|
|
+
|
|
+#ifdef CPTCFG_BRCMFMAC_SDIO
|
|
+ brcmf_sdio_init();
|
|
+#endif
|
|
+ /* Initialize global module paramaters */
|
|
+ brcmf_mp_attach();
|
|
+
|
|
+ /* Continue the initialization by registering the different busses */
|
|
+ err = brcmf_core_init();
|
|
+ if (err)
|
|
+ brcmf_debugfs_exit();
|
|
+
|
|
+ return err;
|
|
+}
|
|
+
|
|
+static void __exit brcmfmac_module_exit(void)
|
|
+{
|
|
+ brcmf_core_exit();
|
|
+ brcmf_debugfs_exit();
|
|
+}
|
|
+
|
|
+module_init(brcmfmac_module_init);
|
|
+module_exit(brcmfmac_module_exit);
|
|
+
|
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.h
|
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.h
|
|
@@ -89,7 +89,6 @@ struct brcmf_mp_device {
|
|
struct cc_translate *country_codes;
|
|
};
|
|
|
|
-void brcmf_mp_attach(void);
|
|
int brcmf_mp_device_attach(struct brcmf_pub *drvr);
|
|
void brcmf_mp_device_detach(struct brcmf_pub *drvr);
|
|
#ifdef DEBUG
|
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
|
@@ -38,10 +38,6 @@
|
|
#include "pcie.h"
|
|
#include "common.h"
|
|
|
|
-MODULE_AUTHOR("Broadcom Corporation");
|
|
-MODULE_DESCRIPTION("Broadcom 802.11 wireless LAN fullmac driver.");
|
|
-MODULE_LICENSE("Dual BSD/GPL");
|
|
-
|
|
#define MAX_WAIT_FOR_8021X_TX msecs_to_jiffies(950)
|
|
|
|
/* AMPDU rx reordering definitions */
|
|
@@ -1422,19 +1418,15 @@ static void brcmf_driver_register(struct
|
|
}
|
|
static DECLARE_WORK(brcmf_driver_work, brcmf_driver_register);
|
|
|
|
-static int __init brcmfmac_module_init(void)
|
|
+int __init brcmf_core_init(void)
|
|
{
|
|
- brcmf_debugfs_init();
|
|
-#ifdef CPTCFG_BRCMFMAC_SDIO
|
|
- brcmf_sdio_init();
|
|
-#endif
|
|
if (!schedule_work(&brcmf_driver_work))
|
|
return -EBUSY;
|
|
|
|
return 0;
|
|
}
|
|
|
|
-static void __exit brcmfmac_module_exit(void)
|
|
+void __exit brcmf_core_exit(void)
|
|
{
|
|
cancel_work_sync(&brcmf_driver_work);
|
|
|
|
@@ -1447,8 +1439,5 @@ static void __exit brcmfmac_module_exit(
|
|
#ifdef CPTCFG_BRCMFMAC_PCIE
|
|
brcmf_pcie_exit();
|
|
#endif
|
|
- brcmf_debugfs_exit();
|
|
}
|
|
|
|
-module_init(brcmfmac_module_init);
|
|
-module_exit(brcmfmac_module_exit);
|
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.h
|
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.h
|
|
@@ -227,5 +227,7 @@ void brcmf_txflowblock_if(struct brcmf_i
|
|
void brcmf_txfinalize(struct brcmf_if *ifp, struct sk_buff *txp, bool success);
|
|
void brcmf_netif_rx(struct brcmf_if *ifp, struct sk_buff *skb);
|
|
void brcmf_net_setcarrier(struct brcmf_if *ifp, bool on);
|
|
+int __init brcmf_core_init(void);
|
|
+void __exit brcmf_core_exit(void);
|
|
|
|
#endif /* BRCMFMAC_CORE_H */
|