Lines Matching refs:hdev

37 int btbcm_check_bdaddr(struct hci_dev *hdev)  in btbcm_check_bdaddr()  argument
42 skb = __hci_cmd_sync(hdev, HCI_OP_READ_BD_ADDR, 0, NULL, in btbcm_check_bdaddr()
47 hdev->name, err); in btbcm_check_bdaddr()
52 BT_ERR("%s: BCM: Device address length mismatch", hdev->name); in btbcm_check_bdaddr()
60 hdev->name, bda->status); in btbcm_check_bdaddr()
70 hdev->name, &bda->bdaddr); in btbcm_check_bdaddr()
71 set_bit(HCI_QUIRK_INVALID_BDADDR, &hdev->quirks); in btbcm_check_bdaddr()
80 int btbcm_set_bdaddr(struct hci_dev *hdev, const bdaddr_t *bdaddr) in btbcm_set_bdaddr() argument
85 skb = __hci_cmd_sync(hdev, 0xfc01, 6, bdaddr, HCI_INIT_TIMEOUT); in btbcm_set_bdaddr()
89 hdev->name, err); in btbcm_set_bdaddr()
98 int btbcm_patchram(struct hci_dev *hdev, const char *firmware) in btbcm_patchram() argument
108 err = request_firmware(&fw, firmware, &hdev->dev); in btbcm_patchram()
110 BT_INFO("%s: BCM: Patch %s not found", hdev->name, firmware); in btbcm_patchram()
115 skb = __hci_cmd_sync(hdev, 0xfc2e, 0, NULL, HCI_INIT_TIMEOUT); in btbcm_patchram()
119 hdev->name, err); in btbcm_patchram()
138 BT_ERR("%s: BCM: Patch %s 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()
170 static int btbcm_reset(struct hci_dev *hdev) in btbcm_reset() argument
174 skb = __hci_cmd_sync(hdev, HCI_OP_RESET, 0, NULL, HCI_INIT_TIMEOUT); in btbcm_reset()
177 BT_ERR("%s: BCM: Reset failed (%d)", hdev->name, err); in btbcm_reset()
185 static struct sk_buff *btbcm_read_local_version(struct hci_dev *hdev) in btbcm_read_local_version() argument
189 skb = __hci_cmd_sync(hdev, HCI_OP_READ_LOCAL_VERSION, 0, NULL, in btbcm_read_local_version()
193 hdev->name, PTR_ERR(skb)); in btbcm_read_local_version()
198 BT_ERR("%s: BCM: Local version length mismatch", hdev->name); in btbcm_read_local_version()
206 static struct sk_buff *btbcm_read_verbose_config(struct hci_dev *hdev) in btbcm_read_verbose_config() argument
210 skb = __hci_cmd_sync(hdev, 0xfc79, 0, NULL, HCI_INIT_TIMEOUT); in btbcm_read_verbose_config()
213 hdev->name, PTR_ERR(skb)); in btbcm_read_verbose_config()
218 BT_ERR("%s: BCM: Verbose config length mismatch", hdev->name); in btbcm_read_verbose_config()
226 static struct sk_buff *btbcm_read_usb_product(struct hci_dev *hdev) in btbcm_read_usb_product() argument
230 skb = __hci_cmd_sync(hdev, 0xfc5a, 0, NULL, HCI_INIT_TIMEOUT); in btbcm_read_usb_product()
233 hdev->name, PTR_ERR(skb)); in btbcm_read_usb_product()
238 BT_ERR("%s: BCM: USB product length mismatch", hdev->name); in btbcm_read_usb_product()
271 int btbcm_setup_patchram(struct hci_dev *hdev) in btbcm_setup_patchram() argument
281 err = btbcm_reset(hdev); in btbcm_setup_patchram()
286 skb = btbcm_read_local_version(hdev); in btbcm_setup_patchram()
296 skb = btbcm_read_verbose_config(hdev); in btbcm_setup_patchram()
300 BT_INFO("%s: BCM: chip id %u", hdev->name, skb->data[1]); in btbcm_setup_patchram()
318 skb = btbcm_read_usb_product(hdev); in btbcm_setup_patchram()
340 BT_INFO("%s: %s (%3.3u.%3.3u.%3.3u) build %4.4u", hdev->name, in btbcm_setup_patchram()
344 err = btbcm_patchram(hdev, fw_name); in btbcm_setup_patchram()
349 err = btbcm_reset(hdev); in btbcm_setup_patchram()
354 skb = btbcm_read_local_version(hdev); in btbcm_setup_patchram()
363 BT_INFO("%s: %s (%3.3u.%3.3u.%3.3u) build %4.4u", hdev->name, in btbcm_setup_patchram()
367 btbcm_check_bdaddr(hdev); in btbcm_setup_patchram()
369 set_bit(HCI_QUIRK_STRICT_DUPLICATE_FILTER, &hdev->quirks); in btbcm_setup_patchram()
375 int btbcm_setup_apple(struct hci_dev *hdev) in btbcm_setup_apple() argument
380 skb = btbcm_read_verbose_config(hdev); in btbcm_setup_apple()
382 BT_INFO("%s: BCM: chip id %u build %4.4u", hdev->name, skb->data[1], in btbcm_setup_apple()
387 set_bit(HCI_QUIRK_STRICT_DUPLICATE_FILTER, &hdev->quirks); in btbcm_setup_apple()