aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/bluetooth/btusb.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2015-03-20 20:16:36 -0400
committerJohan Hedberg <johan.hedberg@intel.com>2015-03-21 02:03:15 -0400
commit15c32c5ff2d41dcf368e02607639843905b6db1a (patch)
tree2016cd93a4bd2a036cda92970cab2d0e4a3debfe /drivers/bluetooth/btusb.c
parentb55d1abf568cdf12d148ced8b82b217bff824885 (diff)
Bluetooth: Read Verbose Config Version Info for Broadcom devices
The Broadcom devices expose their chip id via Read Verbose Config Version Info command. While this information is not used at the moment, it might be useful for debugging purposes and so read it before patching the firmware. This makes it show up in dmesg and HCI traces taken for the system. Signed-off-by: Marcel Holtmann <marcel@holtmann.org> Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Diffstat (limited to 'drivers/bluetooth/btusb.c')
-rw-r--r--drivers/bluetooth/btusb.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index 708b6574d805..1521dad3d460 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -2458,6 +2458,25 @@ static int btusb_setup_bcm_patchram(struct hci_dev *hdev)
2458 subver = le16_to_cpu(ver->lmp_subver); 2458 subver = le16_to_cpu(ver->lmp_subver);
2459 kfree_skb(skb); 2459 kfree_skb(skb);
2460 2460
2461 /* Read Verbose Config Version Info */
2462 skb = __hci_cmd_sync(hdev, 0xfc79, 0, NULL, HCI_INIT_TIMEOUT);
2463 if (IS_ERR(skb)) {
2464 ret = PTR_ERR(skb);
2465 BT_ERR("%s: BCM: Read Verbose Version failed (%ld)",
2466 hdev->name, ret);
2467 return ret;
2468 }
2469
2470 if (skb->len != 7) {
2471 BT_ERR("%s: BCM: Read Verbose Version event length mismatch",
2472 hdev->name);
2473 kfree_skb(skb);
2474 return -EIO;
2475 }
2476
2477 BT_INFO("%s: BCM: chip id %u", hdev->name, skb->data[1]);
2478 kfree_skb(skb);
2479
2461 for (i = 0; bcm_subver_table[i].name; i++) { 2480 for (i = 0; bcm_subver_table[i].name; i++) {
2462 if (subver == bcm_subver_table[i].subver) { 2481 if (subver == bcm_subver_table[i].subver) {
2463 hw_name = bcm_subver_table[i].name; 2482 hw_name = bcm_subver_table[i].name;