Lines Matching refs:hdev
39 int btbcm_check_bdaddr(struct hci_dev *hdev) in btbcm_check_bdaddr() argument
44 skb = __hci_cmd_sync(hdev, HCI_OP_READ_BD_ADDR, 0, NULL, in btbcm_check_bdaddr()
49 hdev->name, err); in btbcm_check_bdaddr()
54 BT_ERR("%s: BCM: Device address length mismatch", hdev->name); in btbcm_check_bdaddr()
78 hdev->name, &bda->bdaddr); in btbcm_check_bdaddr()
79 set_bit(HCI_QUIRK_INVALID_BDADDR, &hdev->quirks); in btbcm_check_bdaddr()
88 int btbcm_set_bdaddr(struct hci_dev *hdev, const bdaddr_t *bdaddr) in btbcm_set_bdaddr() argument
93 skb = __hci_cmd_sync(hdev, 0xfc01, 6, bdaddr, HCI_INIT_TIMEOUT); in btbcm_set_bdaddr()
97 hdev->name, err); in btbcm_set_bdaddr()
106 int btbcm_patchram(struct hci_dev *hdev, const struct firmware *fw) in btbcm_patchram() argument
116 skb = __hci_cmd_sync(hdev, 0xfc2e, 0, NULL, HCI_INIT_TIMEOUT); in btbcm_patchram()
120 hdev->name, err); in btbcm_patchram()
139 BT_ERR("%s: BCM: Patch is corrupted", hdev->name); in btbcm_patchram()
150 skb = __hci_cmd_sync(hdev, opcode, cmd->plen, cmd_param, in btbcm_patchram()
155 hdev->name, opcode, err); in btbcm_patchram()
169 static int btbcm_reset(struct hci_dev *hdev) in btbcm_reset() argument
173 skb = __hci_cmd_sync(hdev, HCI_OP_RESET, 0, NULL, HCI_INIT_TIMEOUT); in btbcm_reset()
176 BT_ERR("%s: BCM: Reset failed (%d)", hdev->name, err); in btbcm_reset()
184 static struct sk_buff *btbcm_read_local_name(struct hci_dev *hdev) in btbcm_read_local_name() argument
188 skb = __hci_cmd_sync(hdev, HCI_OP_READ_LOCAL_NAME, 0, NULL, in btbcm_read_local_name()
192 hdev->name, PTR_ERR(skb)); in btbcm_read_local_name()
197 BT_ERR("%s: BCM: Local name length mismatch", hdev->name); in btbcm_read_local_name()
205 static struct sk_buff *btbcm_read_local_version(struct hci_dev *hdev) in btbcm_read_local_version() argument
209 skb = __hci_cmd_sync(hdev, HCI_OP_READ_LOCAL_VERSION, 0, NULL, in btbcm_read_local_version()
213 hdev->name, PTR_ERR(skb)); in btbcm_read_local_version()
218 BT_ERR("%s: BCM: Local version length mismatch", hdev->name); in btbcm_read_local_version()
226 static struct sk_buff *btbcm_read_verbose_config(struct hci_dev *hdev) in btbcm_read_verbose_config() argument
230 skb = __hci_cmd_sync(hdev, 0xfc79, 0, NULL, HCI_INIT_TIMEOUT); in btbcm_read_verbose_config()
233 hdev->name, PTR_ERR(skb)); in btbcm_read_verbose_config()
238 BT_ERR("%s: BCM: Verbose config length mismatch", hdev->name); in btbcm_read_verbose_config()
246 static struct sk_buff *btbcm_read_usb_product(struct hci_dev *hdev) in btbcm_read_usb_product() argument
250 skb = __hci_cmd_sync(hdev, 0xfc5a, 0, NULL, HCI_INIT_TIMEOUT); in btbcm_read_usb_product()
253 hdev->name, PTR_ERR(skb)); in btbcm_read_usb_product()
258 BT_ERR("%s: BCM: USB product length mismatch", hdev->name); in btbcm_read_usb_product()
277 int btbcm_initialize(struct hci_dev *hdev, char *fw_name, size_t len) in btbcm_initialize() argument
286 err = btbcm_reset(hdev); in btbcm_initialize()
291 skb = btbcm_read_local_version(hdev); in btbcm_initialize()
301 skb = btbcm_read_verbose_config(hdev); in btbcm_initialize()
305 BT_INFO("%s: BCM: chip id %u", hdev->name, skb->data[1]); in btbcm_initialize()
325 BT_INFO("%s: %s (%3.3u.%3.3u.%3.3u) build %4.4u", hdev->name, in btbcm_initialize()
333 int btbcm_finalize(struct hci_dev *hdev) in btbcm_finalize() argument
341 err = btbcm_reset(hdev); in btbcm_finalize()
346 skb = btbcm_read_local_version(hdev); in btbcm_finalize()
355 BT_INFO("%s: BCM (%3.3u.%3.3u.%3.3u) build %4.4u", hdev->name, in btbcm_finalize()
359 btbcm_check_bdaddr(hdev); in btbcm_finalize()
361 set_bit(HCI_QUIRK_STRICT_DUPLICATE_FILTER, &hdev->quirks); in btbcm_finalize()
384 int btbcm_setup_patchram(struct hci_dev *hdev) in btbcm_setup_patchram() argument
395 err = btbcm_reset(hdev); in btbcm_setup_patchram()
400 skb = btbcm_read_local_version(hdev); in btbcm_setup_patchram()
410 skb = btbcm_read_verbose_config(hdev); in btbcm_setup_patchram()
414 BT_INFO("%s: BCM: chip id %u", hdev->name, skb->data[1]); in btbcm_setup_patchram()
418 skb = btbcm_read_local_name(hdev); in btbcm_setup_patchram()
422 BT_INFO("%s: %s", hdev->name, (char *)(skb->data + 1)); in btbcm_setup_patchram()
441 skb = btbcm_read_usb_product(hdev); in btbcm_setup_patchram()
463 BT_INFO("%s: %s (%3.3u.%3.3u.%3.3u) build %4.4u", hdev->name, in btbcm_setup_patchram()
467 err = request_firmware(&fw, fw_name, &hdev->dev); in btbcm_setup_patchram()
469 BT_INFO("%s: BCM: Patch %s not found", hdev->name, fw_name); in btbcm_setup_patchram()
473 btbcm_patchram(hdev, fw); in btbcm_setup_patchram()
478 err = btbcm_reset(hdev); in btbcm_setup_patchram()
483 skb = btbcm_read_local_version(hdev); in btbcm_setup_patchram()
492 BT_INFO("%s: %s (%3.3u.%3.3u.%3.3u) build %4.4u", hdev->name, in btbcm_setup_patchram()
497 skb = btbcm_read_local_name(hdev); in btbcm_setup_patchram()
501 BT_INFO("%s: %s", hdev->name, (char *)(skb->data + 1)); in btbcm_setup_patchram()
504 btbcm_check_bdaddr(hdev); in btbcm_setup_patchram()
506 set_bit(HCI_QUIRK_STRICT_DUPLICATE_FILTER, &hdev->quirks); in btbcm_setup_patchram()
512 int btbcm_setup_apple(struct hci_dev *hdev) in btbcm_setup_apple() argument
518 err = btbcm_reset(hdev); in btbcm_setup_apple()
523 skb = btbcm_read_verbose_config(hdev); in btbcm_setup_apple()
525 BT_INFO("%s: BCM: chip id %u build %4.4u", hdev->name, in btbcm_setup_apple()
531 skb = btbcm_read_usb_product(hdev); in btbcm_setup_apple()
533 BT_INFO("%s: BCM: product %4.4x:%4.4x", hdev->name, in btbcm_setup_apple()
540 skb = btbcm_read_local_name(hdev); in btbcm_setup_apple()
542 BT_INFO("%s: %s", hdev->name, (char *)(skb->data + 1)); in btbcm_setup_apple()
546 set_bit(HCI_QUIRK_STRICT_DUPLICATE_FILTER, &hdev->quirks); in btbcm_setup_apple()