|
@@ -0,0 +1,190 @@
|
|
|
+From de2a3027f6f15e2f6558dc4d178282ccc1f054db Mon Sep 17 00:00:00 2001
|
|
|
+From: Arend Van Spriel <[email protected]>
|
|
|
+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 <[email protected]>
|
|
|
+Reviewed-by: Pieter-Paul Giesberts <[email protected]>
|
|
|
+Reviewed-by: Franky Lin <[email protected]>
|
|
|
+Signed-off-by: Arend van Spriel <[email protected]>
|
|
|
+Signed-off-by: Kalle Valo <[email protected]>
|
|
|
+---
|
|
|
+ .../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);
|