diff options
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.patch | 190 |
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 0000000..6d23ccd --- /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); |