Re: [PATCH] Bluetooth: hci_uart: Support firmware download for Marvell

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Ganapathi,

[auto build test WARNING on bluetooth-next/master]
[also build test WARNING on v4.5-rc4 next-20160215]
[if your patch is applied to the wrong git tree, please drop us a note to help improving the system]

url:    https://github.com/0day-ci/linux/commits/Amitkumar-Karwar/Bluetooth-hci_uart-Support-firmware-download-for-Marvell/20160215-234258
base:   https://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git master
config: i386-allmodconfig (attached as .config)
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

All warnings (new ones prefixed by >>):

   In file included from drivers/bluetooth/hci_mrvl.c:41:0:
   drivers/bluetooth/hci_mrvl.c: In function 'mrvl_dnld_fw':
>> drivers/bluetooth/hci_mrvl.c:301:11: warning: format '%lu' expects argument of type 'long unsigned int', but argument 2 has type 'size_t {aka const unsigned int}' [-Wformat=]
      BT_INFO("Downloading FW (%lu bytes)\n", fw->size);
              ^
   include/net/bluetooth/bluetooth.h:133:35: note: in definition of macro 'BT_INFO'
    #define BT_INFO(fmt, ...) bt_info(fmt "\n", ##__VA_ARGS__)
                                      ^

coccinelle warnings: (new ones prefixed by >>)

>> drivers/bluetooth/hci_mrvl.c:411:9-10: WARNING: return of 0/1 in function 'mrvl_fw_loaded' with return type bool
--
>> drivers/bluetooth/hci_mrvl.c:536:20-27: ERROR: tty is NULL but dereferenced.

Please review and possibly fold the followup patch.

vim +301 drivers/bluetooth/hci_mrvl.c

   295		if (ret < 0) {
   296			BT_ERR("request_firmware() failed\n");
   297			ret = -1;
   298			goto done;
   299		}
   300		if (fw) {
 > 301			BT_INFO("Downloading FW (%lu bytes)\n", fw->size);
   302		} else {
   303			BT_ERR("No FW image found\n");
   304			ret = -1;
   305			goto done;
   306		}
   307	
   308		skb = bt_skb_alloc(MRVL_MAX_FW_BLOCK_SIZE, GFP_ATOMIC);
   309		if (!skb) {
   310			BT_ERR("cannot allocate memory for skb\n");
   311			ret = -1;
   312			goto done;
   313		}
   314	
   315		skb->dev = (void *)hdev;
   316		fw_data->last_ack = 0;
   317	
   318		do {
   319			if ((offset >= fw->size) || (fw_data->last_ack))
   320				break;
   321			tx_len = fw_data->next_len;
   322			if ((fw->size - offset) < tx_len)
   323				tx_len = fw->size - offset;
   324	
   325			memcpy(skb->data, &fw->data[offset], tx_len);
   326			skb_put(skb, tx_len);
   327			if (mrvl_send_data(hu, skb) != 0) {
   328				BT_ERR("fail to download firmware\n");
   329				ret = -1;
   330				goto done;
   331			}
   332			skb_push(skb, tx_len);
   333			skb_trim(skb, 0);
   334			offset += tx_len;
   335		} while (1);
   336	
   337		BT_INFO("downloaded %d byte firmware\n", offset);
   338	done:
   339		if (fw)
   340			release_firmware(fw);
   341	
   342		kfree(skb);
   343		BT_INFO("leave dnld_fw\n");
   344	
   345		return ret;
   346	}
   347	
   348	/* Get standard baud rate, given the speed */
   349	static unsigned int get_baud_rate(unsigned int speed)
   350	{
   351		switch (speed) {
   352		case 9600:
   353			return B9600;
   354		case 19200:
   355			return B19200;
   356		case 38400:
   357			return B38400;
   358		case 57600:
   359			return B57600;
   360		case 115200:
   361			return B115200;
   362		case 230400:
   363			return B230400;
   364		case 460800:
   365			return B460800;
   366		case 921600:
   367			return B921600;
   368		case 2000000:
   369			return B2000000;
   370		case 3000000:
   371			return B3000000;
   372		default:
   373			return -1;
   374		}
   375	}
   376	
   377	/* Set terminal properties */
   378	static int mrvl_set_termios(struct tty_struct *tty, unsigned int speed,
   379				    unsigned char flow_ctl)
   380	{
   381		struct ktermios old_termios = tty->termios;
   382		int baud;
   383	
   384		tty->termios.c_cflag &= ~CBAUD;
   385		baud = get_baud_rate(speed);
   386	
   387		if (baud == -1) {
   388			BT_ERR("Baud rate not supported\n");
   389			return -1;
   390		}
   391	
   392		tty->termios.c_cflag |= baud;
   393	
   394		if (flow_ctl)
   395			tty->termios.c_cflag |= CRTSCTS;
   396		else
   397			tty->termios.c_cflag &= ~CRTSCTS;
   398	
   399		tty->ops->set_termios(tty, &old_termios);
   400	
   401		return 0;
   402	}
   403	
   404	/* Check if firmware is already loaded */
   405	static bool mrvl_fw_loaded(struct hci_uart *hu)
   406	{
   407		struct mrvl_data *mrvl = hu->priv;
   408		struct fw_data *fw_data = mrvl->fwdata;
   409	
   410		if ((get_cts(hu->tty)) || (fw_data->fw_loaded))
 > 411			return 1;
   412		else
   413			return 0;
   414	}

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: Binary data


[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux