Message ID | 20231228092014.23184-1-peter.tsao@mediatek.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Bluetooth: btusb: Fix MT7925 fail to send download patch command | expand |
Context | Check | Description |
---|---|---|
tedd_an/pre-ci_am | success | Success |
tedd_an/CheckPatch | success | CheckPatch PASS |
tedd_an/GitLint | success | Gitlint PASS |
tedd_an/SubjectPrefix | success | Gitlint PASS |
tedd_an/BuildKernel | fail | BuildKernel: FAIL: 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 |
tedd_an/CheckAllWarning | fail | CheckAllWarning: FAIL: 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 |
tedd_an/CheckSparse | fail | CheckSparse: FAIL: 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 |
tedd_an/CheckSmatch | fail | CheckSparse: FAIL: 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 |
tedd_an/BuildKernel32 | fail | BuildKernel32: FAIL: 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 |
tedd_an/TestRunnerSetup | success | TestRunnerSetup PASS |
tedd_an/TestRunner_l2cap-tester | success | TestRunner PASS |
tedd_an/TestRunner_iso-tester | success | TestRunner PASS |
tedd_an/TestRunner_bnep-tester | success | TestRunner PASS |
tedd_an/TestRunner_mgmt-tester | success | TestRunner PASS |
tedd_an/TestRunner_rfcomm-tester | success | TestRunner PASS |
tedd_an/TestRunner_sco-tester | success | TestRunner PASS |
tedd_an/TestRunner_ioctl-tester | success | TestRunner PASS |
tedd_an/TestRunner_mesh-tester | success | TestRunner PASS |
tedd_an/TestRunner_smp-tester | success | TestRunner PASS |
tedd_an/TestRunner_userchan-tester | success | TestRunner PASS |
tedd_an/IncrementalBuild | fail | 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 |
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
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
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
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",
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(-)