From: Tim Jiang <redacted>
we have variant wcn6855 soc chip from different vendors, so we should
use different nvm file with suffix to distinguish them.
Signed-off-by: Tim Jiang <redacted>
---
drivers/bluetooth/btusb.c | 46 ++++++++++++++++++++++++++++++++++++----------
1 file changed, 36 insertions(+), 10 deletions(-)
@@ -3326,22 +3330,24 @@ static int btusb_setup_qca_load_rampatch(struct hci_dev *hdev,returnerr;}-staticintbtusb_setup_qca_load_nvm(structhci_dev*hdev,-structqca_version*ver,-conststructqca_device_info*info)+staticvoidbtusb_generate_qca_nvm_name(char**fwname,+intmax_size,+structqca_version*ver,+char*separator,+char*vendor){-conststructfirmware*fw;-charfwname[64];-interr;-if(((ver->flag>>8)&0xff)==QCA_FLAG_MULTI_NVM){/* if boardid equal 0, use default nvm without surfix */if(le16_to_cpu(ver->board_id)==0x0){-snprintf(fwname,sizeof(fwname),"qca/nvm_usb_%08x.bin",-le32_to_cpu(ver->rom_version));+snprintf(fwname,sizeof(fwname),"qca/nvm_usb_%08x%s%s.bin",+le32_to_cpu(ver->rom_version),+separator,+vendor);}else{-snprintf(fwname,sizeof(fwname),"qca/nvm_usb_%08x_%04x.bin",+snprintf(fwname,sizeof(fwname),"qca/nvm_usb_%08x%s%s%04x.bin",le32_to_cpu(ver->rom_version),+separator,+vendor,le16_to_cpu(ver->board_id));}}else{
@@ -3349,6 +3355,26 @@ static int btusb_setup_qca_load_nvm(struct hci_dev *hdev,le32_to_cpu(ver->rom_version));}+}++staticintbtusb_setup_qca_load_nvm(structhci_dev*hdev,+structqca_version*ver,+conststructqca_device_info*info)+{+conststructfirmware*fw;+charfwname[64];+interr;++switch(ver->ram_version){+caseWCN6855_2_0_RAM_VERSION_GF:+caseWCN6855_2_1_RAM_VERSION_GF:+btusb_generate_qca_nvm_name(&fwname,sizeof(fwname),ver,"_","gf");+break;+default:+btusb_generate_qca_nvm_name(&fwname,sizeof(fwname),ver,NULL,NULL);+break;+}+err=request_firmware(&fw,fwname,&hdev->dev);if(err){bt_dev_err(hdev,"failed to request NVM file: %s (%d)",
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project
This is automated email and please do not reply to this email!
Dear submitter,
Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=535741
---Test result---
Test Summary:
CheckPatch PASS 0.68 seconds
GitLint FAIL 0.15 seconds
BuildKernel FAIL 434.73 seconds
TestRunner: Setup PASS 466.74 seconds
TestRunner: l2cap-tester PASS 3.32 seconds
TestRunner: bnep-tester PASS 2.24 seconds
TestRunner: mgmt-tester PASS 34.76 seconds
TestRunner: rfcomm-tester PASS 2.55 seconds
TestRunner: sco-tester PASS 2.42 seconds
TestRunner: smp-tester FAIL 2.49 seconds
TestRunner: userchan-tester PASS 2.27 seconds
Details
##############################
Test: CheckPatch - PASS - 0.68 seconds
Run checkpatch.pl script with rule in .checkpatch.conf
##############################
Test: GitLint - FAIL - 0.15 seconds
Run gitlint with rule in .gitlint
Bluetooth: btusb: Add support using different nvm for variant WCN6855 controller
1: T1 Title exceeds max length (80>72): "Bluetooth: btusb: Add support using different nvm for variant WCN6855 controller"
##############################
Test: BuildKernel - FAIL - 434.73 seconds
Build Kernel with minimal configuration supports Bluetooth
drivers/bluetooth/btusb.c: In function ‘btusb_generate_qca_nvm_name’:
drivers/bluetooth/btusb.c:3344:27: warning: argument to ‘sizeof’ in ‘snprintf’ call is the same expression as the destination; did you mean to provide an explicit length? [-Wsizeof-pointer-memaccess]
3344 | snprintf(fwname, sizeof(fwname), "qca/nvm_usb_%08x%s%s.bin",
| ^
drivers/bluetooth/btusb.c:3344:13: error: passing argument 1 of ‘snprintf’ from incompatible pointer type [-Werror=incompatible-pointer-types]
3344 | snprintf(fwname, sizeof(fwname), "qca/nvm_usb_%08x%s%s.bin",
| ^~~~~~
| |
| char **
In file included from ./include/linux/list.h:9,
from ./include/linux/dmi.h:5,
from drivers/bluetooth/btusb.c:9:
./include/linux/kernel.h:204:20: note: expected ‘char *’ but argument is of type ‘char **’
204 | int snprintf(char *buf, size_t size, const char *fmt, ...);
| ~~~~~~^~~
drivers/bluetooth/btusb.c:3349:27: warning: argument to ‘sizeof’ in ‘snprintf’ call is the same expression as the destination; did you mean to provide an explicit length? [-Wsizeof-pointer-memaccess]
3349 | snprintf(fwname, sizeof(fwname), "qca/nvm_usb_%08x%s%s%04x.bin",
| ^
drivers/bluetooth/btusb.c:3349:13: error: passing argument 1 of ‘snprintf’ from incompatible pointer type [-Werror=incompatible-pointer-types]
3349 | snprintf(fwname, sizeof(fwname), "qca/nvm_usb_%08x%s%s%04x.bin",
| ^~~~~~
| |
| char **
In file included from ./include/linux/list.h:9,
from ./include/linux/dmi.h:5,
from drivers/bluetooth/btusb.c:9:
./include/linux/kernel.h:204:20: note: expected ‘char *’ but argument is of type ‘char **’
204 | int snprintf(char *buf, size_t size, const char *fmt, ...);
| ~~~~~~^~~
drivers/bluetooth/btusb.c:3356:26: warning: argument to ‘sizeof’ in ‘snprintf’ call is the same expression as the destination; did you mean to provide an explicit length? [-Wsizeof-pointer-memaccess]
3356 | snprintf(fwname, sizeof(fwname), "qca/nvm_usb_%08x.bin",
| ^
drivers/bluetooth/btusb.c:3356:12: error: passing argument 1 of ‘snprintf’ from incompatible pointer type [-Werror=incompatible-pointer-types]
3356 | snprintf(fwname, sizeof(fwname), "qca/nvm_usb_%08x.bin",
| ^~~~~~
| |
| char **
In file included from ./include/linux/list.h:9,
from ./include/linux/dmi.h:5,
from drivers/bluetooth/btusb.c:9:
./include/linux/kernel.h:204:20: note: expected ‘char *’ but argument is of type ‘char **’
204 | int snprintf(char *buf, size_t size, const char *fmt, ...);
| ~~~~~~^~~
drivers/bluetooth/btusb.c: In function ‘btusb_setup_qca_load_nvm’:
drivers/bluetooth/btusb.c:3373:32: error: passing argument 1 of ‘btusb_generate_qca_nvm_name’ from incompatible pointer type [-Werror=incompatible-pointer-types]
3373 | btusb_generate_qca_nvm_name(&fwname, sizeof(fwname), ver, "_", "gf");
| ^~~~~~~
| |
| char (*)[64]
drivers/bluetooth/btusb.c:3335:48: note: expected ‘char **’ but argument is of type ‘char (*)[64]’
3335 | static void btusb_generate_qca_nvm_name(char **fwname,
| ~~~~~~~^~~~~~
drivers/bluetooth/btusb.c:3376:32: error: passing argument 1 of ‘btusb_generate_qca_nvm_name’ from incompatible pointer type [-Werror=incompatible-pointer-types]
3376 | btusb_generate_qca_nvm_name(&fwname, sizeof(fwname), ver, NULL, NULL);
| ^~~~~~~
| |
| char (*)[64]
drivers/bluetooth/btusb.c:3335:48: note: expected ‘char **’ but argument is of type ‘char (*)[64]’
3335 | static void btusb_generate_qca_nvm_name(char **fwname,
| ~~~~~~~^~~~~~
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:271: drivers/bluetooth/btusb.o] Error 1
make[1]: *** [scripts/Makefile.build:514: drivers/bluetooth] Error 2
make: *** [Makefile:1841: drivers] Error 2
##############################
Test: TestRunner: Setup - PASS - 466.74 seconds
Setup environment for running Test Runner
##############################
Test: TestRunner: l2cap-tester - PASS - 3.32 seconds
Run test-runner with l2cap-tester
Total: 40, Passed: 40 (100.0%), Failed: 0, Not Run: 0
##############################
Test: TestRunner: bnep-tester - PASS - 2.24 seconds
Run test-runner with bnep-tester
Total: 1, Passed: 1 (100.0%), Failed: 0, Not Run: 0
##############################
Test: TestRunner: mgmt-tester - PASS - 34.76 seconds
Run test-runner with mgmt-tester
Total: 448, Passed: 445 (99.3%), Failed: 0, Not Run: 3
##############################
Test: TestRunner: rfcomm-tester - PASS - 2.55 seconds
Run test-runner with rfcomm-tester
Total: 9, Passed: 9 (100.0%), Failed: 0, Not Run: 0
##############################
Test: TestRunner: sco-tester - PASS - 2.42 seconds
Run test-runner with sco-tester
Total: 8, Passed: 8 (100.0%), Failed: 0, Not Run: 0
##############################
Test: TestRunner: smp-tester - FAIL - 2.49 seconds
Run test-runner with smp-tester
Total: 8, Passed: 7 (87.5%), Failed: 1, Not Run: 0
Failed Test Cases
SMP Client - SC Request 2 Failed 0.028 seconds
##############################
Test: TestRunner: userchan-tester - PASS - 2.27 seconds
Run test-runner with userchan-tester
Total: 3, Passed: 3 (100.0%), Failed: 0, Not Run: 0
---
Regards,
Linux Bluetooth
drivers/bluetooth/btusb.c:3342:48: warning: argument to 'sizeof' in 'snprintf' call is the same expression as the destination; did you mean to provide an explicit length? [-Wsizeof-pointer-memaccess]
3342 | snprintf(fwname, sizeof(fwname), "qca/nvm_usb_%08x%s%s.bin",
| ^
drivers/bluetooth/btusb.c:3342:34: error: passing argument 1 of 'snprintf' from incompatible pointer type [-Werror=incompatible-pointer-types]
3342 | snprintf(fwname, sizeof(fwname), "qca/nvm_usb_%08x%s%s.bin",
| ^~~~~~
| |
| char **
In file included from include/linux/list.h:9,
from include/linux/dmi.h:5,
from drivers/bluetooth/btusb.c:9:
include/linux/kernel.h:204:20: note: expected 'char *' but argument is of type 'char **'
204 | int snprintf(char *buf, size_t size, const char *fmt, ...);
| ~~~~~~^~~
drivers/bluetooth/btusb.c:3347:48: warning: argument to 'sizeof' in 'snprintf' call is the same expression as the destination; did you mean to provide an explicit length? [-Wsizeof-pointer-memaccess]
3347 | snprintf(fwname, sizeof(fwname), "qca/nvm_usb_%08x%s%s%04x.bin",
| ^
drivers/bluetooth/btusb.c:3347:34: error: passing argument 1 of 'snprintf' from incompatible pointer type [-Werror=incompatible-pointer-types]
3347 | snprintf(fwname, sizeof(fwname), "qca/nvm_usb_%08x%s%s%04x.bin",
| ^~~~~~
| |
| char **
In file included from include/linux/list.h:9,
from include/linux/dmi.h:5,
from drivers/bluetooth/btusb.c:9:
include/linux/kernel.h:204:20: note: expected 'char *' but argument is of type 'char **'
204 | int snprintf(char *buf, size_t size, const char *fmt, ...);
| ~~~~~~^~~
drivers/bluetooth/btusb.c:3354:40: warning: argument to 'sizeof' in 'snprintf' call is the same expression as the destination; did you mean to provide an explicit length? [-Wsizeof-pointer-memaccess]
3354 | snprintf(fwname, sizeof(fwname), "qca/nvm_usb_%08x.bin",
| ^
drivers/bluetooth/btusb.c:3354:26: error: passing argument 1 of 'snprintf' from incompatible pointer type [-Werror=incompatible-pointer-types]
3354 | snprintf(fwname, sizeof(fwname), "qca/nvm_usb_%08x.bin",
| ^~~~~~
| |
| char **
In file included from include/linux/list.h:9,
from include/linux/dmi.h:5,
from drivers/bluetooth/btusb.c:9:
include/linux/kernel.h:204:20: note: expected 'char *' but argument is of type 'char **'
204 | int snprintf(char *buf, size_t size, const char *fmt, ...);
| ~~~~~~^~~
drivers/bluetooth/btusb.c: In function 'btusb_setup_qca_load_nvm':
drivers/bluetooth/btusb.c:3371:53: error: passing argument 1 of 'btusb_generate_qca_nvm_name' from incompatible pointer type [-Werror=incompatible-pointer-types]
3371 | btusb_generate_qca_nvm_name(&fwname, sizeof(fwname), ver, "_", "gf");
| ^~~~~~~
| |
| char (*)[64]
drivers/bluetooth/btusb.c:3333:48: note: expected 'char **' but argument is of type 'char (*)[64]'
3333 | static void btusb_generate_qca_nvm_name(char **fwname,
| ~~~~~~~^~~~~~
drivers/bluetooth/btusb.c:3374:53: error: passing argument 1 of 'btusb_generate_qca_nvm_name' from incompatible pointer type [-Werror=incompatible-pointer-types]
3374 | btusb_generate_qca_nvm_name(&fwname, sizeof(fwname), ver, NULL, NULL);
| ^~~~~~~
| |
| char (*)[64]
drivers/bluetooth/btusb.c:3333:48: note: expected 'char **' but argument is of type 'char (*)[64]'
3333 | static void btusb_generate_qca_nvm_name(char **fwname,
| ~~~~~~~^~~~~~
cc1: some warnings being treated as errors
vim +3342 drivers/bluetooth/btusb.c
3332
3333 static void btusb_generate_qca_nvm_name(char **fwname,
3334 int max_size,
3335 struct qca_version *ver,
3336 char *separator,
3337 char *vendor)
3338 {
3339 if (((ver->flag >> 8) & 0xff) == QCA_FLAG_MULTI_NVM) {
3340 /* if boardid equal 0, use default nvm without surfix */
3341 if (le16_to_cpu(ver->board_id) == 0x0) {
drivers/bluetooth/btusb.c:3342:34: error: passing argument 1 of 'snprintf' from incompatible pointer type [-Werror=incompatible-pointer-types]
3342 | snprintf(fwname, sizeof(fwname), "qca/nvm_usb_%08x%s%s.bin",
| ^~~~~~
| |
| char **
In file included from include/linux/list.h:9,
from include/linux/dmi.h:5,
from drivers/bluetooth/btusb.c:9:
include/linux/kernel.h:204:20: note: expected 'char *' but argument is of type 'char **'
204 | int snprintf(char *buf, size_t size, const char *fmt, ...);
| ~~~~~~^~~
drivers/bluetooth/btusb.c:3347:34: error: passing argument 1 of 'snprintf' from incompatible pointer type [-Werror=incompatible-pointer-types]
3347 | snprintf(fwname, sizeof(fwname), "qca/nvm_usb_%08x%s%s%04x.bin",
| ^~~~~~
| |
| char **
In file included from include/linux/list.h:9,
from include/linux/dmi.h:5,
from drivers/bluetooth/btusb.c:9:
include/linux/kernel.h:204:20: note: expected 'char *' but argument is of type 'char **'
204 | int snprintf(char *buf, size_t size, const char *fmt, ...);
| ~~~~~~^~~
drivers/bluetooth/btusb.c:3354:26: error: passing argument 1 of 'snprintf' from incompatible pointer type [-Werror=incompatible-pointer-types]
3354 | snprintf(fwname, sizeof(fwname), "qca/nvm_usb_%08x.bin",
| ^~~~~~
| |
| char **
In file included from include/linux/list.h:9,
from include/linux/dmi.h:5,
from drivers/bluetooth/btusb.c:9:
include/linux/kernel.h:204:20: note: expected 'char *' but argument is of type 'char **'
204 | int snprintf(char *buf, size_t size, const char *fmt, ...);
| ~~~~~~^~~
drivers/bluetooth/btusb.c: In function 'btusb_setup_qca_load_nvm':
quoted
drivers/bluetooth/btusb.c:3371:53: error: passing argument 1 of 'btusb_generate_qca_nvm_name' from incompatible pointer type [-Werror=incompatible-pointer-types]
3371 | btusb_generate_qca_nvm_name(&fwname, sizeof(fwname), ver, "_", "gf");
| ^~~~~~~
| |
| char (*)[64]
drivers/bluetooth/btusb.c:3333:48: note: expected 'char **' but argument is of type 'char (*)[64]'
3333 | static void btusb_generate_qca_nvm_name(char **fwname,
| ~~~~~~~^~~~~~
drivers/bluetooth/btusb.c:3374:53: error: passing argument 1 of 'btusb_generate_qca_nvm_name' from incompatible pointer type [-Werror=incompatible-pointer-types]
3374 | btusb_generate_qca_nvm_name(&fwname, sizeof(fwname), ver, NULL, NULL);
| ^~~~~~~
| |
| char (*)[64]
drivers/bluetooth/btusb.c:3333:48: note: expected 'char **' but argument is of type 'char (*)[64]'
3333 | static void btusb_generate_qca_nvm_name(char **fwname,
| ~~~~~~~^~~~~~
cc1: some warnings being treated as errors
vim +/snprintf +3342 drivers/bluetooth/btusb.c
3332
3333 static void btusb_generate_qca_nvm_name(char **fwname,
3334 int max_size,
3335 struct qca_version *ver,
3336 char *separator,
3337 char *vendor)
3338 {
3339 if (((ver->flag >> 8) & 0xff) == QCA_FLAG_MULTI_NVM) {
3340 /* if boardid equal 0, use default nvm without surfix */
3341 if (le16_to_cpu(ver->board_id) == 0x0) {
On Mon, Aug 23, 2021 at 04:58:20PM +0800, Zijun Hu wrote:
From: Tim Jiang <redacted>
we have variant wcn6855 soc chip from different vendors, so we should
use different nvm file with suffix to distinguish them.
I think the concept of 'vendor' (or 'factory' as it was named earlier) needs
more clarification.
Are we talking about USB BT modules with a the wcn6855 that are marketed by
the 'vendor'? If so, could the USB vendor it be used to determine the vendor?
Could modules from different vendors use the same firmware, even though it's
not the same for all vendors?.
Signed-off-by: Tim Jiang <redacted>
Please also add your own Signed-off-by tag, even when sending unmodified
patches on behalf of others. In this case you are making changes to the
original patch and are effectively a co-author, which is another important
reason for adding the tag.
@@ -3326,22 +3330,24 @@ static int btusb_setup_qca_load_rampatch(struct hci_dev *hdev,returnerr;}-staticintbtusb_setup_qca_load_nvm(structhci_dev*hdev,-structqca_version*ver,-conststructqca_device_info*info)+staticvoidbtusb_generate_qca_nvm_name(char**fwname,+intmax_size,+structqca_version*ver,+char*separator,
'separator' is part of the internal logic of this function, the caller
shouldn't have to care about it. Define it as a local variable instead
and initialize it to ''. If 'vendor' (or whatever it is called) is not
NULL assign 'separator' to '_'.
u16 board_id = le16_to_cpu(ver->board_id);
u32 rom_version = le32_to_cpu(ver->rom_version));
Then use these local variable instead of doing the endianness conversion
over and over again.