hc
2023-12-09 b22da3d8526a935aa31e086e63f60ff3246cb61c
kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
....@@ -1,17 +1,6 @@
1
+// SPDX-License-Identifier: ISC
12 /*
23 * Copyright (c) 2010 Broadcom Corporation
3
- *
4
- * Permission to use, copy, modify, and/or distribute this software for any
5
- * purpose with or without fee is hereby granted, provided that the above
6
- * copyright notice and this permission notice appear in all copies.
7
- *
8
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
11
- * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
13
- * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
14
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
154 */
165
176 #include <linux/kernel.h>
....@@ -90,6 +79,7 @@
9079
9180 void brcmf_c_set_joinpref_default(struct brcmf_if *ifp)
9281 {
82
+ struct brcmf_pub *drvr = ifp->drvr;
9383 struct brcmf_join_pref_params join_pref_params[2];
9484 int err;
9585
....@@ -106,7 +96,7 @@
10696 err = brcmf_fil_iovar_data_set(ifp, "join_pref", join_pref_params,
10797 sizeof(join_pref_params));
10898 if (err)
109
- brcmf_err("Set join_pref error (%d)\n", err);
99
+ bphy_err(drvr, "Set join_pref error (%d)\n", err);
110100 }
111101
112102 static int brcmf_c_download(struct brcmf_if *ifp, u16 flag,
....@@ -129,7 +119,8 @@
129119
130120 static int brcmf_c_process_clm_blob(struct brcmf_if *ifp)
131121 {
132
- struct brcmf_bus *bus = ifp->drvr->bus_if;
122
+ struct brcmf_pub *drvr = ifp->drvr;
123
+ struct brcmf_bus *bus = drvr->bus_if;
133124 struct brcmf_dload_data_le *chunk_buf;
134125 const struct firmware *clm = NULL;
135126 u8 clm_name[BRCMF_FW_NAME_LEN];
....@@ -145,7 +136,7 @@
145136 memset(clm_name, 0, sizeof(clm_name));
146137 err = brcmf_bus_get_fwname(bus, ".clm_blob", clm_name);
147138 if (err) {
148
- brcmf_err("get CLM blob file name failed (%d)\n", err);
139
+ bphy_err(drvr, "get CLM blob file name failed (%d)\n", err);
149140 return err;
150141 }
151142
....@@ -182,12 +173,12 @@
182173 } while ((datalen > 0) && (err == 0));
183174
184175 if (err) {
185
- brcmf_err("clmload (%zu byte file) failed (%d); ",
186
- clm->size, err);
176
+ bphy_err(drvr, "clmload (%zu byte file) failed (%d)\n",
177
+ clm->size, err);
187178 /* Retrieve clmload_status and print */
188179 err = brcmf_fil_iovar_int_get(ifp, "clmload_status", &status);
189180 if (err)
190
- brcmf_err("get clmload_status failed (%d)\n", err);
181
+ bphy_err(drvr, "get clmload_status failed (%d)\n", err);
191182 else
192183 brcmf_dbg(INFO, "clmload_status=%d\n", status);
193184 err = -EIO;
....@@ -201,6 +192,7 @@
201192
202193 int brcmf_c_preinit_dcmds(struct brcmf_if *ifp)
203194 {
195
+ struct brcmf_pub *drvr = ifp->drvr;
204196 s8 eventmask[BRCMF_EVENTING_MASK_LEN];
205197 u8 buf[BRCMF_DCMD_SMLEN];
206198 struct brcmf_bus *bus;
....@@ -214,11 +206,11 @@
214206 err = brcmf_fil_iovar_data_get(ifp, "cur_etheraddr", ifp->mac_addr,
215207 sizeof(ifp->mac_addr));
216208 if (err < 0) {
217
- brcmf_err("Retreiving cur_etheraddr failed, %d\n", err);
209
+ bphy_err(drvr, "Retrieving cur_etheraddr failed, %d\n", err);
218210 goto done;
219211 }
220
- memcpy(ifp->drvr->wiphy->perm_addr, ifp->drvr->mac, ETH_ALEN);
221212 memcpy(ifp->drvr->mac, ifp->mac_addr, sizeof(ifp->drvr->mac));
213
+ memcpy(ifp->drvr->wiphy->perm_addr, ifp->drvr->mac, ETH_ALEN);
222214
223215 bus = ifp->drvr->bus_if;
224216 ri = &ifp->drvr->revinfo;
....@@ -226,7 +218,7 @@
226218 err = brcmf_fil_cmd_data_get(ifp, BRCMF_C_GET_REVINFO,
227219 &revinfo, sizeof(revinfo));
228220 if (err < 0) {
229
- brcmf_err("retrieving revision info failed, %d\n", err);
221
+ bphy_err(drvr, "retrieving revision info failed, %d\n", err);
230222 strlcpy(ri->chipname, "UNKNOWN", sizeof(ri->chipname));
231223 } else {
232224 ri->vendorid = le32_to_cpu(revinfo.vendorid);
....@@ -260,17 +252,16 @@
260252 /* Do any CLM downloading */
261253 err = brcmf_c_process_clm_blob(ifp);
262254 if (err < 0) {
263
- brcmf_err("download CLM blob file failed, %d\n", err);
255
+ bphy_err(drvr, "download CLM blob file failed, %d\n", err);
264256 goto done;
265257 }
266258
267259 /* query for 'ver' to get version info from firmware */
268260 memset(buf, 0, sizeof(buf));
269
- strcpy(buf, "ver");
270261 err = brcmf_fil_iovar_data_get(ifp, "ver", buf, sizeof(buf));
271262 if (err < 0) {
272
- brcmf_err("Retreiving version information failed, %d\n",
273
- err);
263
+ bphy_err(drvr, "Retrieving version information failed, %d\n",
264
+ err);
274265 goto done;
275266 }
276267 ptr = (char *)buf;
....@@ -304,7 +295,7 @@
304295 /* set mpc */
305296 err = brcmf_fil_iovar_int_set(ifp, "mpc", 1);
306297 if (err) {
307
- brcmf_err("failed setting mpc\n");
298
+ bphy_err(drvr, "failed setting mpc\n");
308299 goto done;
309300 }
310301
....@@ -314,14 +305,14 @@
314305 err = brcmf_fil_iovar_data_get(ifp, "event_msgs", eventmask,
315306 BRCMF_EVENTING_MASK_LEN);
316307 if (err) {
317
- brcmf_err("Get event_msgs error (%d)\n", err);
308
+ bphy_err(drvr, "Get event_msgs error (%d)\n", err);
318309 goto done;
319310 }
320311 setbit(eventmask, BRCMF_E_IF);
321312 err = brcmf_fil_iovar_data_set(ifp, "event_msgs", eventmask,
322313 BRCMF_EVENTING_MASK_LEN);
323314 if (err) {
324
- brcmf_err("Set event_msgs error (%d)\n", err);
315
+ bphy_err(drvr, "Set event_msgs error (%d)\n", err);
325316 goto done;
326317 }
327318
....@@ -329,8 +320,8 @@
329320 err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_SCAN_CHANNEL_TIME,
330321 BRCMF_DEFAULT_SCAN_CHANNEL_TIME);
331322 if (err) {
332
- brcmf_err("BRCMF_C_SET_SCAN_CHANNEL_TIME error (%d)\n",
333
- err);
323
+ bphy_err(drvr, "BRCMF_C_SET_SCAN_CHANNEL_TIME error (%d)\n",
324
+ err);
334325 goto done;
335326 }
336327
....@@ -338,8 +329,8 @@
338329 err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_SCAN_UNASSOC_TIME,
339330 BRCMF_DEFAULT_SCAN_UNASSOC_TIME);
340331 if (err) {
341
- brcmf_err("BRCMF_C_SET_SCAN_UNASSOC_TIME error (%d)\n",
342
- err);
332
+ bphy_err(drvr, "BRCMF_C_SET_SCAN_UNASSOC_TIME error (%d)\n",
333
+ err);
343334 goto done;
344335 }
345336
....@@ -350,7 +341,7 @@
350341 }
351342
352343 #ifndef CONFIG_BRCM_TRACING
353
-void __brcmf_err(const char *func, const char *fmt, ...)
344
+void __brcmf_err(struct brcmf_bus *bus, const char *func, const char *fmt, ...)
354345 {
355346 struct va_format vaf;
356347 va_list args;
....@@ -359,7 +350,10 @@
359350
360351 vaf.fmt = fmt;
361352 vaf.va = &args;
362
- pr_err("%s: %pV", func, &vaf);
353
+ if (bus)
354
+ dev_err(bus->dev, "%s: %pV", func, &vaf);
355
+ else
356
+ pr_err("%s: %pV", func, &vaf);
363357
364358 va_end(args);
365359 }
....@@ -448,7 +442,8 @@
448442 }
449443 }
450444 if (!found) {
451
- /* No platform data for this device, try OF (Open Firwmare) */
445
+ /* No platform data for this device, try OF and DMI data */
446
+ brcmf_dmi_probe(settings, chip, chiprev);
452447 brcmf_of_probe(dev, bus_type, settings);
453448 }
454449 return settings;