aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211/patches/325-v4.17-0006-brcmfmac-remove-brcmf_bus_started-from-bus-api.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/kernel/mac80211/patches/325-v4.17-0006-brcmfmac-remove-brcmf_bus_started-from-bus-api.patch')
-rw-r--r--package/kernel/mac80211/patches/325-v4.17-0006-brcmfmac-remove-brcmf_bus_started-from-bus-api.patch190
1 files changed, 190 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/325-v4.17-0006-brcmfmac-remove-brcmf_bus_started-from-bus-api.patch b/package/kernel/mac80211/patches/325-v4.17-0006-brcmfmac-remove-brcmf_bus_started-from-bus-api.patch
new file mode 100644
index 0000000000..6d23ccdac2
--- /dev/null
+++ b/package/kernel/mac80211/patches/325-v4.17-0006-brcmfmac-remove-brcmf_bus_started-from-bus-api.patch
@@ -0,0 +1,190 @@
+From de2a3027f6f15e2f6558dc4d178282ccc1f054db Mon Sep 17 00:00:00 2001
+From: Arend Van Spriel <arend.vanspriel@broadcom.com>
+Date: Tue, 20 Feb 2018 00:14:23 +0100
+Subject: [PATCH] brcmfmac: remove brcmf_bus_started() from bus api
+
+No longer needed to call this in bus layer so make it static and call
+it in the last phase of brcmf_attach() instead.
+
+Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
+Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
+Reviewed-by: Franky Lin <franky.lin@broadcom.com>
+Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+---
+ .../net/wireless/broadcom/brcm80211/brcmfmac/bus.h | 1 -
+ .../wireless/broadcom/brcm80211/brcmfmac/core.c | 14 +++++++----
+ .../wireless/broadcom/brcm80211/brcmfmac/pcie.c | 20 +---------------
+ .../wireless/broadcom/brcm80211/brcmfmac/sdio.c | 10 ++------
+ .../net/wireless/broadcom/brcm80211/brcmfmac/usb.c | 28 ++++------------------
+ 5 files changed, 16 insertions(+), 57 deletions(-)
+
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h
+@@ -253,7 +253,6 @@ void brcmf_dev_reset(struct device *dev)
+ /* Configure the "global" bus state used by upper layers */
+ void brcmf_bus_change_state(struct brcmf_bus *bus, enum brcmf_bus_state state);
+
+-int brcmf_bus_started(struct device *dev);
+ s32 brcmf_iovar_data_set(struct device *dev, char *name, void *data, u32 len);
+ void brcmf_bus_add_txhdrlen(struct device *dev, uint len);
+
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
+@@ -1022,11 +1022,10 @@ static int brcmf_revinfo_read(struct seq
+ return 0;
+ }
+
+-int brcmf_bus_started(struct device *dev)
++static int brcmf_bus_started(struct brcmf_pub *drvr)
+ {
+ int ret = -1;
+- struct brcmf_bus *bus_if = dev_get_drvdata(dev);
+- struct brcmf_pub *drvr = bus_if->drvr;
++ struct brcmf_bus *bus_if = drvr->bus_if;
+ struct brcmf_if *ifp;
+ struct brcmf_if *p2p_ifp;
+
+@@ -1043,7 +1042,7 @@ int brcmf_bus_started(struct device *dev
+ brcmf_bus_change_state(bus_if, BRCMF_BUS_UP);
+
+ /* do bus specific preinit here */
+- ret = brcmf_bus_preinit(ifp->drvr->bus_if);
++ ret = brcmf_bus_preinit(bus_if);
+ if (ret < 0)
+ goto fail;
+
+@@ -1163,7 +1162,12 @@ int brcmf_attach(struct device *dev, str
+ /* attach firmware event handler */
+ brcmf_fweh_attach(drvr);
+
+- return ret;
++ ret = brcmf_bus_started(drvr);
++ if (ret != 0) {
++ brcmf_err("dongle is not responding: err=%d\n", ret);
++ goto fail;
++ }
++ return 0;
+
+ fail:
+ brcmf_detach(dev);
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
+@@ -1581,24 +1581,6 @@ static void brcmf_pcie_release_resource(
+ }
+
+
+-static int brcmf_pcie_attach_bus(struct brcmf_pciedev_info *devinfo)
+-{
+- int ret;
+-
+- /* Attach to the common driver interface */
+- ret = brcmf_attach(&devinfo->pdev->dev, devinfo->settings);
+- if (ret) {
+- brcmf_err("brcmf_attach failed\n");
+- } else {
+- ret = brcmf_bus_started(&devinfo->pdev->dev);
+- if (ret)
+- brcmf_err("dongle is not responding\n");
+- }
+-
+- return ret;
+-}
+-
+-
+ static u32 brcmf_pcie_buscore_prep_addr(const struct pci_dev *pdev, u32 addr)
+ {
+ u32 ret_addr;
+@@ -1735,7 +1717,7 @@ static void brcmf_pcie_setup(struct devi
+ init_waitqueue_head(&devinfo->mbdata_resp_wait);
+
+ brcmf_pcie_intr_enable(devinfo);
+- if (brcmf_pcie_attach_bus(devinfo) == 0)
++ if (brcmf_attach(&devinfo->pdev->dev, devinfo->settings) == 0)
+ return;
+
+ brcmf_pcie_bus_console_read(devinfo);
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+@@ -3422,6 +3422,8 @@ static int brcmf_sdio_bus_preinit(struct
+ if (bus->rxbuf)
+ bus->rxblen = value;
+
++ brcmf_sdio_debugfs_create(bus);
++
+ /* the commands below use the terms tx and rx from
+ * a device perspective, ie. bus:txglom affects the
+ * bus transfers from device to host.
+@@ -4136,14 +4138,6 @@ static void brcmf_sdio_firmware_callback
+ goto fail;
+ }
+
+- brcmf_sdio_debugfs_create(bus);
+-
+- err = brcmf_bus_started(dev);
+- if (err != 0) {
+- brcmf_err("dongle is not responding\n");
+- goto fail;
+- }
+-
+ /* ready */
+ return;
+
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
+@@ -1155,27 +1155,6 @@ static const struct brcmf_bus_ops brcmf_
+ .get_fwname = brcmf_usb_get_fwname,
+ };
+
+-static int brcmf_usb_bus_setup(struct brcmf_usbdev_info *devinfo)
+-{
+- int ret;
+-
+- /* Attach to the common driver interface */
+- ret = brcmf_attach(devinfo->dev, devinfo->settings);
+- if (ret) {
+- brcmf_err("brcmf_attach failed\n");
+- return ret;
+- }
+-
+- ret = brcmf_bus_started(devinfo->dev);
+- if (ret)
+- goto fail;
+-
+- return 0;
+-fail:
+- brcmf_detach(devinfo->dev);
+- return ret;
+-}
+-
+ static void brcmf_usb_probe_phase2(struct device *dev, int ret,
+ const struct firmware *fw,
+ void *nvram, u32 nvlen)
+@@ -1203,7 +1182,8 @@ static void brcmf_usb_probe_phase2(struc
+ if (ret)
+ goto error;
+
+- ret = brcmf_usb_bus_setup(devinfo);
++ /* Attach to the common driver interface */
++ ret = brcmf_attach(devinfo->dev, devinfo->settings);
+ if (ret)
+ goto error;
+
+@@ -1253,7 +1233,7 @@ static int brcmf_usb_probe_cb(struct brc
+ }
+
+ if (!brcmf_usb_dlneeded(devinfo)) {
+- ret = brcmf_usb_bus_setup(devinfo);
++ ret = brcmf_attach(devinfo->dev, devinfo->settings);
+ if (ret)
+ goto fail;
+ /* we are done */
+@@ -1456,7 +1436,7 @@ static int brcmf_usb_resume(struct usb_i
+
+ brcmf_dbg(USB, "Enter\n");
+ if (!devinfo->wowl_enabled)
+- return brcmf_usb_bus_setup(devinfo);
++ return brcmf_attach(devinfo->dev, devinfo->settings);
+
+ devinfo->bus_pub.state = BRCMFMAC_USB_STATE_UP;
+ brcmf_usb_rx_fill_all(devinfo);