CC: [email protected]
CC: Linux Memory Management List <[email protected]>
TO: Mark Chen <[email protected]>
CC: Marcel Holtmann <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git 
master
head:   6553715b6db5ff5d4898895dad1b2926cfe406cf
commit: fc342c4dc408754f50f19dc832152fbb4b73f1e6 [7132/11526] Bluetooth: btusb: 
Add protocol support for MediaTek MT7921U USB devices
:::::: branch date: 9 hours ago
:::::: commit date: 2 weeks ago
config: parisc-randconfig-m031-20210216 (attached as .config)
compiler: hppa-linux-gcc (GCC) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>
Reported-by: Dan Carpenter <[email protected]>

New smatch warnings:
drivers/bluetooth/btusb.c:3775 btusb_mtk_setup() error: uninitialized symbol 
'fw_version'.

Old smatch warnings:
drivers/bluetooth/btusb.c:2201 btusb_setup_intel() warn: inconsistent indenting

vim +/fw_version +3775 drivers/bluetooth/btusb.c

a1c49c434e15050 Sean Wang 2019-06-02  3728  
a1c49c434e15050 Sean Wang 2019-06-02  3729  static int btusb_mtk_setup(struct 
hci_dev *hdev)
a1c49c434e15050 Sean Wang 2019-06-02  3730  {
a1c49c434e15050 Sean Wang 2019-06-02  3731      struct btusb_data *data = 
hci_get_drvdata(hdev);
a1c49c434e15050 Sean Wang 2019-06-02  3732      struct btmtk_hci_wmt_params 
wmt_params;
a1c49c434e15050 Sean Wang 2019-06-02  3733      ktime_t calltime, delta, 
rettime;
a1c49c434e15050 Sean Wang 2019-06-02  3734      struct btmtk_tci_sleep 
tci_sleep;
a1c49c434e15050 Sean Wang 2019-06-02  3735      unsigned long long duration;
a1c49c434e15050 Sean Wang 2019-06-02  3736      struct sk_buff *skb;
a1c49c434e15050 Sean Wang 2019-06-02  3737      const char *fwname;
a1c49c434e15050 Sean Wang 2019-06-02  3738      int err, status;
a1c49c434e15050 Sean Wang 2019-06-02  3739      u32 dev_id;
fc342c4dc408754 Mark Chen 2021-02-02  3740      char fw_bin_name[64];
fc342c4dc408754 Mark Chen 2021-02-02  3741      u32 fw_version;
a1c49c434e15050 Sean Wang 2019-06-02  3742      u8 param;
a1c49c434e15050 Sean Wang 2019-06-02  3743  
a1c49c434e15050 Sean Wang 2019-06-02  3744      calltime = ktime_get();
a1c49c434e15050 Sean Wang 2019-06-02  3745  
48c13301e6baba5 Mark Chen 2021-02-02  3746      err = btusb_mtk_id_get(data, 
0x80000008, &dev_id);
a1c49c434e15050 Sean Wang 2019-06-02  3747      if (err < 0) {
a1c49c434e15050 Sean Wang 2019-06-02  3748              bt_dev_err(hdev, 
"Failed to get device id (%d)", err);
a1c49c434e15050 Sean Wang 2019-06-02  3749              return err;
a1c49c434e15050 Sean Wang 2019-06-02  3750      }
a1c49c434e15050 Sean Wang 2019-06-02  3751  
fc342c4dc408754 Mark Chen 2021-02-02  3752      if (!dev_id) {
fc342c4dc408754 Mark Chen 2021-02-02  3753              err = 
btusb_mtk_id_get(data, 0x70010200, &dev_id);
fc342c4dc408754 Mark Chen 2021-02-02  3754              if (err < 0) {
fc342c4dc408754 Mark Chen 2021-02-02  3755                      
bt_dev_err(hdev, "Failed to get device id (%d)", err);
fc342c4dc408754 Mark Chen 2021-02-02  3756                      return err;
fc342c4dc408754 Mark Chen 2021-02-02  3757              }
fc342c4dc408754 Mark Chen 2021-02-02  3758              err = 
btusb_mtk_id_get(data, 0x80021004, &fw_version);
fc342c4dc408754 Mark Chen 2021-02-02  3759              if (err < 0) {
fc342c4dc408754 Mark Chen 2021-02-02  3760                      
bt_dev_err(hdev, "Failed to get fw version (%d)", err);
fc342c4dc408754 Mark Chen 2021-02-02  3761                      return err;
fc342c4dc408754 Mark Chen 2021-02-02  3762              }
fc342c4dc408754 Mark Chen 2021-02-02  3763      }
fc342c4dc408754 Mark Chen 2021-02-02  3764  
a1c49c434e15050 Sean Wang 2019-06-02  3765      switch (dev_id) {
9ce67c3235be71e Sean Wang 2019-06-02  3766      case 0x7663:
9ce67c3235be71e Sean Wang 2019-06-02  3767              fwname = 
FIRMWARE_MT7663;
9ce67c3235be71e Sean Wang 2019-06-02  3768              break;
a1c49c434e15050 Sean Wang 2019-06-02  3769      case 0x7668:
a1c49c434e15050 Sean Wang 2019-06-02  3770              fwname = 
FIRMWARE_MT7668;
a1c49c434e15050 Sean Wang 2019-06-02  3771              break;
fc342c4dc408754 Mark Chen 2021-02-02  3772      case 0x7961:
fc342c4dc408754 Mark Chen 2021-02-02  3773              snprintf(fw_bin_name, 
sizeof(fw_bin_name),
fc342c4dc408754 Mark Chen 2021-02-02  3774                      
"mediatek/BT_RAM_CODE_MT%04x_1_%x_hdr.bin",
fc342c4dc408754 Mark Chen 2021-02-02 @3775                       dev_id & 
0xffff, (fw_version & 0xff) + 1);
fc342c4dc408754 Mark Chen 2021-02-02  3776              err = 
btusb_mtk_setup_firmware_79xx(hdev, fw_bin_name);
fc342c4dc408754 Mark Chen 2021-02-02  3777  
fc342c4dc408754 Mark Chen 2021-02-02  3778              /* Enable Bluetooth 
protocol */
fc342c4dc408754 Mark Chen 2021-02-02  3779              param = 1;
fc342c4dc408754 Mark Chen 2021-02-02  3780              wmt_params.op = 
BTMTK_WMT_FUNC_CTRL;
fc342c4dc408754 Mark Chen 2021-02-02  3781              wmt_params.flag = 0;
fc342c4dc408754 Mark Chen 2021-02-02  3782              wmt_params.dlen = 
sizeof(param);
fc342c4dc408754 Mark Chen 2021-02-02  3783              wmt_params.data = 
&param;
fc342c4dc408754 Mark Chen 2021-02-02  3784              wmt_params.status = 
NULL;
fc342c4dc408754 Mark Chen 2021-02-02  3785  
fc342c4dc408754 Mark Chen 2021-02-02  3786              err = 
btusb_mtk_hci_wmt_sync(hdev, &wmt_params);
fc342c4dc408754 Mark Chen 2021-02-02  3787              if (err < 0) {
fc342c4dc408754 Mark Chen 2021-02-02  3788                      
bt_dev_err(hdev, "Failed to send wmt func ctrl (%d)", err);
fc342c4dc408754 Mark Chen 2021-02-02  3789                      return err;
fc342c4dc408754 Mark Chen 2021-02-02  3790              }
fc342c4dc408754 Mark Chen 2021-02-02  3791              goto done;
a1c49c434e15050 Sean Wang 2019-06-02  3792      default:
a1c49c434e15050 Sean Wang 2019-06-02  3793              bt_dev_err(hdev, 
"Unsupported support hardware variant (%08x)",
a1c49c434e15050 Sean Wang 2019-06-02  3794                         dev_id);
a1c49c434e15050 Sean Wang 2019-06-02  3795              return -ENODEV;
a1c49c434e15050 Sean Wang 2019-06-02  3796      }
a1c49c434e15050 Sean Wang 2019-06-02  3797  
a1c49c434e15050 Sean Wang 2019-06-02  3798      /* Query whether the firmware 
is already download */
a1c49c434e15050 Sean Wang 2019-06-02  3799      wmt_params.op = 
BTMTK_WMT_SEMAPHORE;
a1c49c434e15050 Sean Wang 2019-06-02  3800      wmt_params.flag = 1;
a1c49c434e15050 Sean Wang 2019-06-02  3801      wmt_params.dlen = 0;
a1c49c434e15050 Sean Wang 2019-06-02  3802      wmt_params.data = NULL;
a1c49c434e15050 Sean Wang 2019-06-02  3803      wmt_params.status = &status;
a1c49c434e15050 Sean Wang 2019-06-02  3804  
a1c49c434e15050 Sean Wang 2019-06-02  3805      err = 
btusb_mtk_hci_wmt_sync(hdev, &wmt_params);
a1c49c434e15050 Sean Wang 2019-06-02  3806      if (err < 0) {
a1c49c434e15050 Sean Wang 2019-06-02  3807              bt_dev_err(hdev, 
"Failed to query firmware status (%d)", err);
a1c49c434e15050 Sean Wang 2019-06-02  3808              return err;
a1c49c434e15050 Sean Wang 2019-06-02  3809      }
a1c49c434e15050 Sean Wang 2019-06-02  3810  
a1c49c434e15050 Sean Wang 2019-06-02  3811      if (status == 
BTMTK_WMT_PATCH_DONE) {
a1c49c434e15050 Sean Wang 2019-06-02  3812              bt_dev_info(hdev, 
"firmware already downloaded");
a1c49c434e15050 Sean Wang 2019-06-02  3813              goto ignore_setup_fw;
a1c49c434e15050 Sean Wang 2019-06-02  3814      }
a1c49c434e15050 Sean Wang 2019-06-02  3815  
a1c49c434e15050 Sean Wang 2019-06-02  3816      /* Setup a firmware which the 
device definitely requires */
a1c49c434e15050 Sean Wang 2019-06-02  3817      err = 
btusb_mtk_setup_firmware(hdev, fwname);
a1c49c434e15050 Sean Wang 2019-06-02  3818      if (err < 0)
a1c49c434e15050 Sean Wang 2019-06-02  3819              return err;
a1c49c434e15050 Sean Wang 2019-06-02  3820  
a1c49c434e15050 Sean Wang 2019-06-02  3821  ignore_setup_fw:
a1c49c434e15050 Sean Wang 2019-06-02  3822      err = 
readx_poll_timeout(btusb_mtk_func_query, hdev, status,
a1c49c434e15050 Sean Wang 2019-06-02  3823                               status 
< 0 || status != BTMTK_WMT_ON_PROGRESS,
a1c49c434e15050 Sean Wang 2019-06-02  3824                               2000, 
5000000);
a1c49c434e15050 Sean Wang 2019-06-02  3825      /* -ETIMEDOUT happens */
a1c49c434e15050 Sean Wang 2019-06-02  3826      if (err < 0)
a1c49c434e15050 Sean Wang 2019-06-02  3827              return err;
a1c49c434e15050 Sean Wang 2019-06-02  3828  
a1c49c434e15050 Sean Wang 2019-06-02  3829      /* The other errors happen in 
btusb_mtk_func_query */
a1c49c434e15050 Sean Wang 2019-06-02  3830      if (status < 0)
a1c49c434e15050 Sean Wang 2019-06-02  3831              return status;
a1c49c434e15050 Sean Wang 2019-06-02  3832  
a1c49c434e15050 Sean Wang 2019-06-02  3833      if (status == 
BTMTK_WMT_ON_DONE) {
a1c49c434e15050 Sean Wang 2019-06-02  3834              bt_dev_info(hdev, 
"function already on");
a1c49c434e15050 Sean Wang 2019-06-02  3835              goto ignore_func_on;
a1c49c434e15050 Sean Wang 2019-06-02  3836      }
a1c49c434e15050 Sean Wang 2019-06-02  3837  
a1c49c434e15050 Sean Wang 2019-06-02  3838      /* Enable Bluetooth protocol */
a1c49c434e15050 Sean Wang 2019-06-02  3839      param = 1;
a1c49c434e15050 Sean Wang 2019-06-02  3840      wmt_params.op = 
BTMTK_WMT_FUNC_CTRL;
a1c49c434e15050 Sean Wang 2019-06-02  3841      wmt_params.flag = 0;
a1c49c434e15050 Sean Wang 2019-06-02  3842      wmt_params.dlen = sizeof(param);
a1c49c434e15050 Sean Wang 2019-06-02  3843      wmt_params.data = &param;
a1c49c434e15050 Sean Wang 2019-06-02  3844      wmt_params.status = NULL;
a1c49c434e15050 Sean Wang 2019-06-02  3845  
a1c49c434e15050 Sean Wang 2019-06-02  3846      err = 
btusb_mtk_hci_wmt_sync(hdev, &wmt_params);
a1c49c434e15050 Sean Wang 2019-06-02  3847      if (err < 0) {
a1c49c434e15050 Sean Wang 2019-06-02  3848              bt_dev_err(hdev, 
"Failed to send wmt func ctrl (%d)", err);
a1c49c434e15050 Sean Wang 2019-06-02  3849              return err;
a1c49c434e15050 Sean Wang 2019-06-02  3850      }
a1c49c434e15050 Sean Wang 2019-06-02  3851  
a1c49c434e15050 Sean Wang 2019-06-02  3852  ignore_func_on:
a1c49c434e15050 Sean Wang 2019-06-02  3853      /* Apply the low power 
environment setup */
a1c49c434e15050 Sean Wang 2019-06-02  3854      tci_sleep.mode = 0x5;
a1c49c434e15050 Sean Wang 2019-06-02  3855      tci_sleep.duration = 
cpu_to_le16(0x640);
a1c49c434e15050 Sean Wang 2019-06-02  3856      tci_sleep.host_duration = 
cpu_to_le16(0x640);
a1c49c434e15050 Sean Wang 2019-06-02  3857      tci_sleep.host_wakeup_pin = 0;
a1c49c434e15050 Sean Wang 2019-06-02  3858      tci_sleep.time_compensation = 0;
a1c49c434e15050 Sean Wang 2019-06-02  3859  
a1c49c434e15050 Sean Wang 2019-06-02  3860      skb = __hci_cmd_sync(hdev, 
0xfc7a, sizeof(tci_sleep), &tci_sleep,
a1c49c434e15050 Sean Wang 2019-06-02  3861                           
HCI_INIT_TIMEOUT);
a1c49c434e15050 Sean Wang 2019-06-02  3862      if (IS_ERR(skb)) {
a1c49c434e15050 Sean Wang 2019-06-02  3863              err = PTR_ERR(skb);
a1c49c434e15050 Sean Wang 2019-06-02  3864              bt_dev_err(hdev, 
"Failed to apply low power setting (%d)", err);
a1c49c434e15050 Sean Wang 2019-06-02  3865              return err;
a1c49c434e15050 Sean Wang 2019-06-02  3866      }
a1c49c434e15050 Sean Wang 2019-06-02  3867      kfree_skb(skb);
a1c49c434e15050 Sean Wang 2019-06-02  3868  
fc342c4dc408754 Mark Chen 2021-02-02  3869  done:
a1c49c434e15050 Sean Wang 2019-06-02  3870      rettime = ktime_get();
a1c49c434e15050 Sean Wang 2019-06-02  3871      delta = ktime_sub(rettime, 
calltime);
a1c49c434e15050 Sean Wang 2019-06-02  3872      duration = (unsigned long 
long)ktime_to_ns(delta) >> 10;
a1c49c434e15050 Sean Wang 2019-06-02  3873  
a1c49c434e15050 Sean Wang 2019-06-02  3874      bt_dev_info(hdev, "Device setup 
in %llu usecs", duration);
a1c49c434e15050 Sean Wang 2019-06-02  3875  
a1c49c434e15050 Sean Wang 2019-06-02  3876      return 0;
a1c49c434e15050 Sean Wang 2019-06-02  3877  }
a1c49c434e15050 Sean Wang 2019-06-02  3878  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to