* [PATCH] Bluetooth: btusb: Fix MT7925 fail to send download patch command
@ 2023-12-28 9:20 Peter Tsao
2023-12-28 9:56 ` bluez.test.bot
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Peter Tsao @ 2023-12-28 9:20 UTC (permalink / raw)
To: Marcel Holtmann, Johan Hedberg, Luiz Von Dentz
Cc: Sean Wang, Deren Wu, Chris Lu, Aaron Hou, Steve Lee,
linux-bluetooth, linux-kernel, linux-mediatek, Peter Tsao
Write the register 0x18011100[1] = 1 to avoid the device enter sleep
state during download patch flow on specific platform.
Error log:
Bluetooth: hci0: Execution of wmt command timed out
Bluetooth: hci0: Failed to send wmt patch dwnld (-110)
Bluetooth: hci0: Failed to set up firmware (-110)
Signed-off-by: Peter Tsao <peter.tsao@mediatek.com>
---
drivers/bluetooth/btmtk.h | 3 +++
drivers/bluetooth/btusb.c | 6 +++++-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/drivers/bluetooth/btmtk.h b/drivers/bluetooth/btmtk.h
index 56f5502baadf..8b582077a01f 100644
--- a/drivers/bluetooth/btmtk.h
+++ b/drivers/bluetooth/btmtk.h
@@ -22,6 +22,9 @@
#define MT7921_DLSTATUS 0x7c053c10
#define BT_DL_STATE BIT(1)
+#define MT7925_SLPPROT 0x18011100
+#define SLPPROT_BYPASS BIT(1)
+
#define MTK_COREDUMP_SIZE (1024 * 1000)
#define MTK_COREDUMP_END "coredump end"
#define MTK_COREDUMP_END_LEN (sizeof(MTK_COREDUMP_END))
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index 7835170b1d66..842fda0527db 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -3120,9 +3120,13 @@ static int btusb_mtk_setup(struct hci_dev *hdev)
case 0x7668:
fwname = FIRMWARE_MT7668;
break;
+ case 0x7925:
+ btusb_mtk_uhw_reg_read(data, MT7925_SLPPROT, &val);
+ val |= SLPPROT_BYPASS;
+ btusb_mtk_uhw_reg_write(data, MT7925_SLPPROT, val);
+ fallthrough;
case 0x7922:
case 0x7961:
- case 0x7925:
if (dev_id == 0x7925)
snprintf(fw_bin_name, sizeof(fw_bin_name),
"mediatek/mt%04x/BT_RAM_CODE_MT%04x_1_%x_hdr.bin",
--
2.18.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* RE: Bluetooth: btusb: Fix MT7925 fail to send download patch command
2023-12-28 9:20 [PATCH] Bluetooth: btusb: Fix MT7925 fail to send download patch command Peter Tsao
@ 2023-12-28 9:56 ` bluez.test.bot
2023-12-29 0:44 ` [PATCH] " kernel test robot
2023-12-29 5:06 ` kernel test robot
2 siblings, 0 replies; 4+ messages in thread
From: bluez.test.bot @ 2023-12-28 9:56 UTC (permalink / raw)
To: linux-bluetooth, peter.tsao
[-- Attachment #1: Type: text/plain, Size: 8094 bytes --]
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=813170
---Test result---
Test Summary:
CheckPatch PASS 0.61 seconds
GitLint PASS 0.53 seconds
SubjectPrefix PASS 0.07 seconds
BuildKernel FAIL 24.72 seconds
CheckAllWarning FAIL 26.84 seconds
CheckSparse FAIL 30.92 seconds
CheckSmatch FAIL 83.69 seconds
BuildKernel32 FAIL 23.69 seconds
TestRunnerSetup PASS 439.55 seconds
TestRunner_l2cap-tester PASS 23.22 seconds
TestRunner_iso-tester PASS 47.44 seconds
TestRunner_bnep-tester PASS 7.11 seconds
TestRunner_mgmt-tester PASS 167.68 seconds
TestRunner_rfcomm-tester PASS 10.85 seconds
TestRunner_sco-tester PASS 14.35 seconds
TestRunner_ioctl-tester PASS 12.03 seconds
TestRunner_mesh-tester PASS 10.80 seconds
TestRunner_smp-tester PASS 9.79 seconds
TestRunner_userchan-tester PASS 8.68 seconds
IncrementalBuild FAIL 23.17 seconds
Details
##############################
Test: BuildKernel - FAIL
Desc: Build Kernel for Bluetooth
Output:
drivers/bluetooth/btusb.c: In function ‘btusb_mtk_setup’:
drivers/bluetooth/btusb.c:3124:49: error: ‘val’ undeclared (first use in this function)
3124 | btusb_mtk_uhw_reg_read(data, MT7925_SLPPROT, &val);
| ^~~
drivers/bluetooth/btusb.c:3124:49: note: each undeclared identifier is reported only once for each function it appears in
make[4]: *** [scripts/Makefile.build:243: drivers/bluetooth/btusb.o] Error 1
make[3]: *** [scripts/Makefile.build:480: drivers/bluetooth] Error 2
make[2]: *** [scripts/Makefile.build:480: drivers] Error 2
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [/github/workspace/src/src/Makefile:1911: .] Error 2
make: *** [Makefile:234: __sub-make] Error 2
##############################
Test: CheckAllWarning - FAIL
Desc: Run linux kernel with all warning enabled
Output:
drivers/bluetooth/btusb.c: In function ‘btusb_mtk_setup’:
drivers/bluetooth/btusb.c:3124:49: error: ‘val’ undeclared (first use in this function)
3124 | btusb_mtk_uhw_reg_read(data, MT7925_SLPPROT, &val);
| ^~~
drivers/bluetooth/btusb.c:3124:49: note: each undeclared identifier is reported only once for each function it appears in
make[4]: *** [scripts/Makefile.build:243: drivers/bluetooth/btusb.o] Error 1
make[3]: *** [scripts/Makefile.build:480: drivers/bluetooth] Error 2
make[2]: *** [scripts/Makefile.build:480: drivers] Error 2
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [/github/workspace/src/src/Makefile:1911: .] Error 2
make: *** [Makefile:234: __sub-make] Error 2
##############################
Test: CheckSparse - FAIL
Desc: Run sparse tool with linux kernel
Output:
net/bluetooth/af_bluetooth.c:223:25: warning: context imbalance in 'bt_accept_enqueue' - different lock contexts for basic block
drivers/bluetooth/hci_ag6xx.c:257:24: warning: restricted __le32 degrades to integer
drivers/bluetooth/hci_mrvl.c:170:23: warning: restricted __le16 degrades to integer
drivers/bluetooth/hci_mrvl.c:203:23: warning: restricted __le16 degrades to integer
net/bluetooth/hci_event.c: note: in included file (through include/net/bluetooth/hci_core.h):
./include/net/bluetooth/hci.h:2671:47: warning: array of flexible structures
./include/net/bluetooth/hci.h:2757:43: warning: array of flexible structures
drivers/bluetooth/btusb.c: In function ‘btusb_mtk_setup’:
drivers/bluetooth/btusb.c:3124:49: error: ‘val’ undeclared (first use in this function)
3124 | btusb_mtk_uhw_reg_read(data, MT7925_SLPPROT, &val);
| ^~~
drivers/bluetooth/btusb.c:3124:49: note: each undeclared identifier is reported only once for each function it appears in
make[4]: *** [scripts/Makefile.build:243: drivers/bluetooth/btusb.o] Error 1
make[3]: *** [scripts/Makefile.build:480: drivers/bluetooth] Error 2
make[2]: *** [scripts/Makefile.build:480: drivers] Error 2
make[2]: *** Waiting for unfinished jobs....
net/bluetooth/hci_codec.c: note: in included file:
./include/net/bluetooth/hci_core.h:150:35: warning: array of flexible structures
net/bluetooth/sco.c: note: in included file:
./include/net/bluetooth/hci_core.h:150:35: warning: array of flexible structures
make[1]: *** [/github/workspace/src/src/Makefile:1911: .] Error 2
make: *** [Makefile:234: __sub-make] Error 2
##############################
Test: CheckSmatch - FAIL
Desc: Run smatch tool with source
Output:
drivers/bluetooth/btusb.c: In function ‘btusb_mtk_setup’:
drivers/bluetooth/btusb.c:3124:49: error: ‘val’ undeclared (first use in this function)
3124 | btusb_mtk_uhw_reg_read(data, MT7925_SLPPROT, &val);
| ^~~
drivers/bluetooth/btusb.c:3124:49: note: each undeclared identifier is reported only once for each function it appears in
make[4]: *** [scripts/Makefile.build:243: drivers/bluetooth/btusb.o] Error 1
make[3]: *** [scripts/Makefile.build:480: drivers/bluetooth] Error 2
make[2]: *** [scripts/Makefile.build:480: drivers] Error 2
make[2]: *** Waiting for unfinished jobs....
net/bluetooth/hci_event.c: note: in included file (through include/net/bluetooth/hci_core.h):
./include/net/bluetooth/hci.h:2671:47: warning: array of flexible structures
./include/net/bluetooth/hci.h:2757:43: warning: array of flexible structures
net/bluetooth/hci_codec.c: note: in included file:
./include/net/bluetooth/hci_core.h:150:35: warning: array of flexible structures
net/bluetooth/sco.c: note: in included file:
./include/net/bluetooth/hci_core.h:150:35: warning: array of flexible structures
make[1]: *** [/github/workspace/src/src/Makefile:1911: .] Error 2
make: *** [Makefile:234: __sub-make] Error 2
##############################
Test: BuildKernel32 - FAIL
Desc: Build 32bit Kernel for Bluetooth
Output:
drivers/bluetooth/btusb.c: In function ‘btusb_mtk_setup’:
drivers/bluetooth/btusb.c:3124:49: error: ‘val’ undeclared (first use in this function)
3124 | btusb_mtk_uhw_reg_read(data, MT7925_SLPPROT, &val);
| ^~~
drivers/bluetooth/btusb.c:3124:49: note: each undeclared identifier is reported only once for each function it appears in
make[4]: *** [scripts/Makefile.build:243: drivers/bluetooth/btusb.o] Error 1
make[3]: *** [scripts/Makefile.build:480: drivers/bluetooth] Error 2
make[2]: *** [scripts/Makefile.build:480: drivers] Error 2
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [/github/workspace/src/src/Makefile:1911: .] Error 2
make: *** [Makefile:234: __sub-make] Error 2
##############################
Test: IncrementalBuild - FAIL
Desc: Incremental build with the patches in the series
Output:
Bluetooth: btusb: Fix MT7925 fail to send download patch command
drivers/bluetooth/btusb.c: In function ‘btusb_mtk_setup’:
drivers/bluetooth/btusb.c:3124:49: error: ‘val’ undeclared (first use in this function)
3124 | btusb_mtk_uhw_reg_read(data, MT7925_SLPPROT, &val);
| ^~~
drivers/bluetooth/btusb.c:3124:49: note: each undeclared identifier is reported only once for each function it appears in
make[4]: *** [scripts/Makefile.build:243: drivers/bluetooth/btusb.o] Error 1
make[3]: *** [scripts/Makefile.build:480: drivers/bluetooth] Error 2
make[2]: *** [scripts/Makefile.build:480: drivers] Error 2
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [/github/workspace/src/src/Makefile:1911: .] Error 2
make: *** [Makefile:234: __sub-make] Error 2
---
Regards,
Linux Bluetooth
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] Bluetooth: btusb: Fix MT7925 fail to send download patch command
2023-12-28 9:20 [PATCH] Bluetooth: btusb: Fix MT7925 fail to send download patch command Peter Tsao
2023-12-28 9:56 ` bluez.test.bot
@ 2023-12-29 0:44 ` kernel test robot
2023-12-29 5:06 ` kernel test robot
2 siblings, 0 replies; 4+ messages in thread
From: kernel test robot @ 2023-12-29 0:44 UTC (permalink / raw)
To: Peter Tsao, Marcel Holtmann, Johan Hedberg, Luiz Von Dentz
Cc: llvm, oe-kbuild-all, Sean Wang, Deren Wu, Chris Lu, Aaron Hou,
Steve Lee, linux-bluetooth, linux-kernel, linux-mediatek,
Peter Tsao
Hi Peter,
kernel test robot noticed the following build errors:
[auto build test ERROR on bluetooth/master]
[also build test ERROR on bluetooth-next/master linus/master v6.7-rc7 next-20231222]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Peter-Tsao/Bluetooth-btusb-Fix-MT7925-fail-to-send-download-patch-command/20231228-172328
base: https://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth.git master
patch link: https://lore.kernel.org/r/20231228092014.23184-1-peter.tsao%40mediatek.com
patch subject: [PATCH] Bluetooth: btusb: Fix MT7925 fail to send download patch command
config: i386-buildonly-randconfig-002-20231229 (https://download.01.org/0day-ci/archive/20231229/202312290838.c0zcBoUz-lkp@intel.com/config)
compiler: ClangBuiltLinux clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231229/202312290838.c0zcBoUz-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202312290838.c0zcBoUz-lkp@intel.com/
All errors (new ones prefixed by >>):
>> drivers/bluetooth/btusb.c:3122:49: error: use of undeclared identifier 'val'
3122 | btusb_mtk_uhw_reg_read(data, MT7925_SLPPROT, &val);
| ^
drivers/bluetooth/btusb.c:3123:3: error: use of undeclared identifier 'val'
3123 | val |= SLPPROT_BYPASS;
| ^
drivers/bluetooth/btusb.c:3124:49: error: use of undeclared identifier 'val'
3124 | btusb_mtk_uhw_reg_write(data, MT7925_SLPPROT, val);
| ^
3 errors generated.
vim +/val +3122 drivers/bluetooth/btusb.c
3068
3069 static int btusb_mtk_setup(struct hci_dev *hdev)
3070 {
3071 struct btusb_data *data = hci_get_drvdata(hdev);
3072 struct btmtk_hci_wmt_params wmt_params;
3073 ktime_t calltime, delta, rettime;
3074 struct btmtk_tci_sleep tci_sleep;
3075 unsigned long long duration;
3076 struct sk_buff *skb;
3077 const char *fwname;
3078 int err, status;
3079 u32 dev_id = 0;
3080 char fw_bin_name[64];
3081 u32 fw_version = 0;
3082 u8 param;
3083 struct btmediatek_data *mediatek;
3084
3085 calltime = ktime_get();
3086
3087 err = btusb_mtk_id_get(data, 0x80000008, &dev_id);
3088 if (err < 0) {
3089 bt_dev_err(hdev, "Failed to get device id (%d)", err);
3090 return err;
3091 }
3092
3093 if (!dev_id || dev_id != 0x7663) {
3094 err = btusb_mtk_id_get(data, 0x70010200, &dev_id);
3095 if (err < 0) {
3096 bt_dev_err(hdev, "Failed to get device id (%d)", err);
3097 return err;
3098 }
3099 err = btusb_mtk_id_get(data, 0x80021004, &fw_version);
3100 if (err < 0) {
3101 bt_dev_err(hdev, "Failed to get fw version (%d)", err);
3102 return err;
3103 }
3104 }
3105
3106 mediatek = hci_get_priv(hdev);
3107 mediatek->dev_id = dev_id;
3108 mediatek->reset_sync = btusb_mtk_reset;
3109
3110 err = btmtk_register_coredump(hdev, btusb_driver.name, fw_version);
3111 if (err < 0)
3112 bt_dev_err(hdev, "Failed to register coredump (%d)", err);
3113
3114 switch (dev_id) {
3115 case 0x7663:
3116 fwname = FIRMWARE_MT7663;
3117 break;
3118 case 0x7668:
3119 fwname = FIRMWARE_MT7668;
3120 break;
3121 case 0x7925:
> 3122 btusb_mtk_uhw_reg_read(data, MT7925_SLPPROT, &val);
3123 val |= SLPPROT_BYPASS;
3124 btusb_mtk_uhw_reg_write(data, MT7925_SLPPROT, val);
3125 fallthrough;
3126 case 0x7922:
3127 case 0x7961:
3128 if (dev_id == 0x7925)
3129 snprintf(fw_bin_name, sizeof(fw_bin_name),
3130 "mediatek/mt%04x/BT_RAM_CODE_MT%04x_1_%x_hdr.bin",
3131 dev_id & 0xffff, dev_id & 0xffff, (fw_version & 0xff) + 1);
3132 else
3133 snprintf(fw_bin_name, sizeof(fw_bin_name),
3134 "mediatek/BT_RAM_CODE_MT%04x_1_%x_hdr.bin",
3135 dev_id & 0xffff, (fw_version & 0xff) + 1);
3136
3137 err = btmtk_setup_firmware_79xx(hdev, fw_bin_name,
3138 btusb_mtk_hci_wmt_sync);
3139 if (err < 0) {
3140 bt_dev_err(hdev, "Failed to set up firmware (%d)", err);
3141 return err;
3142 }
3143
3144 /* It's Device EndPoint Reset Option Register */
3145 btusb_mtk_uhw_reg_write(data, MTK_EP_RST_OPT, MTK_EP_RST_IN_OUT_OPT);
3146
3147 /* Enable Bluetooth protocol */
3148 param = 1;
3149 wmt_params.op = BTMTK_WMT_FUNC_CTRL;
3150 wmt_params.flag = 0;
3151 wmt_params.dlen = sizeof(param);
3152 wmt_params.data = ¶m;
3153 wmt_params.status = NULL;
3154
3155 err = btusb_mtk_hci_wmt_sync(hdev, &wmt_params);
3156 if (err < 0) {
3157 bt_dev_err(hdev, "Failed to send wmt func ctrl (%d)", err);
3158 return err;
3159 }
3160
3161 hci_set_msft_opcode(hdev, 0xFD30);
3162 hci_set_aosp_capable(hdev);
3163 goto done;
3164 default:
3165 bt_dev_err(hdev, "Unsupported hardware variant (%08x)",
3166 dev_id);
3167 return -ENODEV;
3168 }
3169
3170 /* Query whether the firmware is already download */
3171 wmt_params.op = BTMTK_WMT_SEMAPHORE;
3172 wmt_params.flag = 1;
3173 wmt_params.dlen = 0;
3174 wmt_params.data = NULL;
3175 wmt_params.status = &status;
3176
3177 err = btusb_mtk_hci_wmt_sync(hdev, &wmt_params);
3178 if (err < 0) {
3179 bt_dev_err(hdev, "Failed to query firmware status (%d)", err);
3180 return err;
3181 }
3182
3183 if (status == BTMTK_WMT_PATCH_DONE) {
3184 bt_dev_info(hdev, "firmware already downloaded");
3185 goto ignore_setup_fw;
3186 }
3187
3188 /* Setup a firmware which the device definitely requires */
3189 err = btmtk_setup_firmware(hdev, fwname,
3190 btusb_mtk_hci_wmt_sync);
3191 if (err < 0)
3192 return err;
3193
3194 ignore_setup_fw:
3195 err = readx_poll_timeout(btusb_mtk_func_query, hdev, status,
3196 status < 0 || status != BTMTK_WMT_ON_PROGRESS,
3197 2000, 5000000);
3198 /* -ETIMEDOUT happens */
3199 if (err < 0)
3200 return err;
3201
3202 /* The other errors happen in btusb_mtk_func_query */
3203 if (status < 0)
3204 return status;
3205
3206 if (status == BTMTK_WMT_ON_DONE) {
3207 bt_dev_info(hdev, "function already on");
3208 goto ignore_func_on;
3209 }
3210
3211 /* Enable Bluetooth protocol */
3212 param = 1;
3213 wmt_params.op = BTMTK_WMT_FUNC_CTRL;
3214 wmt_params.flag = 0;
3215 wmt_params.dlen = sizeof(param);
3216 wmt_params.data = ¶m;
3217 wmt_params.status = NULL;
3218
3219 err = btusb_mtk_hci_wmt_sync(hdev, &wmt_params);
3220 if (err < 0) {
3221 bt_dev_err(hdev, "Failed to send wmt func ctrl (%d)", err);
3222 return err;
3223 }
3224
3225 ignore_func_on:
3226 /* Apply the low power environment setup */
3227 tci_sleep.mode = 0x5;
3228 tci_sleep.duration = cpu_to_le16(0x640);
3229 tci_sleep.host_duration = cpu_to_le16(0x640);
3230 tci_sleep.host_wakeup_pin = 0;
3231 tci_sleep.time_compensation = 0;
3232
3233 skb = __hci_cmd_sync(hdev, 0xfc7a, sizeof(tci_sleep), &tci_sleep,
3234 HCI_INIT_TIMEOUT);
3235 if (IS_ERR(skb)) {
3236 err = PTR_ERR(skb);
3237 bt_dev_err(hdev, "Failed to apply low power setting (%d)", err);
3238 return err;
3239 }
3240 kfree_skb(skb);
3241
3242 done:
3243 rettime = ktime_get();
3244 delta = ktime_sub(rettime, calltime);
3245 duration = (unsigned long long)ktime_to_ns(delta) >> 10;
3246
3247 bt_dev_info(hdev, "Device setup in %llu usecs", duration);
3248
3249 return 0;
3250 }
3251
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] Bluetooth: btusb: Fix MT7925 fail to send download patch command
2023-12-28 9:20 [PATCH] Bluetooth: btusb: Fix MT7925 fail to send download patch command Peter Tsao
2023-12-28 9:56 ` bluez.test.bot
2023-12-29 0:44 ` [PATCH] " kernel test robot
@ 2023-12-29 5:06 ` kernel test robot
2 siblings, 0 replies; 4+ messages in thread
From: kernel test robot @ 2023-12-29 5:06 UTC (permalink / raw)
To: Peter Tsao, Marcel Holtmann, Johan Hedberg, Luiz Von Dentz
Cc: oe-kbuild-all, Sean Wang, Deren Wu, Chris Lu, Aaron Hou,
Steve Lee, linux-bluetooth, linux-kernel, linux-mediatek,
Peter Tsao
Hi Peter,
kernel test robot noticed the following build errors:
[auto build test ERROR on bluetooth/master]
[also build test ERROR on bluetooth-next/master linus/master v6.7-rc7 next-20231222]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Peter-Tsao/Bluetooth-btusb-Fix-MT7925-fail-to-send-download-patch-command/20231228-172328
base: https://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth.git master
patch link: https://lore.kernel.org/r/20231228092014.23184-1-peter.tsao%40mediatek.com
patch subject: [PATCH] Bluetooth: btusb: Fix MT7925 fail to send download patch command
config: arm64-defconfig (https://download.01.org/0day-ci/archive/20231229/202312291253.5LoPimum-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231229/202312291253.5LoPimum-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202312291253.5LoPimum-lkp@intel.com/
All errors (new ones prefixed by >>):
drivers/bluetooth/btusb.c: In function 'btusb_mtk_setup':
>> drivers/bluetooth/btusb.c:3122:63: error: 'val' undeclared (first use in this function)
3122 | btusb_mtk_uhw_reg_read(data, MT7925_SLPPROT, &val);
| ^~~
drivers/bluetooth/btusb.c:3122:63: note: each undeclared identifier is reported only once for each function it appears in
vim +/val +3122 drivers/bluetooth/btusb.c
3068
3069 static int btusb_mtk_setup(struct hci_dev *hdev)
3070 {
3071 struct btusb_data *data = hci_get_drvdata(hdev);
3072 struct btmtk_hci_wmt_params wmt_params;
3073 ktime_t calltime, delta, rettime;
3074 struct btmtk_tci_sleep tci_sleep;
3075 unsigned long long duration;
3076 struct sk_buff *skb;
3077 const char *fwname;
3078 int err, status;
3079 u32 dev_id = 0;
3080 char fw_bin_name[64];
3081 u32 fw_version = 0;
3082 u8 param;
3083 struct btmediatek_data *mediatek;
3084
3085 calltime = ktime_get();
3086
3087 err = btusb_mtk_id_get(data, 0x80000008, &dev_id);
3088 if (err < 0) {
3089 bt_dev_err(hdev, "Failed to get device id (%d)", err);
3090 return err;
3091 }
3092
3093 if (!dev_id || dev_id != 0x7663) {
3094 err = btusb_mtk_id_get(data, 0x70010200, &dev_id);
3095 if (err < 0) {
3096 bt_dev_err(hdev, "Failed to get device id (%d)", err);
3097 return err;
3098 }
3099 err = btusb_mtk_id_get(data, 0x80021004, &fw_version);
3100 if (err < 0) {
3101 bt_dev_err(hdev, "Failed to get fw version (%d)", err);
3102 return err;
3103 }
3104 }
3105
3106 mediatek = hci_get_priv(hdev);
3107 mediatek->dev_id = dev_id;
3108 mediatek->reset_sync = btusb_mtk_reset;
3109
3110 err = btmtk_register_coredump(hdev, btusb_driver.name, fw_version);
3111 if (err < 0)
3112 bt_dev_err(hdev, "Failed to register coredump (%d)", err);
3113
3114 switch (dev_id) {
3115 case 0x7663:
3116 fwname = FIRMWARE_MT7663;
3117 break;
3118 case 0x7668:
3119 fwname = FIRMWARE_MT7668;
3120 break;
3121 case 0x7925:
> 3122 btusb_mtk_uhw_reg_read(data, MT7925_SLPPROT, &val);
3123 val |= SLPPROT_BYPASS;
3124 btusb_mtk_uhw_reg_write(data, MT7925_SLPPROT, val);
3125 fallthrough;
3126 case 0x7922:
3127 case 0x7961:
3128 if (dev_id == 0x7925)
3129 snprintf(fw_bin_name, sizeof(fw_bin_name),
3130 "mediatek/mt%04x/BT_RAM_CODE_MT%04x_1_%x_hdr.bin",
3131 dev_id & 0xffff, dev_id & 0xffff, (fw_version & 0xff) + 1);
3132 else
3133 snprintf(fw_bin_name, sizeof(fw_bin_name),
3134 "mediatek/BT_RAM_CODE_MT%04x_1_%x_hdr.bin",
3135 dev_id & 0xffff, (fw_version & 0xff) + 1);
3136
3137 err = btmtk_setup_firmware_79xx(hdev, fw_bin_name,
3138 btusb_mtk_hci_wmt_sync);
3139 if (err < 0) {
3140 bt_dev_err(hdev, "Failed to set up firmware (%d)", err);
3141 return err;
3142 }
3143
3144 /* It's Device EndPoint Reset Option Register */
3145 btusb_mtk_uhw_reg_write(data, MTK_EP_RST_OPT, MTK_EP_RST_IN_OUT_OPT);
3146
3147 /* Enable Bluetooth protocol */
3148 param = 1;
3149 wmt_params.op = BTMTK_WMT_FUNC_CTRL;
3150 wmt_params.flag = 0;
3151 wmt_params.dlen = sizeof(param);
3152 wmt_params.data = ¶m;
3153 wmt_params.status = NULL;
3154
3155 err = btusb_mtk_hci_wmt_sync(hdev, &wmt_params);
3156 if (err < 0) {
3157 bt_dev_err(hdev, "Failed to send wmt func ctrl (%d)", err);
3158 return err;
3159 }
3160
3161 hci_set_msft_opcode(hdev, 0xFD30);
3162 hci_set_aosp_capable(hdev);
3163 goto done;
3164 default:
3165 bt_dev_err(hdev, "Unsupported hardware variant (%08x)",
3166 dev_id);
3167 return -ENODEV;
3168 }
3169
3170 /* Query whether the firmware is already download */
3171 wmt_params.op = BTMTK_WMT_SEMAPHORE;
3172 wmt_params.flag = 1;
3173 wmt_params.dlen = 0;
3174 wmt_params.data = NULL;
3175 wmt_params.status = &status;
3176
3177 err = btusb_mtk_hci_wmt_sync(hdev, &wmt_params);
3178 if (err < 0) {
3179 bt_dev_err(hdev, "Failed to query firmware status (%d)", err);
3180 return err;
3181 }
3182
3183 if (status == BTMTK_WMT_PATCH_DONE) {
3184 bt_dev_info(hdev, "firmware already downloaded");
3185 goto ignore_setup_fw;
3186 }
3187
3188 /* Setup a firmware which the device definitely requires */
3189 err = btmtk_setup_firmware(hdev, fwname,
3190 btusb_mtk_hci_wmt_sync);
3191 if (err < 0)
3192 return err;
3193
3194 ignore_setup_fw:
3195 err = readx_poll_timeout(btusb_mtk_func_query, hdev, status,
3196 status < 0 || status != BTMTK_WMT_ON_PROGRESS,
3197 2000, 5000000);
3198 /* -ETIMEDOUT happens */
3199 if (err < 0)
3200 return err;
3201
3202 /* The other errors happen in btusb_mtk_func_query */
3203 if (status < 0)
3204 return status;
3205
3206 if (status == BTMTK_WMT_ON_DONE) {
3207 bt_dev_info(hdev, "function already on");
3208 goto ignore_func_on;
3209 }
3210
3211 /* Enable Bluetooth protocol */
3212 param = 1;
3213 wmt_params.op = BTMTK_WMT_FUNC_CTRL;
3214 wmt_params.flag = 0;
3215 wmt_params.dlen = sizeof(param);
3216 wmt_params.data = ¶m;
3217 wmt_params.status = NULL;
3218
3219 err = btusb_mtk_hci_wmt_sync(hdev, &wmt_params);
3220 if (err < 0) {
3221 bt_dev_err(hdev, "Failed to send wmt func ctrl (%d)", err);
3222 return err;
3223 }
3224
3225 ignore_func_on:
3226 /* Apply the low power environment setup */
3227 tci_sleep.mode = 0x5;
3228 tci_sleep.duration = cpu_to_le16(0x640);
3229 tci_sleep.host_duration = cpu_to_le16(0x640);
3230 tci_sleep.host_wakeup_pin = 0;
3231 tci_sleep.time_compensation = 0;
3232
3233 skb = __hci_cmd_sync(hdev, 0xfc7a, sizeof(tci_sleep), &tci_sleep,
3234 HCI_INIT_TIMEOUT);
3235 if (IS_ERR(skb)) {
3236 err = PTR_ERR(skb);
3237 bt_dev_err(hdev, "Failed to apply low power setting (%d)", err);
3238 return err;
3239 }
3240 kfree_skb(skb);
3241
3242 done:
3243 rettime = ktime_get();
3244 delta = ktime_sub(rettime, calltime);
3245 duration = (unsigned long long)ktime_to_ns(delta) >> 10;
3246
3247 bt_dev_info(hdev, "Device setup in %llu usecs", duration);
3248
3249 return 0;
3250 }
3251
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-12-29 5:07 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-12-28 9:20 [PATCH] Bluetooth: btusb: Fix MT7925 fail to send download patch command Peter Tsao
2023-12-28 9:56 ` bluez.test.bot
2023-12-29 0:44 ` [PATCH] " kernel test robot
2023-12-29 5:06 ` kernel test robot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox