mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-18 10:34:24 +08:00
Bluetooth: btbcm: Consolidate the controller information commands
The commands that read the basic vendor information about the Broadcom controller are duplicated for UART and USB devices. Combine them into a single function to reduce the code complexity. Signed-off-by: Marcel Holtmann <marcel@holtmann.org> Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
This commit is contained in:
parent
74183a1c50
commit
e76dc1dd00
@ -287,6 +287,37 @@ static struct sk_buff *btbcm_read_usb_product(struct hci_dev *hdev)
|
|||||||
return skb;
|
return skb;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int btbcm_read_info(struct hci_dev *hdev)
|
||||||
|
{
|
||||||
|
struct sk_buff *skb;
|
||||||
|
|
||||||
|
/* Read Verbose Config Version Info */
|
||||||
|
skb = btbcm_read_verbose_config(hdev);
|
||||||
|
if (IS_ERR(skb))
|
||||||
|
return PTR_ERR(skb);
|
||||||
|
|
||||||
|
BT_INFO("%s: BCM: chip id %u", hdev->name, skb->data[1]);
|
||||||
|
kfree_skb(skb);
|
||||||
|
|
||||||
|
/* Read Controller Features */
|
||||||
|
skb = btbcm_read_controller_features(hdev);
|
||||||
|
if (IS_ERR(skb))
|
||||||
|
return PTR_ERR(skb);
|
||||||
|
|
||||||
|
BT_INFO("%s: BCM: features 0x%2.2x", hdev->name, skb->data[1]);
|
||||||
|
kfree_skb(skb);
|
||||||
|
|
||||||
|
/* Read Local Name */
|
||||||
|
skb = btbcm_read_local_name(hdev);
|
||||||
|
if (IS_ERR(skb))
|
||||||
|
return PTR_ERR(skb);
|
||||||
|
|
||||||
|
BT_INFO("%s: %s", hdev->name, (char *)(skb->data + 1));
|
||||||
|
kfree_skb(skb);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static const struct {
|
static const struct {
|
||||||
u16 subver;
|
u16 subver;
|
||||||
const char *name;
|
const char *name;
|
||||||
@ -322,13 +353,10 @@ int btbcm_initialize(struct hci_dev *hdev, char *fw_name, size_t len)
|
|||||||
subver = le16_to_cpu(ver->lmp_subver);
|
subver = le16_to_cpu(ver->lmp_subver);
|
||||||
kfree_skb(skb);
|
kfree_skb(skb);
|
||||||
|
|
||||||
/* Read Verbose Config Version Info */
|
/* Read controller information */
|
||||||
skb = btbcm_read_verbose_config(hdev);
|
err = btbcm_read_info(hdev);
|
||||||
if (IS_ERR(skb))
|
if (err)
|
||||||
return PTR_ERR(skb);
|
return err;
|
||||||
|
|
||||||
BT_INFO("%s: BCM: chip id %u", hdev->name, skb->data[1]);
|
|
||||||
kfree_skb(skb);
|
|
||||||
|
|
||||||
switch ((rev & 0xf000) >> 12) {
|
switch ((rev & 0xf000) >> 12) {
|
||||||
case 0:
|
case 0:
|
||||||
@ -431,29 +459,10 @@ int btbcm_setup_patchram(struct hci_dev *hdev)
|
|||||||
subver = le16_to_cpu(ver->lmp_subver);
|
subver = le16_to_cpu(ver->lmp_subver);
|
||||||
kfree_skb(skb);
|
kfree_skb(skb);
|
||||||
|
|
||||||
/* Read Verbose Config Version Info */
|
/* Read controller information */
|
||||||
skb = btbcm_read_verbose_config(hdev);
|
err = btbcm_read_info(hdev);
|
||||||
if (IS_ERR(skb))
|
if (err)
|
||||||
return PTR_ERR(skb);
|
return err;
|
||||||
|
|
||||||
BT_INFO("%s: BCM: chip id %u", hdev->name, skb->data[1]);
|
|
||||||
kfree_skb(skb);
|
|
||||||
|
|
||||||
/* Read Controller Features */
|
|
||||||
skb = btbcm_read_controller_features(hdev);
|
|
||||||
if (IS_ERR(skb))
|
|
||||||
return PTR_ERR(skb);
|
|
||||||
|
|
||||||
BT_INFO("%s: BCM: features 0x%2.2x", hdev->name, skb->data[1]);
|
|
||||||
kfree_skb(skb);
|
|
||||||
|
|
||||||
/* Read Local Name */
|
|
||||||
skb = btbcm_read_local_name(hdev);
|
|
||||||
if (IS_ERR(skb))
|
|
||||||
return PTR_ERR(skb);
|
|
||||||
|
|
||||||
BT_INFO("%s: %s", hdev->name, (char *)(skb->data + 1));
|
|
||||||
kfree_skb(skb);
|
|
||||||
|
|
||||||
switch ((rev & 0xf000) >> 12) {
|
switch ((rev & 0xf000) >> 12) {
|
||||||
case 0:
|
case 0:
|
||||||
|
Loading…
Reference in New Issue
Block a user