hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/bluetooth/ath3k.c
....@@ -1,20 +1,6 @@
1
+// SPDX-License-Identifier: GPL-2.0-or-later
12 /*
23 * Copyright (c) 2008-2009 Atheros Communications Inc.
3
- *
4
- * This program is free software; you can redistribute it and/or modify
5
- * it under the terms of the GNU General Public License as published by
6
- * the Free Software Foundation; either version 2 of the License, or
7
- * (at your option) any later version.
8
- *
9
- * This program is distributed in the hope that it will be useful,
10
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
- * GNU General Public License for more details.
13
- *
14
- * You should have received a copy of the GNU General Public License
15
- * along with this program; if not, write to the Free Software
16
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
- *
184 */
195
206
....@@ -203,10 +189,11 @@
203189 { } /* Terminating entry */
204190 };
205191
206
-static inline void ath3k_log_failed_loading(int err, int len, int size)
192
+static inline void ath3k_log_failed_loading(int err, int len, int size,
193
+ int count)
207194 {
208
- BT_ERR("Error in firmware loading err = %d, len = %d, size = %d",
209
- err, len, size);
195
+ BT_ERR("Firmware loading err = %d, len = %d, size = %d, count = %d",
196
+ err, len, size, count);
210197 }
211198
212199 #define USB_REQ_DFU_DNLOAD 1
....@@ -225,19 +212,16 @@
225212
226213 BT_DBG("udev %p", udev);
227214
228
- pipe = usb_sndctrlpipe(udev, 0);
229
-
230215 send_buf = kmalloc(BULK_SIZE, GFP_KERNEL);
231216 if (!send_buf) {
232217 BT_ERR("Can't allocate memory chunk for firmware");
233218 return -ENOMEM;
234219 }
235220
236
- memcpy(send_buf, firmware->data, FW_HDR_SIZE);
237
- err = usb_control_msg(udev, pipe, USB_REQ_DFU_DNLOAD, USB_TYPE_VENDOR,
238
- 0, 0, send_buf, FW_HDR_SIZE,
239
- USB_CTRL_SET_TIMEOUT);
240
- if (err < 0) {
221
+ err = usb_control_msg_send(udev, 0, USB_REQ_DFU_DNLOAD, USB_TYPE_VENDOR,
222
+ 0, 0, firmware->data, FW_HDR_SIZE,
223
+ USB_CTRL_SET_TIMEOUT, GFP_KERNEL);
224
+ if (err) {
241225 BT_ERR("Can't change to loading configuration err");
242226 goto error;
243227 }
....@@ -257,7 +241,7 @@
257241 &len, 3000);
258242
259243 if (err || (len != size)) {
260
- ath3k_log_failed_loading(err, len, size);
244
+ ath3k_log_failed_loading(err, len, size, count);
261245 goto error;
262246 }
263247
....@@ -272,44 +256,19 @@
272256
273257 static int ath3k_get_state(struct usb_device *udev, unsigned char *state)
274258 {
275
- int ret, pipe = 0;
276
- char *buf;
277
-
278
- buf = kmalloc(sizeof(*buf), GFP_KERNEL);
279
- if (!buf)
280
- return -ENOMEM;
281
-
282
- pipe = usb_rcvctrlpipe(udev, 0);
283
- ret = usb_control_msg(udev, pipe, ATH3K_GETSTATE,
284
- USB_TYPE_VENDOR | USB_DIR_IN, 0, 0,
285
- buf, sizeof(*buf), USB_CTRL_SET_TIMEOUT);
286
-
287
- *state = *buf;
288
- kfree(buf);
289
-
290
- return ret;
259
+ return usb_control_msg_recv(udev, 0, ATH3K_GETSTATE,
260
+ USB_TYPE_VENDOR | USB_DIR_IN, 0, 0,
261
+ state, 1, USB_CTRL_SET_TIMEOUT,
262
+ GFP_KERNEL);
291263 }
292264
293265 static int ath3k_get_version(struct usb_device *udev,
294266 struct ath3k_version *version)
295267 {
296
- int ret, pipe = 0;
297
- struct ath3k_version *buf;
298
- const int size = sizeof(*buf);
299
-
300
- buf = kmalloc(size, GFP_KERNEL);
301
- if (!buf)
302
- return -ENOMEM;
303
-
304
- pipe = usb_rcvctrlpipe(udev, 0);
305
- ret = usb_control_msg(udev, pipe, ATH3K_GETVERSION,
306
- USB_TYPE_VENDOR | USB_DIR_IN, 0, 0,
307
- buf, size, USB_CTRL_SET_TIMEOUT);
308
-
309
- memcpy(version, buf, size);
310
- kfree(buf);
311
-
312
- return ret;
268
+ return usb_control_msg_recv(udev, 0, ATH3K_GETVERSION,
269
+ USB_TYPE_VENDOR | USB_DIR_IN, 0, 0,
270
+ version, sizeof(*version), USB_CTRL_SET_TIMEOUT,
271
+ GFP_KERNEL);
313272 }
314273
315274 static int ath3k_load_fwfile(struct usb_device *udev,
....@@ -329,13 +288,11 @@
329288 }
330289
331290 size = min_t(uint, count, FW_HDR_SIZE);
332
- memcpy(send_buf, firmware->data, size);
333291
334
- pipe = usb_sndctrlpipe(udev, 0);
335
- ret = usb_control_msg(udev, pipe, ATH3K_DNLOAD,
336
- USB_TYPE_VENDOR, 0, 0, send_buf,
337
- size, USB_CTRL_SET_TIMEOUT);
338
- if (ret < 0) {
292
+ ret = usb_control_msg_send(udev, 0, ATH3K_DNLOAD, USB_TYPE_VENDOR, 0, 0,
293
+ firmware->data, size, USB_CTRL_SET_TIMEOUT,
294
+ GFP_KERNEL);
295
+ if (ret) {
339296 BT_ERR("Can't change to loading configuration err");
340297 kfree(send_buf);
341298 return ret;
....@@ -356,7 +313,7 @@
356313 err = usb_bulk_msg(udev, pipe, send_buf, size,
357314 &len, 3000);
358315 if (err || (len != size)) {
359
- ath3k_log_failed_loading(err, len, size);
316
+ ath3k_log_failed_loading(err, len, size, count);
360317 kfree(send_buf);
361318 return err;
362319 }
....@@ -368,23 +325,19 @@
368325 return 0;
369326 }
370327
371
-static int ath3k_switch_pid(struct usb_device *udev)
328
+static void ath3k_switch_pid(struct usb_device *udev)
372329 {
373
- int pipe = 0;
374
-
375
- pipe = usb_sndctrlpipe(udev, 0);
376
- return usb_control_msg(udev, pipe, USB_REG_SWITCH_VID_PID,
377
- USB_TYPE_VENDOR, 0, 0,
378
- NULL, 0, USB_CTRL_SET_TIMEOUT);
330
+ usb_control_msg_send(udev, 0, USB_REG_SWITCH_VID_PID, USB_TYPE_VENDOR,
331
+ 0, 0, NULL, 0, USB_CTRL_SET_TIMEOUT, GFP_KERNEL);
379332 }
380333
381334 static int ath3k_set_normal_mode(struct usb_device *udev)
382335 {
383336 unsigned char fw_state;
384
- int pipe = 0, ret;
337
+ int ret;
385338
386339 ret = ath3k_get_state(udev, &fw_state);
387
- if (ret < 0) {
340
+ if (ret) {
388341 BT_ERR("Can't get state to change to normal mode err");
389342 return ret;
390343 }
....@@ -394,10 +347,9 @@
394347 return 0;
395348 }
396349
397
- pipe = usb_sndctrlpipe(udev, 0);
398
- return usb_control_msg(udev, pipe, ATH3K_SET_NORMAL_MODE,
399
- USB_TYPE_VENDOR, 0, 0,
400
- NULL, 0, USB_CTRL_SET_TIMEOUT);
350
+ return usb_control_msg_send(udev, 0, ATH3K_SET_NORMAL_MODE,
351
+ USB_TYPE_VENDOR, 0, 0, NULL, 0,
352
+ USB_CTRL_SET_TIMEOUT, GFP_KERNEL);
401353 }
402354
403355 static int ath3k_load_patch(struct usb_device *udev)
....@@ -410,7 +362,7 @@
410362 int ret;
411363
412364 ret = ath3k_get_state(udev, &fw_state);
413
- if (ret < 0) {
365
+ if (ret) {
414366 BT_ERR("Can't get state to change to load ram patch err");
415367 return ret;
416368 }
....@@ -421,7 +373,7 @@
421373 }
422374
423375 ret = ath3k_get_version(udev, &fw_version);
424
- if (ret < 0) {
376
+ if (ret) {
425377 BT_ERR("Can't get version to change to load ram patch err");
426378 return ret;
427379 }
....@@ -462,13 +414,13 @@
462414 int clk_value, ret;
463415
464416 ret = ath3k_get_state(udev, &fw_state);
465
- if (ret < 0) {
417
+ if (ret) {
466418 BT_ERR("Can't get state to change to load configuration err");
467419 return -EBUSY;
468420 }
469421
470422 ret = ath3k_get_version(udev, &fw_version);
471
- if (ret < 0) {
423
+ if (ret) {
472424 BT_ERR("Can't get version to change to load ram patch err");
473425 return ret;
474426 }
....@@ -542,7 +494,7 @@
542494 return ret;
543495 }
544496 ret = ath3k_set_normal_mode(udev);
545
- if (ret < 0) {
497
+ if (ret) {
546498 BT_ERR("Set normal mode failed");
547499 return ret;
548500 }