mac80211: backport "brcmfmac: cleanup and some rework" from 4.17
[oweals/openwrt.git] / package / kernel / mac80211 / patches / 325-v4.17-0006-brcmfmac-remove-brcmf_bus_started-from-bus-api.patch
1 From de2a3027f6f15e2f6558dc4d178282ccc1f054db Mon Sep 17 00:00:00 2001
2 From: Arend Van Spriel <arend.vanspriel@broadcom.com>
3 Date: Tue, 20 Feb 2018 00:14:23 +0100
4 Subject: [PATCH] brcmfmac: remove brcmf_bus_started() from bus api
5
6 No longer needed to call this in bus layer so make it static and call
7 it in the last phase of brcmf_attach() instead.
8
9 Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
10 Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
11 Reviewed-by: Franky Lin <franky.lin@broadcom.com>
12 Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
13 Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
14 ---
15  .../net/wireless/broadcom/brcm80211/brcmfmac/bus.h |  1 -
16  .../wireless/broadcom/brcm80211/brcmfmac/core.c    | 14 +++++++----
17  .../wireless/broadcom/brcm80211/brcmfmac/pcie.c    | 20 +---------------
18  .../wireless/broadcom/brcm80211/brcmfmac/sdio.c    | 10 ++------
19  .../net/wireless/broadcom/brcm80211/brcmfmac/usb.c | 28 ++++------------------
20  5 files changed, 16 insertions(+), 57 deletions(-)
21
22 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h
23 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h
24 @@ -253,7 +253,6 @@ void brcmf_dev_reset(struct device *dev)
25  /* Configure the "global" bus state used by upper layers */
26  void brcmf_bus_change_state(struct brcmf_bus *bus, enum brcmf_bus_state state);
27  
28 -int brcmf_bus_started(struct device *dev);
29  s32 brcmf_iovar_data_set(struct device *dev, char *name, void *data, u32 len);
30  void brcmf_bus_add_txhdrlen(struct device *dev, uint len);
31  
32 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
33 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
34 @@ -1022,11 +1022,10 @@ static int brcmf_revinfo_read(struct seq
35         return 0;
36  }
37  
38 -int brcmf_bus_started(struct device *dev)
39 +static int brcmf_bus_started(struct brcmf_pub *drvr)
40  {
41         int ret = -1;
42 -       struct brcmf_bus *bus_if = dev_get_drvdata(dev);
43 -       struct brcmf_pub *drvr = bus_if->drvr;
44 +       struct brcmf_bus *bus_if = drvr->bus_if;
45         struct brcmf_if *ifp;
46         struct brcmf_if *p2p_ifp;
47  
48 @@ -1043,7 +1042,7 @@ int brcmf_bus_started(struct device *dev
49         brcmf_bus_change_state(bus_if, BRCMF_BUS_UP);
50  
51         /* do bus specific preinit here */
52 -       ret = brcmf_bus_preinit(ifp->drvr->bus_if);
53 +       ret = brcmf_bus_preinit(bus_if);
54         if (ret < 0)
55                 goto fail;
56  
57 @@ -1163,7 +1162,12 @@ int brcmf_attach(struct device *dev, str
58         /* attach firmware event handler */
59         brcmf_fweh_attach(drvr);
60  
61 -       return ret;
62 +       ret = brcmf_bus_started(drvr);
63 +       if (ret != 0) {
64 +               brcmf_err("dongle is not responding: err=%d\n", ret);
65 +               goto fail;
66 +       }
67 +       return 0;
68  
69  fail:
70         brcmf_detach(dev);
71 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
72 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
73 @@ -1581,24 +1581,6 @@ static void brcmf_pcie_release_resource(
74  }
75  
76  
77 -static int brcmf_pcie_attach_bus(struct brcmf_pciedev_info *devinfo)
78 -{
79 -       int ret;
80 -
81 -       /* Attach to the common driver interface */
82 -       ret = brcmf_attach(&devinfo->pdev->dev, devinfo->settings);
83 -       if (ret) {
84 -               brcmf_err("brcmf_attach failed\n");
85 -       } else {
86 -               ret = brcmf_bus_started(&devinfo->pdev->dev);
87 -               if (ret)
88 -                       brcmf_err("dongle is not responding\n");
89 -       }
90 -
91 -       return ret;
92 -}
93 -
94 -
95  static u32 brcmf_pcie_buscore_prep_addr(const struct pci_dev *pdev, u32 addr)
96  {
97         u32 ret_addr;
98 @@ -1735,7 +1717,7 @@ static void brcmf_pcie_setup(struct devi
99         init_waitqueue_head(&devinfo->mbdata_resp_wait);
100  
101         brcmf_pcie_intr_enable(devinfo);
102 -       if (brcmf_pcie_attach_bus(devinfo) == 0)
103 +       if (brcmf_attach(&devinfo->pdev->dev, devinfo->settings) == 0)
104                 return;
105  
106         brcmf_pcie_bus_console_read(devinfo);
107 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
108 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
109 @@ -3422,6 +3422,8 @@ static int brcmf_sdio_bus_preinit(struct
110         if (bus->rxbuf)
111                 bus->rxblen = value;
112  
113 +       brcmf_sdio_debugfs_create(bus);
114 +
115         /* the commands below use the terms tx and rx from
116          * a device perspective, ie. bus:txglom affects the
117          * bus transfers from device to host.
118 @@ -4136,14 +4138,6 @@ static void brcmf_sdio_firmware_callback
119                 goto fail;
120         }
121  
122 -       brcmf_sdio_debugfs_create(bus);
123 -
124 -       err = brcmf_bus_started(dev);
125 -       if (err != 0) {
126 -               brcmf_err("dongle is not responding\n");
127 -               goto fail;
128 -       }
129 -
130         /* ready */
131         return;
132  
133 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
134 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
135 @@ -1155,27 +1155,6 @@ static const struct brcmf_bus_ops brcmf_
136         .get_fwname = brcmf_usb_get_fwname,
137  };
138  
139 -static int brcmf_usb_bus_setup(struct brcmf_usbdev_info *devinfo)
140 -{
141 -       int ret;
142 -
143 -       /* Attach to the common driver interface */
144 -       ret = brcmf_attach(devinfo->dev, devinfo->settings);
145 -       if (ret) {
146 -               brcmf_err("brcmf_attach failed\n");
147 -               return ret;
148 -       }
149 -
150 -       ret = brcmf_bus_started(devinfo->dev);
151 -       if (ret)
152 -               goto fail;
153 -
154 -       return 0;
155 -fail:
156 -       brcmf_detach(devinfo->dev);
157 -       return ret;
158 -}
159 -
160  static void brcmf_usb_probe_phase2(struct device *dev, int ret,
161                                    const struct firmware *fw,
162                                    void *nvram, u32 nvlen)
163 @@ -1203,7 +1182,8 @@ static void brcmf_usb_probe_phase2(struc
164         if (ret)
165                 goto error;
166  
167 -       ret = brcmf_usb_bus_setup(devinfo);
168 +       /* Attach to the common driver interface */
169 +       ret = brcmf_attach(devinfo->dev, devinfo->settings);
170         if (ret)
171                 goto error;
172  
173 @@ -1253,7 +1233,7 @@ static int brcmf_usb_probe_cb(struct brc
174         }
175  
176         if (!brcmf_usb_dlneeded(devinfo)) {
177 -               ret = brcmf_usb_bus_setup(devinfo);
178 +               ret = brcmf_attach(devinfo->dev, devinfo->settings);
179                 if (ret)
180                         goto fail;
181                 /* we are done */
182 @@ -1456,7 +1436,7 @@ static int brcmf_usb_resume(struct usb_i
183  
184         brcmf_dbg(USB, "Enter\n");
185         if (!devinfo->wowl_enabled)
186 -               return brcmf_usb_bus_setup(devinfo);
187 +               return brcmf_attach(devinfo->dev, devinfo->settings);
188  
189         devinfo->bus_pub.state = BRCMFMAC_USB_STATE_UP;
190         brcmf_usb_rx_fill_all(devinfo);