Lines Matching refs:btrtl_dev
251 struct btrtl_device_info *btrtl_dev,
281 if (btrtl_dev->fw_len < min_size)
284 fwptr = btrtl_dev->fw_data + btrtl_dev->fw_len - sizeof(extension_sig);
296 while (fwptr >= btrtl_dev->fw_data + (sizeof(*epatch_info) + 3)) {
335 if (btrtl_dev->ic_info->lmp_subver !=
339 btrtl_dev->ic_info->lmp_subver);
343 epatch_info = (struct rtl_epatch_header *)btrtl_dev->fw_data;
360 if (btrtl_dev->fw_len < min_size)
363 chip_id_base = btrtl_dev->fw_data + sizeof(struct rtl_epatch_header);
369 if (chip_id == btrtl_dev->rom_version + 1) {
380 btrtl_dev->rom_version);
386 if (btrtl_dev->fw_len < min_size)
397 memcpy(buf, btrtl_dev->fw_data + patch_offset, patch_length - 4);
495 struct btrtl_device_info *btrtl_dev)
497 if (btrtl_dev->fw_len < 8)
503 if (!memcmp(btrtl_dev->fw_data, RTL_EPATCH_SIGNATURE, 8)) {
508 return rtl_download_firmware(hdev, btrtl_dev->fw_data,
509 btrtl_dev->fw_len);
513 struct btrtl_device_info *btrtl_dev)
519 ret = rtlbt_parse_firmware(hdev, btrtl_dev, &fw_data);
523 if (btrtl_dev->cfg_len > 0) {
524 tbuff = kvzalloc(ret + btrtl_dev->cfg_len, GFP_KERNEL);
533 memcpy(tbuff + ret, btrtl_dev->cfg_data, btrtl_dev->cfg_len);
534 ret += btrtl_dev->cfg_len;
539 rtl_dev_info(hdev, "cfg_sz %d, total sz %d", btrtl_dev->cfg_len, ret);
548 void btrtl_free(struct btrtl_device_info *btrtl_dev)
550 kvfree(btrtl_dev->fw_data);
551 kvfree(btrtl_dev->cfg_data);
552 kfree(btrtl_dev);
559 struct btrtl_device_info *btrtl_dev;
567 btrtl_dev = kzalloc(sizeof(*btrtl_dev), GFP_KERNEL);
568 if (!btrtl_dev) {
589 btrtl_dev->ic_info = btrtl_match_ic(lmp_subver, hci_rev, hci_ver,
592 if (!btrtl_dev->ic_info) {
595 return btrtl_dev;
598 if (btrtl_dev->ic_info->has_rom_version) {
599 ret = rtl_read_rom_version(hdev, &btrtl_dev->rom_version);
604 btrtl_dev->fw_len = rtl_load_file(hdev, btrtl_dev->ic_info->fw_name,
605 &btrtl_dev->fw_data);
606 if (btrtl_dev->fw_len < 0) {
608 btrtl_dev->ic_info->fw_name);
609 ret = btrtl_dev->fw_len;
613 if (btrtl_dev->ic_info->cfg_name) {
616 btrtl_dev->ic_info->cfg_name, postfix);
619 btrtl_dev->ic_info->cfg_name);
621 btrtl_dev->cfg_len = rtl_load_file(hdev, cfg_name,
622 &btrtl_dev->cfg_data);
623 if (btrtl_dev->ic_info->config_needed &&
624 btrtl_dev->cfg_len <= 0) {
626 btrtl_dev->ic_info->cfg_name);
627 ret = btrtl_dev->cfg_len;
632 return btrtl_dev;
635 btrtl_free(btrtl_dev);
642 struct btrtl_device_info *btrtl_dev)
650 if (!btrtl_dev->ic_info) {
655 switch (btrtl_dev->ic_info->lmp_subver) {
658 return btrtl_setup_rtl8723a(hdev, btrtl_dev);
663 return btrtl_setup_rtl8723b(hdev, btrtl_dev);
673 struct btrtl_device_info *btrtl_dev;
676 btrtl_dev = btrtl_initialize(hdev, NULL);
677 if (IS_ERR(btrtl_dev))
678 return PTR_ERR(btrtl_dev);
680 ret = btrtl_download_firmware(hdev, btrtl_dev);
682 btrtl_free(btrtl_dev);
751 struct btrtl_device_info *btrtl_dev,
760 total_data_len = btrtl_dev->cfg_len - sizeof(*config);
766 config = (struct rtl_vendor_config *)btrtl_dev->cfg_data;